Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .NOLIST
- .INCLUDE "m128def.inc"
- .LIST
- .cseg
- pozice:
- .DB 0xF3, 0xF7, 0xFB, 0xFF
- znaky:
- .DB 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80
- ; '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
- ;definování zásobníku
- ldi R16, low(RAMEND)
- out spl, R16
- ldi R16, high(RAMEND)
- out sph, R16
- ; porty jako vystup
- LDI R16, 0b11111111
- OUT DDRB, R16
- LDI R16, 0b11111111
- OUT DDRE, R16
- smycka:
- ;načte počáteční adresu pozic a znaků
- call adresaZnaku
- call adresaPozic
- ldi R17, 4 ; počet opakování
- prvniCtverice:
- mov ZL, XL
- mov ZH, XH
- lpm R16, Z+ ;načte pozici a inkrementuje
- mov XL, ZL
- mov XH, ZH
- out portE, R16 ;hodí pozici na výstup
- mov ZL, YL
- mov ZH, YH
- lpm R16, Z+ ;načte znak a inkrementuje
- mov YL, ZL
- mov YH, ZH
- out portB, R16 ;hodí číslo na výstup
- call delay
- dec R17
- brne prvniCtverice ;cyklus se opakuje 4krát - 4 pozice
- ldi R17, 4
- call adresaPozic
- ;restartujeme počítadlo pozic a adresu pozic a jdeme dělat
- ;stejný cyklus s další čtveřicí čísel ale s jiným zpožděním
- druhaCtverice:
- mov ZL, XL
- mov ZH, XH
- lpm R16, Z+
- mov XL, ZL
- mov XH, ZH
- out portE, R16
- mov ZL, YL
- mov ZH, YH
- lpm R16, Z+
- mov YL, ZL
- mov YH, ZH
- out portB, R16
- call delay
- call delay
- dec R17
- brne druhaCtverice
- jmp smycka ;skočí zpátky na začátek a takhle pořád dokola ;)
- delay:
- ldi r18, 41
- ldi r19, 150
- ldi r20, 125
- L1: dec r20
- brne L1
- dec r19
- brne L1
- dec r18
- brne L1
- nop
- ret
- adresaZnaku:
- LDI YL,low(znaky*2)
- LDI YH,high(znaky*2)
- ret
- adresaPozic:
- LDI XL,low(pozice*2)
- LDI XH,high(pozice*2)
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement