; Osciloskop ATmega88, f = 20 MHz (krystal nebo rezonator), 4,5 - 5,5V ; TV vystup PAL, 50Hz / 15625Hz ; DANYK (danyk.cz) ; http://danyk.cz/avr_osc.html .NOLIST .INCLUDE "m88def.inc" .LIST .DEF JEDNA=R2 .DEF POVOLENI=R3 .DEF SYNCHRO=R4 .DEF MAX=R5 .DEF DELIC=R6 .DEF CEKANI=R7 .DEF SNIMKY=R8 .DEF SVISLA=R9 .DEF BILA=R10 .DEF SEDA=R11 .DEF CERNA=R12 .DEF NAVRAT=R13 .DEF RADEK_OSD=R14 .DEF NULA=R15 .DEF REG=R16 .DEF REG2=R17 .DEF RADEKL=R18 .DEF RADEKH=R19 .DEF POSUN=R20 .DEF DELITEL=R21 .DEF OPAKOVAC=R22 .DEF BYLMENSI=R23 .DEF MIN=R24 .DEF ZAKAZ=R25 .EQU SMER=DDRD .EQU PORT=PORTD .EQU VSTUPY=PIND .EQU SMER2=DDRC .EQU PORT2=PORTC .EQU VSTUPY2=PINC .EQU SMER3=DDRB .EQU PORT3=PORTB .EQU STAV_TLAC=0x04FF .EQU PRODL_TLAC=0x04FE .EQU DOBA_TLAC=0x04FD .EQU ZAKLADNA=0x04FC .CSEG .ORG 0 RJMP START ; vektory preruseni .ORG PCI2addr ;preruseni RJMP VNEJSI_SPUST .ORG OC2Aaddr ;preruseni citacem2a RJMP CITAC2A .ORG OC2Baddr ;preruseni citacem2b RJMP CITAC2B .ORG OC1Aaddr ;preruseni citacem1a RJMP CITAC1A START: ;nastavi port D jako vystup LDI REG,0b01100000 OUT SMER,REG LDI REG,0b10011111 OUT PORT,REG ;nastavi port C jako vstup s pullupy na bitech 1-5 LDI REG,0b00000000 OUT SMER2,REG LDI REG,0b00111110 OUT PORT2,REG ;nastavi port B jako vstup LDI REG,0x00 OUT SMER3,REG LDI REG,0xFF OUT PORT3,REG ;nastavi ukazatel zasobniku RAM LDI REG,0xFB OUT SPL,REG LDI REG,0x04 OUT SPH,REG ;nastavi ukazatel Z (cteci) a Y (zapisovaci) LDI ZH,0x01 LDI ZL,0x00 LDI YH,0x01 LDI YL,0x00 ;prednastavi spodni registry (R0...R15) CLR NULA CLR ZAKAZ LDI REG,0b11111111 MOV BILA,REG LDI REG,0b11011111 MOV SEDA,REG LDI REG,0b10111111 MOV CERNA,REG LDI REG,0b10011111 MOV SYNCHRO,REG LDI REG,0b00000010 MOV POVOLENI,REG LDI REG,250 MOV NAVRAT,REG LDI REG,254 MOV SVISLA,REG LDI REG,1 MOV DELIC,REG LDI REG,1 MOV JEDNA,REG ;prednastavi horni registry (R16...R31) CLR POSUN CLR RADEKL CLR RADEKH LDI DELITEL,1 CLR OPAKOVAC CLR BYLMENSI ;prednastavi data v RAM LDI REG,7 STS ZAKLADNA,REG ; NASTAVENI CASOVACU A JEJICH PRERUSENI LDI REG,0b00000000 ; OUT TCCR0A,REG ; LDI REG,0b00000001 ; OUT TCCR0B,REG ; LDI REG,251 ; nastavi porovnavanou hodnotu (deli se n+1) OUT OCR0A,REG ; LDI REG,251 ; nastavi porovnavanou hodnotu (deli se n+1) OUT OCR0B,REG ; LDI REG,0b00000000 ; STS TCCR1A,REG ; LDI REG,0b00001000 ; STS TCCR1B,REG ; LDI REG,0 ; STS OCR1AH,REG ; LDI REG,16 ; STS OCR1AL,REG ; LDI REG,0b00000000 ; zakaze preruseni OCIE1A STS TIMSK1,REG ; LDI REG,0b00000010 ;CTC - nulovani pri OCR2A STS TCCR2A,REG ;preddeli 8 LDI REG,0b00000010 ; STS TCCR2B,REG ; LDI REG,159 ; nastavi porovnavanou hodnotu (deli se n+1) STS OCR2A,REG ; LDI REG,10 ; nastavi porovnavanou hodnotu (deli se n+1) STS OCR2B,REG ; LDI REG,0b00000110 ; povoli preruseni OCIE2A, OCIE2B STS TIMSK2,REG ; ;NASTAVENI ADC a MCU LDI REG,0b11100000 ; int. ref, zarovna vlevo, zvoli vstup ADC0 STS ADMUX,REG LDI REG,0b10100101 ; int. ref, zarovna vlevo, zvoli vstup ADC0 STS ADCSRA,REG ; LDI REG,0b00000101 ; int. ref, zarovna vlevo, zvoli vstup ADC0 STS ADCSRB,REG ; LDI REG,0b00000001 ;povoli uspani (sleep) a nastavi mod Idle OUT SMCR,REG ;vypne analog. komparator - neni nikdy vyuzit (setri energii) LDI REG,0b10000000 OUT ACSR,REG ;povoli PCINT LDI REG,0b00000100 STS PCICR,REG SEI ;hlavní smycka SMYCKA: STS TIMSK1,ZAKAZ ;zakaze a nebo taky nezakaze preruseni OCIE1A (dle obsahu "ZAKAZ") SLEEP RJMP SMYCKA ;Mereni - Preruseni ukladajici vzorek CITAC1A: DEC DELIC BRNE KONEC_MERENI MOV DELIC,DELITEL CPI OPAKOVAC,1 BRNE MERIT CPI YL,0x00 CPC YH,JEDNA BRNE MINMAX_MERIT SPOUSTENI: ;spousteni pri opakovaci (REG2 vypocita prumer) MOV REG2,MIN ADD REG2,MAX ROR REG2 LDS REG,ADCH CP REG,REG2 BRSH JE_VETSI LDI BYLMENSI,1 RJMP MINMAX_CEKEJ JE_VETSI: CPI BYLMENSI,1 BRNE MINMAX_CEKEJ VYNUL_MERIT: SER MIN CLR MAX CLR BYLMENSI CLR CEKANI MERIT: LDS REG,ADCH ST Y+,REG ;konec prostoru 960ti vzorku v RAM: LDI REG2,0x04 CPI YL,0xBF CPC YH,REG2 BRSH DOMERENO KONEC_MERENI: RETI ;Zjistit min a max a pak cekat MINMAX_CEKEJ: LDS REG,ADCH ;test na minimum CP REG,MIN BRSH MIN_NENI MOV MIN,REG MIN_NENI: ;test na maximum CP MAX,REG BRSH MAX_NENI MOV MAX,REG MAX_NENI: INC CEKANI BREQ VYNUL_MERIT RETI ;Zjistit min a max a pak merit MINMAX_MERIT: LDS REG,ADCH ;test na minimum CP REG,MIN BRLO JE_MIN ;test na maximum CP MAX,REG BRLO JE_MAX ST Y+,REG ;konec prostoru 960ti vzorku v RAM: LDI REG2,0x04 CPI YL,0xBF CPC YH,REG2 BRSH DOMERENO RETI JE_MIN: MOV MIN,REG ST Y+,REG ;konec prostoru 960ti vzorku v RAM: LDI REG2,0x04 CPI YL,0xBF CPC YH,REG2 BRSH DOMERENO RETI JE_MAX: MOV MAX,REG ST Y+,REG ;konec prostoru 960ti vzorku v RAM: LDI REG2,0x04 CPI YL,0xBF CPC YH,REG2 BRSH DOMERENO RETI DOMERENO: LDI YH,0x01 LDI YL,0x00 LDI REG,0b00001000 ;vypne TCNT1 STS TCCR1B,REG RETI ;Vykreslovani radku okna osciloskopu RADEK: LDI ZL,0x00 LDI ZH,0x01 LDI REG,30 MUL REG,POSUN ADD ZL,R0 ADC ZH,R1 MOVW REG,RADEKL SUBI REG,35 SBCI REG2,0 LDI REG2,255 SUB REG2,REG LDI REG,0b10000011 CPI REG2,255 BRNE MRIZKA0NE LDI REG,0b00100011 MRIZKA0NE: CPI REG2,213 BRNE MRIZKA1NE LDI REG,0b00100011 MRIZKA1NE: CPI REG2,170 BRNE MRIZKA2NE LDI REG,0b00100011 MRIZKA2NE: CPI REG2,128 BRNE MRIZKA3NE LDI REG,0b00100011 MRIZKA3NE: CPI REG2,127 BRNE MRIZKA4NE LDI REG,0b00100011 MRIZKA4NE: CPI REG2,85 BRNE MRIZKA5NE LDI REG,0b00100011 MRIZKA5NE: CPI REG2,43 BRNE MRIZKA6NE LDI REG,0b00100011 MRIZKA6NE: CPI REG2,0 BRNE MRIZKA7NE LDI REG,0b00100011 MRIZKA7NE: CPI REG,0b00100011 BRNE MRIZKA_NENI OUT PORT,SEDA MRIZKA_NENI: OUT TCCR0A,REG LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ OUT TCNT0,SVISLA CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT LD REG,Z+ CPSE REG,REG2 OUT TCNT0,NAVRAT NOP NOP OUT TCNT0,SVISLA NOP OUT TCNT0,NAVRAT LDI REG,0b00000000 ; OUT TCCR0A,REG ; OUT PORT,CERNA RET V_NAVRAT: CLR RADEKL CLR RADEKH INC SNIMKY RJMP V_NAVRAT_KONEC VSYN_ANO: LDI REG,150 ; nastavi porovnavanou hodnotu (n+1) STS OCR2B,REG ; RJMP VSYN_ANO_KONEC ; Citac2a ; - pevna hodnota ; - ridi zacatek H synchronizacniho pulzu ; - nastavi jeho delku ; - ridi vse, co se ma provest ve volnem case behem H ; synchron. pulzu, kdyz cpu neni vytizen. CITAC2A: ;nastavi synchronizacni uroven (0V) OUT PORT,SYNCHRO ADD RADEKL,JEDNA ADC RADEKH,NULA CPI RADEKL,56 CPC RADEKH,JEDNA BRSH V_NAVRAT V_NAVRAT_KONEC: CPI RADEKL,7 ;zjistuje dle cisla radku, zda ma byt vertikalni synchroniz. pulz CPC RADEKH,NULA BRLO VSYN_ANO LDI REG,10 ; nastavi porovnavanou hodnotu (n+1) STS OCR2B,REG ; VSYN_ANO_KONEC: CPI RADEKL,1 CPC RADEKH,NULA BRNE TEST_TLAC_NE RCALL TLACITKA CPI YL,0x00 CPC YH,JEDNA BRNE AUTOOPAK_NE CPI OPAKOVAC,1 BRNE AUTOOPAK_NE MOV REG,SNIMKY LDS REG2,ZAKLADNA CPI REG2,5 BRLO POMALEJI ANDI REG,7 POMALEJI: ANDI REG,31 BRNE AUTOOPAK_NE RCALL OBNOV_ZAKL AUTOOPAK_NE: TEST_TLAC_NE: STS TIMSK1,POVOLENI ;povoli preruseni OCIE1A RETI ; Citac2b ; - pohybliva hodnota ; - ridi konec H synchro pulzu, zatemneni a zacatek kresleni radku CITAC2B: OUT PORT,CERNA SER REG2 ;dojde-li k vynulovani REG2, nevynecha radek LDS REG,TCCR1B ;zjisti stav citace CPI REG,0b00001000 ;je vypnut? BRNE PODMINKA1 ; CLR REG2 PODMINKA1: LDS REG,ZAKLADNA CPI REG,5 BRLO PODMINKA2 CLR REG2 PODMINKA2: CPSE REG2,NULA RJMP VYNECH_RADEK CPI RADEKL,35 CPC RADEKH,NULA BRLO PRAZDNY_RADEK CPI RADEKL,35 CPC RADEKH,JEDNA BRSH PRAZDNY_RADEK NOP LDI REG,30 ;nastavi dobu zatemneni (Ano, prasarna) ZPOZDI: DEC REG BRNE ZPOZDI RCALL RADEK RJMP OSD_NE PRAZDNY_RADEK: CPI RADEKL,36 CPC RADEKH,JEDNA BRLO OSD_NE CPI RADEKL,43 CPC RADEKH,JEDNA BRSH OSD_NE RCALL OSD OSD_NE: VYNECH_RADEK: RETI TLACITKA: ;Zjištění stavu tlačítek. f je 50Hz LDS REG,PRODL_TLAC ;počítadlo prodlevy do další reakce CPI REG,0 BREQ UZJE0 DEC REG STS PRODL_TLAC,REG UZJE0: LDS REG2,STAV_TLAC ;Do REG2 načte předchozí stav tlačítek IN REG,VSTUPY2 ;Zjistí stav tlačítek ANDI REG,0b00111110 STS STAV_TLAC,REG ;Uloží ho pro příští test CP REG2,REG ;pokud předchozí stav = současný, TL už nereaguje znovu BREQ NEREAGOVAT LDS REG2,PRODL_TLAC ;pokud neuplynula minimální prodleva, nereaguje znovu CPI REG2,0 BRNE NEREAGOVAT SBRS REG,1 RJMP NA_TLAC1 SBRS REG,2 RJMP NA_TLAC2 SBRS REG,3 RJMP NA_TLAC3 SBRS REG,4 RJMP NA_TLAC4 SBRS REG,5 RJMP NA_TLAC5 RJMP NEREAGOVAT NA_TLAC1: RCALL TLAC1 RJMP NEREAGOVAT NA_TLAC2: RCALL TLAC2 RJMP NEREAGOVAT NA_TLAC3: RCALL TLAC3 RJMP NEREAGOVAT NA_TLAC4: RCALL TLAC4 RJMP NEREAGOVAT NA_TLAC5: RCALL TLAC5 NEREAGOVAT: LDI REG2,5 ;určuje prodlevu do další reakce (x 20ms) ;stisknutí/držení tlačítka nastaví prodlevu do další reakce SBRS REG,1 STS PRODL_TLAC,REG2 SBRS REG,2 STS PRODL_TLAC,REG2 SBRS REG,3 STS PRODL_TLAC,REG2 SBRS REG,4 STS PRODL_TLAC,REG2 SBRS REG,5 STS PRODL_TLAC,REG2 ;tady zacina vyhodnoceni dlouheho stisku CPI REG,0b00111110 BREQ NIC_NEDRZI LDS REG2,DOBA_TLAC INC REG2 STS DOBA_TLAC,REG2 NIC_NEDRZI: LDS REG2,PRODL_TLAC CPI REG2,0 BRNE PRODL_NE0 LDI REG2,0 STS DOBA_TLAC,REG2 PRODL_NE0: LDS REG2,DOBA_TLAC CPI REG2,50 BRNE NE50 LDI REG2,46 STS DOBA_TLAC,REG2 SBRS REG,1 RJMP NA_TLAC1_D SBRS REG,2 RJMP NA_TLAC2_D SBRS REG,3 RJMP NA_TLAC3_D SBRS REG,4 RJMP NA_TLAC4_D SBRS REG,5 RJMP NA_TLAC5_D RJMP NE50 NA_TLAC1_D: RCALL TLAC1_D RJMP NE50 NA_TLAC2_D: RCALL TLAC2_D RJMP NE50 NA_TLAC3_D: RCALL TLAC3_D RJMP NE50 NA_TLAC4_D: RCALL TLAC4_D RJMP NE50 NA_TLAC5_D: RCALL TLAC5_D NE50: RET ; "doleva" TLAC1: LDI REG,0 CP POSUN,REG BREQ DOLEVA_NE DEC POSUN DOLEVA_NE: RET ; "doprava" TLAC2: LDI REG,24 CP POSUN,REG BRSH DOPRAVA_NE INC POSUN DOPRAVA_NE: RET ; "-" TLAC3: LDS REG,ZAKLADNA CPI REG,1 BRLO MINUS_NE DEC REG STS ZAKLADNA,REG RCALL SMAZAT RCALL OBNOV_ZAKL MINUS_NE: RET ; "+" TLAC4: LDS REG,ZAKLADNA CPI REG,25 BRSH PLUS_NE INC REG STS ZAKLADNA,REG RCALL SMAZAT RCALL OBNOV_ZAKL PLUS_NE: RET TLAC5: LDI OPAKOVAC,0 RCALL SMAZAT RCALL OBNOV_ZAKL RET TLAC1_D: RJMP TLAC1 RET TLAC2_D: RJMP TLAC2 RET TLAC3_D: RJMP TLAC3 RET TLAC4_D: RJMP TLAC4 RET TLAC5_D: LDI OPAKOVAC,1 RET SMAZAT: LDI YH,0x01 LDI YL,0x00 SER REG SMAZAT1: ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG ST Y+,REG LDI REG2,0x04 CPI YL,0xBF CPC YH,REG2 BRLO SMAZAT1 LDI YH,0x01 LDI YL,0x00 RET ;Zapne cekani na vnejsi spusteni jednoraz. mereni CEKEJ_VNEJSI: LDI REG,0b00000100 ;Povoli preruseni STS PCMSK2,REG RET ;Vnejsi spusteni VNEJSI_SPUST: LDI REG,0b00000000 ;Zakaze dalsi preruseni STS PCMSK2,REG RCALL OBNOV_ZAKL1 ;spusti jednorazove mereni RETI OBNOV_ZAKL: CPI OPAKOVAC,1 BREQ OBNOV_ZAKL1 LDI REG,0b00001000 STS TCCR1B,REG IN REG,VSTUPY SBRS REG,2 RJMP CEKEJ_VNEJSI OBNOV_ZAKL1: CLR ZAKAZ LDI DELITEL,1 LDI YH,0x01 LDI YL,0x00 LDS REG,ZAKLADNA LDI ZL,LOW(ZAKL_SKOK) LDI ZH,HIGH(ZAKL_SKOK) ADD ZL,REG ADC ZH,NULA IJMP ZAKL_SKOK: RJMP ZAKL0 RJMP ZAKL1 RJMP ZAKL2 RJMP ZAKL3 RJMP ZAKL4 RJMP ZAKL5 RJMP ZAKL6 RJMP ZAKL7 RJMP ZAKL8 RJMP ZAKL9 RJMP ZAKL10 RJMP ZAKL11 RJMP ZAKL12 RJMP ZAKL13 RJMP ZAKL14 RJMP ZAKL15 RJMP ZAKL16 RJMP ZAKL17 RJMP ZAKL18 RJMP ZAKL19 RJMP ZAKL20 RJMP ZAKL21 RJMP ZAKL22 RJMP ZAKL23 RJMP ZAKL24 RJMP ZAKL25 ; 50us/div ZAKL0: LDI REG,0b10100010 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,0 STS OCR1AH,REG LDI REG,32 STS OCR1AL,REG MOV ZAKAZ,POVOLENI RJMP KONEC_ZAKL ; 100us/div ZAKL1: LDI REG,0b10100011 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,0 STS OCR1AH,REG LDI REG,65 STS OCR1AL,REG MOV ZAKAZ,POVOLENI RJMP KONEC_ZAKL ; 200us/div ZAKL2: LDI REG,0b10100011 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,0 STS OCR1AH,REG LDI REG,132 STS OCR1AL,REG MOV ZAKAZ,POVOLENI RJMP KONEC_ZAKL ; 500us/div ZAKL3: LDI REG,0b10100100 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,1 STS OCR1AH,REG LDI REG,76 STS OCR1AL,REG MOV ZAKAZ,POVOLENI RJMP KONEC_ZAKL ; 1ms/div ZAKL4: LDI REG,0b10100100 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,2 STS OCR1AH,REG LDI REG,154 STS OCR1AL,REG MOV ZAKAZ,POVOLENI RJMP KONEC_ZAKL ; 2ms/div ZAKL5: LDI REG,0b10100101 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,5 STS OCR1AH,REG LDI REG,52 STS OCR1AL,REG RJMP KONEC_ZAKL ; 5ms/div ZAKL6: LDI REG,0b10100110 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,13 STS OCR1AH,REG LDI REG,4 STS OCR1AL,REG RJMP KONEC_ZAKL ; 10ms/div ZAKL7: LDI REG,0b10100110 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,26 STS OCR1AH,REG LDI REG,10 STS OCR1AL,REG RJMP KONEC_ZAKL ; 20ms/div ZAKL8: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,52 STS OCR1AH,REG LDI REG,20 STS OCR1AL,REG RJMP KONEC_ZAKL ; 50ms/div ZAKL9: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001001 STS TCCR1B,REG LDI REG,130 STS OCR1AH,REG LDI REG,52 STS OCR1AL,REG RJMP KONEC_ZAKL ; 100ms/div ZAKL10: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001010 STS TCCR1B,REG LDI REG,32 STS OCR1AH,REG LDI REG,140 STS OCR1AL,REG RJMP KONEC_ZAKL ; 200ms/div ZAKL11: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001010 STS TCCR1B,REG LDI REG,65 STS OCR1AH,REG LDI REG,26 STS OCR1AL,REG RJMP KONEC_ZAKL ; 500ms/div ZAKL12: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001010 STS TCCR1B,REG LDI REG,162 STS OCR1AH,REG LDI REG,193 STS OCR1AL,REG RJMP KONEC_ZAKL ; 1s/div ZAKL13: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001011 STS TCCR1B,REG LDI REG,40 STS OCR1AH,REG LDI REG,176 STS OCR1AL,REG RJMP KONEC_ZAKL ; 2s/div ZAKL14: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001011 STS TCCR1B,REG LDI REG,81 STS OCR1AH,REG LDI REG,96 STS OCR1AL,REG RJMP KONEC_ZAKL ; 5s/div ZAKL15: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001011 STS TCCR1B,REG LDI REG,203 STS OCR1AH,REG LDI REG,114 STS OCR1AL,REG RJMP KONEC_ZAKL ; 10s/div ZAKL16: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001100 STS TCCR1B,REG LDI REG,101 STS OCR1AH,REG LDI REG,185 STS OCR1AL,REG RJMP KONEC_ZAKL ; 20s/div ZAKL17: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001100 STS TCCR1B,REG LDI REG,203 STS OCR1AH,REG LDI REG,114 STS OCR1AL,REG RJMP KONEC_ZAKL ; 50s/div ZAKL18: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,127 STS OCR1AH,REG LDI REG,39 STS OCR1AL,REG RJMP KONEC_ZAKL ; 100s/div ZAKL19: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG RJMP KONEC_ZAKL ; 5min/div ZAKL20: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG LDI DELITEL,3 RJMP KONEC_ZAKL ; 10min/div ZAKL21: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG LDI DELITEL,6 RJMP KONEC_ZAKL ; 30min/div ZAKL22: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG LDI DELITEL,18 RJMP KONEC_ZAKL ; 1h/div ZAKL23: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG LDI DELITEL,36 RJMP KONEC_ZAKL ; 3h/div ZAKL24: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG LDI DELITEL,108 RJMP KONEC_ZAKL ; 6h/div ZAKL25: LDI REG,0b10100111 STS ADCSRA,REG LDI REG,0b00001101 STS TCCR1B,REG LDI REG,254 STS OCR1AH,REG LDI REG,79 STS OCR1AL,REG LDI DELITEL,216 RJMP KONEC_ZAKL KONEC_ZAKL: STS TCNT1H,NULA STS TCNT1L,NULA MOV DELIC,DELITEL RET OSD: MOV RADEK_OSD,RADEKL LDI REG,36 SUB RADEK_OSD,REG LDI REG,75 ;nastavi odstup OSD zleva (Ano, prasarna) ZPOZDI4: DEC REG BRNE ZPOZDI4 RCALL POSUVNIK LDS REG,ZAKLADNA LDI ZL,LOW(OSD_SKOK) LDI ZH,HIGH(OSD_SKOK) ADD ZL,REG ADC ZH,NULA IJMP OSD_SKOK: RJMP OSD0 RJMP OSD1 RJMP OSD2 RJMP OSD3 RJMP OSD4 RJMP OSD5 RJMP OSD6 RJMP OSD7 RJMP OSD8 RJMP OSD9 RJMP OSD10 RJMP OSD11 RJMP OSD12 RJMP OSD13 RJMP OSD14 RJMP OSD15 RJMP OSD16 RJMP OSD17 RJMP OSD18 RJMP OSD19 RJMP OSD20 RJMP OSD21 RJMP OSD22 RJMP OSD23 RJMP OSD24 RJMP OSD25 OSD0: RCALL ZOBRAZ_5 RCALL ZOBRAZ_0 RCALL ZOBRAZ_U RCALL ZOBRAZ_S RJMP KONEC_OSD OSD1: RCALL ZOBRAZ_1 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_U RCALL ZOBRAZ_S RJMP KONEC_OSD OSD2: RCALL ZOBRAZ_2 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_U RCALL ZOBRAZ_S RJMP KONEC_OSD OSD3: RCALL ZOBRAZ_5 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_U RCALL ZOBRAZ_S RJMP KONEC_OSD OSD4: RCALL ZOBRAZ_1 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD5: RCALL ZOBRAZ_2 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD6: RCALL ZOBRAZ_5 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD7: RCALL ZOBRAZ_1 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD8: RCALL ZOBRAZ_2 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD9: RCALL ZOBRAZ_5 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD10: RCALL ZOBRAZ_1 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD11: RCALL ZOBRAZ_2 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD12: RCALL ZOBRAZ_5 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_S RJMP KONEC_OSD OSD13: RCALL ZOBRAZ_1 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD14: RCALL ZOBRAZ_2 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD15: RCALL ZOBRAZ_5 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD16: RCALL ZOBRAZ_1 RCALL ZOBRAZ_0 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD17: RCALL ZOBRAZ_2 RCALL ZOBRAZ_0 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD18: RCALL ZOBRAZ_5 RCALL ZOBRAZ_0 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD19: RCALL ZOBRAZ_1 RCALL ZOBRAZ_0 RCALL ZOBRAZ_0 RCALL ZOBRAZ_S RJMP KONEC_OSD OSD20: RCALL ZOBRAZ_5 RCALL ZOBRAZ_M RCALL ZOBRAZ_I RCALL ZOBRAZ_N RJMP KONEC_OSD OSD21: RCALL ZOBRAZ_1 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_I RCALL ZOBRAZ_N RJMP KONEC_OSD OSD22: RCALL ZOBRAZ_3 RCALL ZOBRAZ_0 RCALL ZOBRAZ_M RCALL ZOBRAZ_I RCALL ZOBRAZ_N RJMP KONEC_OSD OSD23: RCALL ZOBRAZ_1 RCALL ZOBRAZ_H RJMP KONEC_OSD OSD24: RCALL ZOBRAZ_3 RCALL ZOBRAZ_H RJMP KONEC_OSD OSD25: RCALL ZOBRAZ_6 RCALL ZOBRAZ_H RJMP KONEC_OSD KONEC_OSD: RCALL ZOBRAZ_LOM RCALL ZOBRAZ_D RCALL ZOBRAZ_I RCALL ZOBRAZ_V CPI OPAKOVAC,1 BRNE ZOBR_OPAK_NE RCALL ZOBRAZ_OPAKOVAC RJMP KONEC_SYMBOLU ZOBR_OPAK_NE: LDS REG,TCCR1B ;zjisti stav citace CPI REG,0b00001000 ;je-li vypnut, nezobrazi sipku BREQ SIPKA_NE RCALL ZOBRAZ_SIPKA RJMP KONEC_SYMBOLU SIPKA_NE: LDS REG,PCMSK2 ;zjisti stav PCINT CPI REG,0b00000100 ;je-li vypnut, nezobrazi sipku BRNE VNEJSI_NE RCALL ZOBRAZ_VNEJSI RJMP KONEC_SYMBOLU VNEJSI_NE: KONEC_SYMBOLU: RET POZICE: ;ukazatel pozice skenování MOVW REG,YL ;YL do REG, YH do REG2 SUBI REG2,1 LSR REG2 ROR REG LSR REG2 ROR REG LSR REG2 ROR REG LSR REG2 ROR REG LSR REG2 ROR REG CPI YL,0x00 CPC YH,JEDNA BRNE POZICE00NE SER REG POZICE00NE: CPI REG,255 BRNE POZICE_NE255 NOP NOP NOP NOP POZICE_NE255: CPI REG,0 BRNE POZICE_NE0 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE0: CPI REG,1 BRNE POZICE_NE1 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE1: CPI REG,2 BRNE POZICE_NE2 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE2: CPI REG,3 BRNE POZICE_NE3 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE3: CPI REG,4 BRNE POZICE_NE4 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE4: NOP CPI REG,5 BRNE POZICE_NE5 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE5: CPI REG,6 BRNE POZICE_NE6 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE6: CPI REG,7 BRNE POZICE_NE7 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE7: CPI REG,8 BRNE POZICE_NE8 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE8: CPI REG,9 BRNE POZICE_NE9 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE9: NOP CPI REG,10 BRNE POZICE_NE10 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE10: CPI REG,11 BRNE POZICE_NE11 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE11: CPI REG,12 BRNE POZICE_NE12 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE12: CPI REG,13 BRNE POZICE_NE13 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE13: CPI REG,14 BRNE POZICE_NE14 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE14: NOP CPI REG,15 BRNE POZICE_NE15 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE15: CPI REG,16 BRNE POZICE_NE16 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE16: CPI REG,17 BRNE POZICE_NE17 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE17: CPI REG,18 BRNE POZICE_NE18 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE18: CPI REG,19 BRNE POZICE_NE19 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE19: NOP CPI REG,20 BRNE POZICE_NE20 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE20: CPI REG,21 BRNE POZICE_NE21 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE21: CPI REG,22 BRNE POZICE_NE22 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE22: CPI REG,23 BRNE POZICE_NE23 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE23: CPI REG,24 BRNE POZICE_NE24 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE24: NOP CPI REG,25 BRNE POZICE_NE25 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE25: CPI REG,26 BRNE POZICE_NE26 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE26: CPI REG,27 BRNE POZICE_NE27 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE27: CPI REG,28 BRNE POZICE_NE28 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE28: CPI REG,29 BRNE POZICE_NE29 OUT PORT,BILA NOP NOP OUT PORT,CERNA POZICE_NE29: NOP NOP NOP RJMP POSUVNIK_K POZICE1: NOP NOP NOP POZICE2: RJMP POZICE POSUVNIK: LDI REG,5 CP REG,RADEK_OSD BREQ POZICE1 LDI REG,6 CP REG,RADEK_OSD BREQ POZICE2 LDI REG,3 ;cekadlo ZPOZDI7: DEC REG BRNE ZPOZDI7 NOP NOP LDI REG,0 CP REG,RADEK_OSD BREQ POSUV_LINKA1 LDI REG,4 CP REG,RADEK_OSD BREQ POSUV_LINKA2 RJMP POSUVNIK_ANO POSUV_LINKA1: NOP NOP NOP POSUV_LINKA2: NOP NOP NOP OUT PORT,SEDA NOP NOP LDI REG,33 ;nastavi sirku ramecku posuvniku ZPOZDI5: DEC REG BRNE ZPOZDI5 RJMP POSUVNIK_K POSUVNIK_ANO: CLR REG2 CPI POSUN,0 OUT PORT,SEDA BRNE POSUVNIK0 RCALL POSUVNIK_VYPLN POSUVNIK0: CPI POSUN,1 BRNE POSUVNIK1 RCALL POSUVNIK_VYPLN POSUVNIK1: CPI POSUN,2 BRNE POSUVNIK2 RCALL POSUVNIK_VYPLN POSUVNIK2: CPI POSUN,3 BRNE POSUVNIK3 RCALL POSUVNIK_VYPLN POSUVNIK3: CPI POSUN,4 BRNE POSUVNIK4 RCALL POSUVNIK_VYPLN POSUVNIK4: CPI POSUN,5 BRNE POSUVNIK5 RCALL POSUVNIK_VYPLN POSUVNIK5: CPI POSUN,6 BRNE POSUVNIK6 RCALL POSUVNIK_VYPLN POSUVNIK6: CPI POSUN,7 BRNE POSUVNIK7 RCALL POSUVNIK_VYPLN POSUVNIK7: CPI POSUN,8 BRNE POSUVNIK8 RCALL POSUVNIK_VYPLN POSUVNIK8: CPI POSUN,9 BRNE POSUVNIK9 RCALL POSUVNIK_VYPLN POSUVNIK9: CPI POSUN,10 BRNE POSUVNIK10 RCALL POSUVNIK_VYPLN POSUVNIK10: CPI POSUN,11 BRNE POSUVNIK11 RCALL POSUVNIK_VYPLN POSUVNIK11: CPI POSUN,12 BRNE POSUVNIK12 RCALL POSUVNIK_VYPLN POSUVNIK12: CPI POSUN,13 BRNE POSUVNIK13 RCALL POSUVNIK_VYPLN POSUVNIK13: CPI POSUN,14 BRNE POSUVNIK14 RCALL POSUVNIK_VYPLN POSUVNIK14: CPI POSUN,15 BRNE POSUVNIK15 RCALL POSUVNIK_VYPLN POSUVNIK15: CPI POSUN,16 BRNE POSUVNIK16 RCALL POSUVNIK_VYPLN POSUVNIK16: CPI POSUN,17 BRNE POSUVNIK17 RCALL POSUVNIK_VYPLN POSUVNIK17: CPI POSUN,18 BRNE POSUVNIK18 RCALL POSUVNIK_VYPLN POSUVNIK18: CPI POSUN,19 BRNE POSUVNIK19 RCALL POSUVNIK_VYPLN POSUVNIK19: CPI POSUN,20 BRNE POSUVNIK20 RCALL POSUVNIK_VYPLN POSUVNIK20: CPI POSUN,21 BRNE POSUVNIK21 RCALL POSUVNIK_VYPLN POSUVNIK21: CPI POSUN,22 BRNE POSUVNIK22 RCALL POSUVNIK_VYPLN POSUVNIK22: CPI POSUN,23 BRNE POSUVNIK23 RCALL POSUVNIK_VYPLN POSUVNIK23: CPI POSUN,24 BRNE POSUVNIK24 RCALL POSUVNIK_VYPLN POSUVNIK24: POSUVNIK_K: OUT PORT,CERNA RET POSUVNIK_VYPLN: OUT PORT,CERNA LDI REG,7 ;nastavi sirku vyplne posuvniku ZPOZDI6: DEC REG BRNE ZPOZDI6 OUT PORT,SEDA RET ZOBRAZ_0: LDI ZH,HIGH(2*Z_0) LDI ZL,LOW(2*Z_0) RJMP ZOBRAZ ZOBRAZ_1: LDI ZH,HIGH(2*Z_1) LDI ZL,LOW(2*Z_1) RJMP ZOBRAZ ZOBRAZ_2: LDI ZH,HIGH(2*Z_2) LDI ZL,LOW(2*Z_2) RJMP ZOBRAZ ZOBRAZ_3: LDI ZH,HIGH(2*Z_3) LDI ZL,LOW(2*Z_3) RJMP ZOBRAZ ZOBRAZ_5: LDI ZH,HIGH(2*Z_5) LDI ZL,LOW(2*Z_5) RJMP ZOBRAZ ZOBRAZ_6: LDI ZH,HIGH(2*Z_6) LDI ZL,LOW(2*Z_6) RJMP ZOBRAZ ZOBRAZ_U: LDI ZH,HIGH(2*Z_U) LDI ZL,LOW(2*Z_U) RJMP ZOBRAZ ZOBRAZ_M: LDI ZH,HIGH(2*Z_M) LDI ZL,LOW(2*Z_M) RJMP ZOBRAZ ZOBRAZ_S: LDI ZH,HIGH(2*Z_S) LDI ZL,LOW(2*Z_S) RJMP ZOBRAZ ZOBRAZ_H: LDI ZH,HIGH(2*Z_H) LDI ZL,LOW(2*Z_H) RJMP ZOBRAZ ZOBRAZ_D: LDI ZH,HIGH(2*Z_D) LDI ZL,LOW(2*Z_D) RJMP ZOBRAZ ZOBRAZ_I: LDI ZH,HIGH(2*Z_I) LDI ZL,LOW(2*Z_I) RJMP ZOBRAZ ZOBRAZ_V: LDI ZH,HIGH(2*Z_V) LDI ZL,LOW(2*Z_V) RJMP ZOBRAZ ZOBRAZ_N: LDI ZH,HIGH(2*Z_N) LDI ZL,LOW(2*Z_N) RJMP ZOBRAZ ZOBRAZ_LOM: LDI ZH,HIGH(2*Z_LOM) LDI ZL,LOW(2*Z_LOM) RJMP ZOBRAZ ZOBRAZ_SIPKA: LDI ZH,HIGH(2*Z_SIPKA) LDI ZL,LOW(2*Z_SIPKA) RJMP ZOBRAZ ZOBRAZ_OPAKOVAC: LDI ZH,HIGH(2*Z_OPAKOVAC) LDI ZL,LOW(2*Z_OPAKOVAC) RJMP ZOBRAZ ZOBRAZ_VNEJSI: LDI ZH,HIGH(2*Z_VNEJSI) LDI ZL,LOW(2*Z_VNEJSI) RJMP ZOBRAZ ZOBRAZ: ADD ZL,RADEK_OSD ADC ZH,NULA LPM REG,Z SBRS REG,4 OUT PORT,CERNA SBRC REG,4 OUT PORT,BILA NOP NOP SBRS REG,3 OUT PORT,CERNA SBRC REG,3 OUT PORT,BILA NOP NOP SBRS REG,2 OUT PORT,CERNA SBRC REG,2 OUT PORT,BILA NOP NOP SBRS REG,1 OUT PORT,CERNA SBRC REG,1 OUT PORT,BILA NOP NOP SBRS REG,0 OUT PORT,CERNA SBRC REG,0 OUT PORT,BILA NOP NOP NOP OUT PORT,CERNA RET Z_0: .DB 0b01100,0b10010 .DB 0b10010,0b10010 .DB 0b10010,0b10010 .DB 0b01100,0 Z_1: .DB 0b00010,0b00110 .DB 0b01010,0b00010 .DB 0b00010,0b00010 .DB 0b00010,0 Z_2: .DB 0b01100,0b10010 .DB 0b00010,0b00100 .DB 0b00100,0b01000 .DB 0b11110,0 Z_3: .DB 0b01100,0b10010 .DB 0b00010,0b00100 .DB 0b00010,0b10010 .DB 0b01100,0 Z_5: .DB 0b11110,0b10000 .DB 0b11100,0b00010 .DB 0b00010,0b10010 .DB 0b01100,0 Z_6: .DB 0b01100,0b10010 .DB 0b10000,0b11100 .DB 0b10010,0b10010 .DB 0b01100,0 Z_U: .DB 0b00000,0b00000 .DB 0b10010,0b10010 .DB 0b10010,0b10010 .DB 0b01110,0 Z_M: .DB 0b00000,0b00000 .DB 0b11110,0b10101 .DB 0b10101,0b10101 .DB 0b10101,0 Z_S: .DB 0b00000,0b00000 .DB 0b01110,0b10000 .DB 0b01100,0b00010 .DB 0b11100,0 Z_H: .DB 0b10000,0b10000 .DB 0b11100,0b10010 .DB 0b10010,0b10010 .DB 0b10010,0 Z_D: .DB 0b00010,0b00010 .DB 0b01110,0b10010 .DB 0b10010,0b10010 .DB 0b01110,0 Z_I: .DB 0b00100,0b00000 .DB 0b01100,0b00100 .DB 0b00100,0b00100 .DB 0b01110,0 Z_V: .DB 0b00000,0b00000 .DB 0b10001,0b10001 .DB 0b01010,0b01010 .DB 0b00100,0 Z_N: .DB 0b00000,0b00000 .DB 0b11100,0b10010 .DB 0b10010,0b10010 .DB 0b10010,0 Z_LOM: .DB 0b00010,0b00010 .DB 0b00100,0b00100 .DB 0b00100,0b01000 .DB 0b01000,0 Z_SIPKA: .DB 0b00000,0b00100 .DB 0b00010,0b11111 .DB 0b00010,0b00100 .DB 0b00000,0 Z_OPAKOVAC: .DB 0b10000,0b11000 .DB 0b11100,0b11110 .DB 0b11100,0b11000 .DB 0b10000,0 Z_VNEJSI: .DB 0b11111,0b10001 .DB 0b10111,0b10011 .DB 0b10111,0b10001 .DB 0b11111,0