;+---------------------------------------------------------------------- ;| Titel : myAVR Beispiel Blinklicht für den ATmega8 ;+---------------------------------------------------------------------- ;| Funktion : Ein Register wird inkrementiert und verzögert an ;| : PORTD ausgegeben. ;| Schaltung : PORTD2=Summer, PORTD3=LED1, PORTD4=LED2, PORTD5=LED3 ;+---------------------------------------------------------------------- ;| Prozessor : ATmega8 ;| Takt : 3,6864 MHz ;| Sprache : Assembler ;| Datum : 02.04.2004 ;| Version : 1.4 ;| Autor : Dipl. Ing. Päd. Alexander Huwaldt ;+---------------------------------------------------------------------- .include "AVR.H" ;------------------------------------------------------------------------ ;Reset and Interrupt vector ;VNr. Beschreibung rjmp main ;1 POWER ON RESET reti ;2 Int0-Interrupt reti ;3 Int1-Interrupt reti ;4 TC2 Compare Match reti ;5 TC2 Overflow reti ;6 TC1 Capture reti ;7 TC1 Compare Match A reti ;8 TC1 Compare Match B reti ;9 TC1 Overflow reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready reti ;17 Analog Comparator reti ;18 TWI (I²C) Serial Interface reti ;19 Store Program Memory Ready ;------------------------------------------------------------------------ ;Start, Power ON, Reset main: ldi r16,lo8(RAMEND) out SPL,r16 ldi r16,hi8(RAMEND) out SPH,r16 ;Init Stackpointer ;.............................. ldi r16,0b11111111 out DDRB,r16 ;.............................. cbi DDRD,2 ; POrt D.2 = Eingang sbi PORTD,2 ;ldi r16,0b00000100 ;out PORTD,r16 ; Zähler Initialisieren ldi r16,0b00000000 ldi r17,0b00000000 ldi r18,0b00000001 ;................................ cbi DDRD,3 sbi PORTD,3 ; ldi r16,0b00001000 ; out PORTD,r16 ;................................ ; Zähler Initialisieren ldi r20,0b11111111 ldi r21,0b11111111 ldi r19,0b10000000 ;------------------------------------------------------------------------ mainloop: getKey: ; Eingabe in r24,PIND sbrc r24,2 rjmp getKey inc r16 brne warte inc r17 brne warte ;Verarbeitung rol r18 out PORTB,r18 warte: rjmp mainloop ;------------------------------------------------------------------ ;mainloop2: getKey1: in r24,PIND sbrc r24,3 rjmp getKey1 inc r20 brne warte1 dec r21 brne warte1 ror r19 out PORTB,r19 warte1: rjmp mainloop ;------------------------------------------------