Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .nolist
- .include "m16def.inc"
- .list
- .def mp = r16
- .def mb = r22
- .def stackend = r17
- .equ looptimer = 65000
- // Interupt Sprungpunkte
- .org 0x000
- rjmp init
- .org 0x002
- rjmp led_an
- .org 0x004
- rjmp led_aus
- // ---------- Initialisierung ---------------------------------------------------------------------------
- init:
- // DDRB --> Output
- ldi mp, 0xff
- out DDRB, mp
- // DDRD --> Input
- ldi mp, 0x00
- out DDRD, mp
- // Alle Lichter aus
- ldi mp, 0xFF
- out PORTB, mp
- // Schleifen timer
- ldi r24, low(looptimer)
- ldi r25, high(looptimer)
- //stapel einrichten
- ldi stackend, low(RAMEND)
- out SPL, stackend
- ldi stackend, high(RAMEND)
- out SPH, stackend
- // Interrupt steuerung
- ldi mp, 1 << ISC10 | 1 << ISC11
- out MCUCR, mp
- ldi mp, 1 << INT0 | 1 << INT1
- out GICR, mp
- sei
- // ---------- Hauptprogramm ----------------------------------------------------------------------
- main:
- ldi r21, 255
- loop1:
- rcall lange_schleife
- rcall raufzaehlen
- dec r21
- brne loop1
- ldi r21, 255
- loop2:
- rcall lange_schleife
- rcall runterzaehlen
- dec r21
- brne loop2
- rjmp main
- // ---------- Unterprogramme --------------------------------------------------------------------
- lange_schleife:
- in mp, SREG
- push mp
- rcall schleife
- rcall schleife
- rcall schleife
- rcall schleife
- rcall schleife
- rcall schleife
- rcall schleife
- pop mp
- out SREG, mp
- ret
- schleife:
- in mp, SREG
- push mp
- loop:
- sbiw r24, 1
- brne loop
- pop mp
- out SREG, mp
- ret
- raufzaehlen:
- in mp, SREG
- push mp
- dec mb
- out PORTB, mb
- pop mp
- out SREG, mp
- ret
- runterzaehlen:
- in mp, SREG
- push mp
- inc mb
- out PORTB, mb
- pop mp
- out SREG, mp
- ret
- // ---------- Interrupt Service Routinen ------------------------------------------------------------
- led_an:
- in mp, SREG
- push mp
- ldi mp, 0b01010101
- out PORTB, mp
- rcall lange_schleife
- rcall lange_schleife
- rcall lange_schleife
- rcall lange_schleife
- pop mp
- out SREG, mp
- reti
- led_aus:
- in mp, SREG
- push mp
- ldi mp, 0b10101010
- out PORTB, mp
- rcall lange_schleife
- rcall lange_schleife
- rcall lange_schleife
- rcall lange_schleife
- pop mp
- out SREG, mp
- reti
- .exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement