Hallo Florian!

Wie in der PM besprochen hab ich das ganze mal für den 4433 umgeschrieben.

Auf Richtigkeit kann ich leider keine Garantie geben, da ich schon lang nix mehr in Assembler programmiert habe und ich es auch nicht getestet habe. Ich werd aber gleich mal das Programm im AVR Studio ausprobieren und schauen, ob es funktioniert oder nicht ...

So, der Code:
Code:
.include "4433def.inc"
.def temp = r16
.def ad_value = r17

.org 0x000
rjmp init		; Initialisierung / RESET
reti			; IRQ0
reti			; IRQ1
reti			; Timer1 Capture
reti			; Timer1 Compare
reti			; Timer1 Overflow
reti			; Timer0 Overflow
reti			; SPI Complete
reti			; UART Rx
reti			; UART Data empty
reti			; UART Tx
rjmp adc_int		; ADC Conversion Complete
reti			; EEPROM ready
reti			; Analog Comparator


; ################################
; Initialisierung
; ################################

init:
; ################################
; Ports initialisieren (alle PINS INPUT - interne Pullups aktiviert)
; ################################

ldi temp, 0x00
out DDRB, temp

ldi temp, 0xFF
out PORTB, temp

ldi temp, 0x00
out DDRC, temp

ldi temp, 0xFF
out PORTC, temp

ldi temp, 0x00
out DDRD, temp

ldi temp, 0xFF
out PORTD, temp

; ################################
; Stack initialisieren
; ################################

ldi temp, RAMEND
out SP, temp

; ################################
; ADC initialisieren
; ################################

; Multiplexer setzen - PC0 ist analoger Eingang
cbi ADMUX, MUX0
cbi ADMUX, MUX1
cbi ADMUX, MUX2

; ADC Interrupt anschalten
sbi ADCSR, ADIE

; Prescaler auf 16 setzen
cbi ADCSR, ADPS0
cbi ADCSR, ADPS1
sbi ADCSR, ADPS2

; AD Converter anschalten
sbi ADCSR, ADEN

; Erste Wandlung auslösen
sbi ADCSR, ADSC

; ################################
; Hauptprogramm
; ################################

main:
; Hier könnte nun der ad_value umgerechnet werden und über
; UART oder LCD ausgegeben werden
rjmp main


; ################################
; ADC Interrupt
; ################################

adc_int:

; gewandelte Werte einlesen 
in ZL, ADCL
in ZH, ADCH

; zweimal nach rechts rotieren (um die beiden LSB 
; in das Low Register zu kriegen) -> 8 bit Wandlung
ror Z
ror Z

; 8 bit Wert in ad_value schreiben
mov ad_value, ZL

; neue Wandlung starten
sbi ADCSR, ADSC

reti
Viele Grüße
Flite
EDIT: Ach ja, wenn du irgendwleche Fragen hast: nur zu !!