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