C
Christian Sander
Guest
Liebe Newsgroup,
ich verzweifele bei meinen ersten Gehversuchen mit dem AVR. Ich möchte
einfach nur
den Ausgang PD5 bei jedem Programmdurchlauf invertieren. Leider läuft das
Programm
gar nicht. Ich habe das kurze Programm eingefügt. Sieht jemand den
Fehler???
Grüße aus München,
Christian
..INCLUDE "8515def.inc"
..def temp = r16
..equ LED = PA0
..equ WDOG = PD5
..dseg
..org 0x60
temp_wdog: .byte 1 ;
; Prgrammbeginn, Interrupt-Vektoren
; ---------------------------------
;
..cseg
.. org 0x0000
rjmp main ;Programmstart
main: rcall Init
main_loop: rcall Watchdog
cbi PORTA, LED
rjmp main_loop
Init: ldi temp, 0b00100000 ;alle Ausgänge auf Ausgang Schalten (PORTD)
out DDRD,temp
ldi temp, 0b00000001 ;alle Ausgänge auf Ausgang Schalten (PORTA)
out DDRA,temp
ret
Watchdog: lds R18,temp_wdog
bst R18,1 ;Bit 1 aus Register in T-Flag schreiben
brtc Watchdog_clr ;Springe wenn 0
ldi R18,0x00
sts temp_wdog,R18 ;wenn nicht 0 dann lade 0
sbi PORTD, WDOG ;Ausgang triggern
ret
Watchdog_clr: cbi PORTD, WDOG ;Ausgang triggern
ldi R18,0xFF
sts temp_wdog,R18 ;wenn nicht 0 dann lade 0
ret
ich verzweifele bei meinen ersten Gehversuchen mit dem AVR. Ich möchte
einfach nur
den Ausgang PD5 bei jedem Programmdurchlauf invertieren. Leider läuft das
Programm
gar nicht. Ich habe das kurze Programm eingefügt. Sieht jemand den
Fehler???
Grüße aus München,
Christian
..INCLUDE "8515def.inc"
..def temp = r16
..equ LED = PA0
..equ WDOG = PD5
..dseg
..org 0x60
temp_wdog: .byte 1 ;
; Prgrammbeginn, Interrupt-Vektoren
; ---------------------------------
;
..cseg
.. org 0x0000
rjmp main ;Programmstart
main: rcall Init
main_loop: rcall Watchdog
cbi PORTA, LED
rjmp main_loop
Init: ldi temp, 0b00100000 ;alle Ausgänge auf Ausgang Schalten (PORTD)
out DDRD,temp
ldi temp, 0b00000001 ;alle Ausgänge auf Ausgang Schalten (PORTA)
out DDRA,temp
ret
Watchdog: lds R18,temp_wdog
bst R18,1 ;Bit 1 aus Register in T-Flag schreiben
brtc Watchdog_clr ;Springe wenn 0
ldi R18,0x00
sts temp_wdog,R18 ;wenn nicht 0 dann lade 0
sbi PORTD, WDOG ;Ausgang triggern
ret
Watchdog_clr: cbi PORTD, WDOG ;Ausgang triggern
ldi R18,0xFF
sts temp_wdog,R18 ;wenn nicht 0 dann lade 0
ret