Hallo Leute Ich habe folgender Code geschrieben (siehe unten) und er funktioniert nicht. Habe schon 2 Tag rumgetüftelt und es geht einfach nicnt. Ich wil eine Analoge Spannung bei Port 4 einlesen und dann auf PortB ausgeben. Ist nur einen Test. Mir ist auch klar das der Controller auch zwischen verschieden Werten umher schaltet. Aber die höchsten bbit sollten ja stehen bleiebn. Aber es geht nichts! Warum ? Kann mir jemand auf die Sprünge helfen ? Besten Dank .include "tn13def.inc" begin: rjmp main ; 1 Reset Handler reti ; 2 INT0 IRQ0 Handler reti ; 3 PCINT0 Handler reti ; 4 TIM0_OVF Timer0 Overflow Handler reti ; 5 EE_RDY EEPROM Ready Handler reti ; 6 ANA_COMP Analog Comparator Handler reti ; 7 TIM0_COMPA Timer0 Compare A Handler reti ; 8 TIM0_COMPB Timer0 Compare B Handler reti ; 9 WDT Watchdog Time-out Handler reti ;10 ADC Conversion Complete Handler ;----------------------------------------------------------------------- - ; Initialisierungen ;----------------------------------------------------------------------- - main: ;--- Stack Initialisierung --- ldi r16,low(RAMEND) out SPL,r16 ; Ports initialisieren sbi DDRB,0 ; PORTB0 auf Ausgang sbi DDRB,1 ; PORTB1 auf Ausgang sbi DDRB,2 ; PORTB2 auf Ausgang sbi DDRB,3 ; PORTB3 auf Ausgang sbi DDRB,4 ; PORTB4 auf Ausgang ; ADC initialisieren ldi r16,0b00100010; Port, Referenzspannung und Auflösung out ADMUX,r16 ldi r16,0b10000100 ; Modus, Interrupt und Start out ADCSRA,r16 ;----------------------------------------------------------------------- - ; Hauptprogramm-Schleife ;----------------------------------------------------------------------- - mainloop: wdr rjmp getValueADCandWait out PORTB,R16 rjmp mainloop ; Sprung zum Beginn der Hauptprogrammschleife ;-------------------------------------------------------------------- ; getValueADCandWait - Digitalisiert einen Analogwert und wartet auf das Ergebnis ; PA: r16 = Ergebnis ;-------------------------------------------------------------------- getValueADCandWait: sbi ADCSRA,6 ; Start ADC getValueADCandWait1: sbic ADCSRA,6 ; Test ob fertig rjmp getValueADCandWait1 ; wenn nicht fertig ldi r16,ADCH ; Einlesen des Analogwertes ret
rcall anstatt rjmp beim ersten sprung im mainloop. du benutzt ja auch ret
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.