.NOLIST .INCLUDE "m16def.inc" .LIST .DEF REG=R16 ;prac. registr .DEF POC=R20 ;počítadlo .CSEG ;kódový segment ;hlavní program: START: LDI REG,LOW(RAMEND) OUT SPL,REG ;nastavení SP LDI REG,HIGH(RAMEND) OUT SPH,REG ;na konec SRAM ;inicializace LCD: RCALL LCDINI ;nastavení adresy textu: LDI ZL,LOW(ADRZTX) LDI ZH,HIGH(ADRZTX) ;smycka animace: SMYCKA: ;příprava na první řádek: LDI REG,$80 RCALL LCDWCM ;první řádek LDI POC,16 ;počet sloupců RADEK1: LPM REG,Z+ ;nahraj znak RCALL LCDWDT ;zapiš znak DEC POC ;konec řádku? BRNE RADEK1 ;příprava na druhý řádek: LDI REG,$C0 RCALL LCDWCM ;druhý řádek LDI POC,16 ;počet sloupců RADEK2: LPM REG,Z+ ;nahraj znak RCALL LCDWDT ;zapiš znak DEC POC ;konec řádku? BRNE RADEK2 ;čekání 2 s: RCALL CEK2S ;test konce animace: CPI ZL,LOW(ADRKTX) ;porovná LDI REG,HIGH(ADRKTX) ;Z s ADRKTX CPC ZH,REG BREQ START ;celé znovu ;příprava na další krok: SBIW ZL,16 ;Z=Z-16 RJMP SMYCKA ;další krok ;text pro výpis: ZTEXT: .DB " " .DB " " .DB " " KTEXT: ;konec textu+1 .EQU ADRZTX=2*ZTEXT ;adresa začátku textu .EQU ADRKTX=2*KTEXT ;adresa konce textu ;vložení rurin pro LCD: .INCLUDE "ATLCDTX2.INC"