von Wolfgang Voß
Elektronik-Labor Projekte AVR
.nolistSiehe auch:
; Einbinden der Attiny13 Lib (Pfad den eigenen Ansprüchen anpassen)
.include "/usr/share/avra/tn13def.inc"
.list
.def Delay1=r16
.def Delay2=r17
.def Delay3=r18
.def LED=r19 ; Led Register
.def PB4=r20 ; Port Register
.org 0x000 ; kommt ganz an den Anfang des Speichers
rjmp start ; Interruptvektoren überspringen
.nolist ; und zum Hauptprogramm
; rjmp EXT_INT0 ; IRQ0 Handler
reti
; rjmp EXT_INT1 ; IRQ1 Handler
reti
; rjmp TIM2_COMP
reti
; rjmp TIM2_OVF
reti
; rjmp TIM1_CAPT ; Timer1 Capture Handler
reti
; rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti
; rjmp TIM1_COMPB ; Timer1 CompareB Handler
reti
; rjmp TIM1_OVF ; Timer1 Overflow Handler
reti
; rjmp TIM0_OVF ; Timer0 Overflow Handler
reti
; rjmp SPI_STC ; SPI Transfer Complete Handler
reti
; rjmp USART_RXC ; USART RX Complete Handler
reti
; rjmp USART_DRE ; UDR Empty Handler
reti
; rjmp USART_TXC ; USART TX Complete Handler
reti
; rjmp ADC ; ADC Conversion Complete Interrupthandler
reti
; rjmp EE_RDY ; EEPROM Ready Handler
reti
; rjmp ANA_COMP ; Analog Comparator Handler
reti
; rjmp TWSI ; Two-wire Serial Interface Handler
reti
; rjmp SPM_RDY ; Store Program Memory Ready Handler
.list
; hier beginnt das Hauptprogramm
.org 0x012 ; Starte nach den Interrupts
start: ldi r16,0b00011111 ; DatenrichtungPB0-PB4 Ausgang
out ddrb,r16
loop: ldi LED,0b00011110 ; LED 1
rcall Ausgabe
ldi LED,0b00000001 ; Led 2
rcall Ausgabe
ldi LED,0b00011101 ; Led 3
rcall Ausgabe
ldi LED,0b00000010 ; Led 4
rcall Ausgabe
ldi LED,0b00011011 ; Led 5
rcall Ausgabe
ldi LED,0b00000100 ; Led 6
rcall Ausgabe
ldi LED,0b00010111 ; Led 7
rcall Ausgabe
ldi LED,0b00001000 ; Led 8
rcall Ausgabe
rjmp loop ; und zurück in die Endlosschleife
; Warte eine kleine Weile
Pause: ldi Delay1,2
W0: ldi Delay2,100
W1: ldi Delay3,250
W2: dec Delay3
brne W2
dec Delay2
brne W1
dec Delay1
brne W0
ret
Ausgabe:out portb,LED ; Inhalt von LED auf Port B ausgeben
rjmp Pause ; und eine Weile warten