Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .equ XTAL = 16000000 ;16 mHz
- .equ BTN = 2 ;Pinnumber of PORT_D
- .equ LED = 3 ;Pinnumber of PORT_D
- .def temp1 = r16
- .def temp2 = r17
- ;Init stackpointer
- ldi temp1, HIGH(RAMEND)
- out SPH, temp1
- ldi temp1, LOW(RAMEND)
- out SPL, temp1
- ;Set led pin to output
- ldi temp1, (1 << LED)
- out DDRD, temp1
- loop:
- in temp1, PIND
- sbrc temp1, BTN ;Check if button is pressed
- rcall led_toggle
- rjmp loop
- led_toggle:
- andi temp1, (1 << LED)
- ldi temp2, (1 << LED)
- eor temp1, temp2 ;xor the led pin
- out PORTD, temp1
- ldi temp2, 0xFF
- led_toggle_0:
- dec temp2
- rcall delay5ms
- brne led_toggle_0
- ret
- ; DELAY 50ยตs (variable)
- delay50us:
- push temp1
- ldi temp1, (XTAL*50/4)/1000000 ;$C8
- delay50us_0:
- dec temp1
- nop
- brne delay50us_0
- pop temp1
- ret
- ; DELAY 5ms (variable)
- delay5ms:
- push temp1
- push temp2
- ldi temp1, (XTAL*5/603)/1000 ;$84
- delay5ms_0:
- ldi temp2, $C9
- delay5ms_1:
- dec temp2
- brne delay5ms_1
- dec temp1
- brne delay5ms_0
- pop temp2
- pop temp1
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement