Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- .NOLIST
- .INCLUDE "m128def.inc"
- .LIST
- ;
- ;nastvení portu d jako výstupního
- ldi r16,0xff
- out DDRD,r16
- ;nastvení portu b jako vstupního
- ldi r16,0x00
- out DDRB,r16
- .def POSITION=r21
- .def CURRENT_BUTTON=r16
- ;Motivy rozvicovaných diod
- MOTIV1:
- ldi CURRENT_BUTTON,1
- ldi POSITION,1
- ldi r17,0b11111111
- out PORTD,r17
- rjmp DELAY
- POSITION1_1:
- ;
- ldi POSITION,2
- ldi r17,0b00000000
- out PORTD,r17
- rjmp DELAY
- POSITION1_2:
- ;
- rjmp MOTIV1
- MOTIV2:
- ldi CURRENT_BUTTON,2
- ldi POSITION,1
- ldi r17,0b11110000
- out PORTD,r17
- rjmp DELAY
- POSITION2_1:
- ;
- ldi POSITION,2
- ldi r17,0b00001111
- out PORTD,r17
- rjmp DELAY
- POSITION2_2:
- ;
- rjmp MOTIV2
- MOTIV3:
- ldi CURRENT_BUTTON,3
- ldi POSITION,1
- ldi r17,0b10101010
- out PORTD,r17
- rjmp DELAY
- POSITION3_1:
- ;
- ldi POSITION,2
- ldi r17,0b01010101
- out PORTD,r17
- rjmp DELAY
- POSITION3_2:
- ;
- rjmp MOTIV3
- MOTIV4:
- ldi CURRENT_BUTTON,4
- ldi POSITION,1
- ldi r17,0b11001100
- out PORTD,r17
- rjmp DELAY
- POSITION4_1:
- ;
- ldi POSITION,2
- ldi r17,0b00110011
- out PORTD,r17
- rjmp DELAY
- POSITION4_2:
- ;
- rjmp MOTIV4
- ;---------------------------------
- ;Podmínky pro přesunutí na správnou pozici
- BUTTON1:
- cpi POSITION,1
- breq POSITION1_1
- cpi POSITION,2
- breq POSITION1_2
- BUTTON2:
- cpi POSITION,1
- breq POSITION2_1
- cpi POSITION,2
- breq POSITION2_2
- BUTTON3:
- cpi POSITION,1
- breq POSITION3_1
- cpi POSITION,2
- breq POSITION3_2
- BUTTON4:
- cpi POSITION,1
- breq POSITION4_1
- cpi POSITION,2
- breq POSITION4_2
- BUTTON5:
- cpi POSITION,1
- breq POSITION5_1
- cpi POSITION,2
- breq POSITION5_2
- BUTTON6:
- cpi POSITION,1
- breq POSITION6_1
- cpi POSITION,2
- breq POSITION6_2
- BUTTON7:
- cpi POSITION,1
- breq POSITION7_1
- cpi POSITION,2
- breq POSITION7_2
- BUTTON8:
- cpi POSITION,1
- breq POSITION8_1
- cpi POSITION,2
- breq POSITION8_2
- ;-------------------------------------
- MOTIV5:
- ldi CURRENT_BUTTON,5
- ldi POSITION,1
- ldi r17,0b11000011
- out PORTD,r17
- rjmp DELAY
- POSITION5_1:
- ;
- ldi POSITION,2
- ldi r17,0b00111100
- out PORTD,r17
- rjmp DELAY
- POSITION5_2:
- ;
- rjmp MOTIV5
- MOTIV6:
- ldi CURRENT_BUTTON,6
- ldi POSITION,1
- ldi r17,0b11111100
- out PORTD,r17
- rjmp DELAY
- POSITION6_1:
- ;
- ldi POSITION,2
- ldi r17,0b11000000
- out PORTD,r17
- rjmp DELAY
- POSITION6_2:
- ;
- rjmp MOTIV6
- MOTIV7:
- ldi CURRENT_BUTTON,7
- ldi POSITION,1
- ldi r17,0b00111111
- out PORTD,r17
- rjmp DELAY
- POSITION7_1:
- ;
- ldi POSITION,2
- ldi r17,0b11111100
- out PORTD,r17
- rjmp DELAY
- POSITION7_2:
- ;
- rjmp MOTIV7
- MOTIV8:
- ldi CURRENT_BUTTON,8
- ldi POSITION,1
- ldi r17,0b00101101
- out PORTD,r17
- rjmp DELAY
- POSITION8_1:
- ;
- ldi POSITION,2
- ldi r17,0b10110100
- out PORTD,r17
- rjmp DELAY
- POSITION8_2:
- ;
- rjmp MOTIV8
- ;Zpoždění v 3tí smyčce je skok na kontrolu vstupů
- DELAY:
- ldi r18, 3
- ldi r19, 138
- ldi r20, 86
- L1: dec r20
- brne L1
- dec r19
- brne L1
- rjmp CHECK_BUTTON
- CONTINUE:
- dec r18
- brne L1
- ;Podmínky pro vrácení na pozici asledující po DELAY
- cpi CURRENT_BUTTON,1
- breq MEZI1
- cpi CURRENT_BUTTON,2
- breq MEZI2
- cpi CURRENT_BUTTON,3
- breq MEZI3
- cpi CURRENT_BUTTON,4
- breq MEZI4
- cpi CURRENT_BUTTON,5
- breq MEZI5
- cpi CURRENT_BUTTON,6
- breq MEZI6
- cpi CURRENT_BUTTON,7
- breq MEZI7
- cpi CURRENT_BUTTON,8
- breq MEZI8
- rjmp DELAY
- ;Zkouška jestli je stisknuté tlačítko
- CHECK_BUTTON:
- sbic portb,0
- rjmp MOTIV1
- sbic portb,1
- rjmp MOTIV2
- sbic portb,2
- rjmp MOTIV3
- sbic portb,3
- rjmp MOTIV4
- sbic portb,4
- rjmp MOTIV5
- sbic portb,5
- rjmp MOTIV6
- sbic portb,6
- rjmp MOTIV7
- sbic portb,7
- rjmp MOTIV8
- rjmp CONTINUE
- ;Mezikrok pro jump na kontrulu pozice před vsutupem do DELAY (protože breq by byl out of reach)
- MEZI1:
- rjmp BUTTON1
- MEZI2:
- rjmp BUTTON2
- MEZI3:
- rjmp BUTTON3
- MEZI4:
- rjmp BUTTON4
- MEZI5:
- rjmp BUTTON5
- MEZI6:
- rjmp BUTTON6
- MEZI7:
- rjmp BUTTON7
- MEZI8:
- rjmp BUTTON8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement