Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .NOLIST
- .INCLUDE "m128def.inc"
- .LIST
- .CSEG
- .EQU Output = 16
- .EQU Input = 0
- ;portB => value a aktivace sloupcu
- ;portD => pozice a ovladani rezimu periferie
- ;0b1111(radky)1111(sloupce)
- .ORG 0x00 JMP RESET
- .ORG 0x1E JMP OBSLUHA
- .DEF Control = R16 ;registr ridici funkci periferie
- .DEF Sloupec = R17 ;registr pro aktivaci sloupce
- .DEF RealStav = R18 ;registr pro cteni radku
- .DEF DefStav = R19 ;registr pro definovane stavy klavesnice
- .DEF Hodnota1 = R20 ;hodnoty segmentu (1 stiskle tlacitko)
- .DEF Hodnota2 = R21 ;hodnota segmentu (cislo o 1 mensi)
- .DEF Pocet = R22
- .MACRO VstupKlavesnice ;vstupy z klavesnice
- LDI Sloupec,0b11111101
- LDI DefStav,@0
- OUT PORTB,Sloupec
- ; CALL DELAY
- IN RealStav,pinB
- CP RealStav,DefStav
- BREQ END1
- BRNE END2
- END1:
- IN Sloupec,pinB
- CPI Sloupec,@0
- BRNE END1
- JMP @1
- END2:
- .ENDMACRO
- .MACRO Plneni
- LDI XH,0x01
- LDI XL,0x70
- LDI Hodnota1,@0
- LDI Hodnota2,@1
- ST X+,Hodnota2
- ST X+,Hodnota1
- ST X+,Hodnota2
- LDI XH,0x01
- LDI XL,0x70
- LDI ZL,low(POZICE*2)
- LDI ZH,high(POZICE*2)
- .ENDMACRO
- RESET:
- LDI R16,low(RAMEND) ;zasobnik
- OUT SPL,R16
- LDI R16,high(RAMEND)
- OUT SPH,R16
- LDI Pocet,0
- CALL TIMER
- VSTUP:
- SEI
- LDI R16,0xFF
- OUT DDRD,R16
- LDI R16,0x0F
- OUT DDRB,R16
- LDI Control,Input
- OUT PORTD,Control
- ;nekonecna smycka nacitani vstupu
- VSTUPNIMOD:
- VstupKlavesnice 0b11101101,ROZRAZENI1
- VstupKlavesnice 0b11011101,ROZRAZENI2
- VstupKlavesnice 0b10111101,ROZRAZENI3
- VstupKlavesnice 0b01111101,ROZRAZENI4 ;cisteni displeje
- JMP VSTUPNIMOD
- ROZRAZENI1:
- Plneni 0b10100100,0b11111001
- JMP VSTUPNIMOD
- ROZRAZENI2:
- Plneni 0b10010010,0b10011001
- JMP VSTUPNIMOD
- ROZRAZENI3:
- Plneni 0b10000000,0b11111000
- JMP VSTUPNIMOD
- ROZRAZENI4:
- Plneni 0xFF,0xFF
- LDI R16,3
- LDI ZL,low(POZICE*2)
- LDI ZH,high(POZICE*2)
- CISTENI:
- LDI R17,0xFF
- LPM R18,Z+
- OUT PORTD,R18
- OUT PORTB,R17
- DEC R16
- BRNE CISTENI
- JMP VSTUPNIMOD
- TIMER:
- LDI R16,0b00001110
- OUT TCCR0,R16
- LDI R16,0x3E
- OUT OCR0,R16
- LDI R16,0b00000010
- OUT TIMSK,R16
- RET
- POZICE:
- .DB 0b11010011,0b11010111,0b11011011
- OBSLUHA:
- INC Pocet
- CPI Pocet,4
- BREQ END3
- LDI R16,0xFF
- OUT DDRD,R16
- LDI R16,0xFF
- OUT DDRB,R16
- LDI Control,Output
- OUT PORTD,Control
- OBSLUHA1:
- LPM R16,Z+
- OUT PORTD,R16
- LD R16,X+
- OUT PORTB,R16
- JMP END4
- END3:
- LDI Pocet,0
- LDI ZL,low(POZICE*2)
- LDI ZH,high(POZICE*2)
- JMP OBSLUHA
- END4:
- RETI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement