Gast
#1564742
Hallo Forengemeinde! Ich verzweifle gerade an einem eigentlich recht einfachen Quelltext, der im Controller einfach nicht das macht, was er soll! Ich möchte einfach die Batteriespannung meines Systems messen und abhängig von der Höhe Ausgänge ein- bzw. ausschalten. Wenn ich das im Simulator probiere funktioniert es auch, aber wenn ichs auf den Controller übertrage dann nicht. Es scheint mir, als wäre mit der Initialisierung des ADC was nicht in Ordnung - aber was? .include "C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn26def.inc" ldi r16, ramend out SP, r16 ;Ein-/Ausgänge definieren ldi r16, 255 out DDRB, r16 ;PortB als Ausgang sbi DDRA, 7 ;PortA, Bit 7 als Ausgang sbi DDRA, 2 ;PortA, Bit 2 als Ausgang ;_____________________________________Definitionen .def temp = r16 .def T = r17 .def U_BATTL = r18 .def U_BATTH = r19 .equ LEDs = PortB .equ rot = 3 ;______________________________________Initialisierung ;ADC initialisieren ldi temp, 0b00100000 out ADMUX, temp ldi temp, 0b01010000 out ADCSR, temp sbi ADCSR, ADEN ;______________________________________Hauptprogramm rcall Leuchte_einschalten ;rcall Pause_1s Start: sbi ADCSR, ADSC wait_for_ADC: sbic ADCSR, ADSC rjmp wait_for_ADC in U_BATTL, ADCL in U_BATTH, ADCH nop cpi U_BattH, 92 brlo Unter1_8V nop cpi U_BattH, 97 brlo Unter1_9V nop cpi U_BattH, 107 brlo Unter2_1V nop cpi U_BattH, 112 brlo Unter2_2V nop ;rcall Leuchte_einschalten rjmp fertig Unter1_8V: cbi PortA, 7 cbi PortB, 6 cbi PortB, 5 cbi PortB, 4 sbi PortB, 3 sbi PortB, 2 cbi PortB, 1 cbi PortB, 0 rjmp fertig Unter1_9V: cbi PortA, 7 cbi PortB, 6 cbi PortB, 5 sbi PortB, 4 sbi PortB, 3 sbi PortB, 2 sbi PortB, 1 cbi PortB, 0 rjmp fertig Unter2_1V: cbi PortA, 7 cbi PortB, 6 sbi PortB, 5 sbi PortB, 4 sbi PortB, 3 sbi PortB, 2 sbi PortB, 1 sbi PortB, 0 rjmp fertig Unter2_2V: cbi PortA, 7 sbi PortB, 6 sbi PortB, 5 sbi PortB, 4 sbi PortB, 3 sbi PortB, 2 sbi PortB, 1 sbi PortB, 0 rjmp fertig fertig: ;rcall Pause_100ms rjmp Start ;_____________________________________Unterprogramme Pause_1ms: ;1ms bei 1MHz Frequenz push temp ldi temp, 199 Pause_1ms_weiter: dec temp cpi temp, 0 breq Pause_1ms_Ende rjmp Pause_1ms_weiter Pause_1ms_Ende: pop temp nop ret Pause_10ms: rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms rcall Pause_1ms ret Pause_100ms: rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms rcall Pause_10ms ret Pause_1s: rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms rcall Pause_100ms ret ;Leuchte einschalten Leuchte_einschalten: ldi r16 , 255 out PortB, r16 ;Leuchte einschalten sbi PortA, 7 ;Leuchte einschalten ret ;Leuchte ausschalten Leuchte_ausschalten: ldi r16 , 0 out PortB, r16 ;Leuchte einschalten cbi PortA, 7 ;Leuchte einschalten Schon jetzt besten Dank und viele Grüße Michael