Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; zahlenschloss.asm
- ;
- ; Created: 15/06/2019 14:18:32
- ; Author : winshit
- ;
- ; naming definitions
- .def Temp = 16
- .def Digit = R20
- .def Fail = R21
- .def ButtonStates = R22
- .def digit1 = R25
- .def digit2 = R26
- .def digit3 = R27
- .def digit4 = R28
- ; input and output pins
- ldi Temp, 0b00111111
- out DDRB, Temp
- ldi Temp, 0b00001111
- out DDRD, Temp
- clr Temp
- out DDRA, Temp
- ; init vars
- ldi digit1, 0b00000000
- ldi digit2, 0b00001000
- ldi digit3, 0b00000001
- ldi digit4, 0b00000101
- ; init stackpointer
- ldi Temp, high(RAMEND)
- out SPH, Temp
- ldi Temp, low(RAMEND)
- out SPL, Temp
- ; endless loop
- MAIN: ldi Fail, 0b00000000
- ; set light, read digit #1
- ldi Temp, 0b00000001
- out PORTB, Temp
- call POLL_BUTTONS
- cp digit, digit1
- brne INC_FAIL
- ; set light, read digit #2
- ldi Temp, 0b00000011
- out PORTB, Temp
- call POLL_BUTTONS
- cp digit, digit2
- brne INC_FAIL
- ; set light, read digit #3
- ldi Temp, 0b00000111
- out PORTB, Temp
- call POLL_BUTTONS
- cp digit, digit3
- brne INC_FAIL
- ; set light, read digit #4
- ldi Temp, 0b00001111
- out PORTB, Temp
- call POLL_BUTTONS
- cp digit, digit4
- brne INC_FAIL
- clr Temp
- cp Fail, Temp
- brne ...
- rjmp MAIN
- INC_FAIL:
- inc Fail
- POLL_BUTTONS:
- ; check if increment was pressed
- in Temp, PINA
- ldi Temp, 0b10000000
- and Temp, PINA
- cpi Temp, 0
- brne COMPARE_PREV
- inc digit
- cp
- COMPARE_PREV:
- cpi ButtonState, 1
- breq ldi Temp, 1
- LED_SUCCESS:
- ldi Temp, 0b00010000
- out PORTB, Temp
- LED_ERROR:
- ldi Temp, 0b00100000
- out PORTB, Temp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement