; Prijimac dalkoveho ovladani ATtiny24 / 24V / 24A ; 1 MHz ; PA - povely, PB1:0 - preklapeci, umoznuje vice tlacitek zaroven ; DANYK ; http://danyk.cz/avr_do3.html .NOLIST .INCLUDE "tn24def.inc" .LIST .DEF NULA=R15 ;NULA .DEF REG=R16 ;pracovni registr .DEF REG2=R17 ;pracovni registr 2 .DEF STAV=R18 ;registr stavu vstupu .DEF VYST1=R19 ;registr vystupu .DEF VYST2=R20 ;registr vystupu 2 .DEF VYST3=R21 ;registr vystupu 3 .DEF PRODLEVA8=R22 ;prodleva do dalsi reakce .DEF KOPIE1=R23 ;kopie vystupu .DEF KOPIE2=R24 ;kopie vystupu 2 .DEF KOPIE3=R25 ;kopie vystupu 3 .DEF BITY=R26 ;pocitadlo bitu (impulzu) .DEF PRODLEVA9=R27 ;prodleva do dalsi reakce .DEF PRETREG=R28 ;pretekani C/C0 .EQU SMER=DDRA ;rizeni smeru .EQU PORT=PORTA ;port .EQU SMER2=DDRB ;rizeni smeru .EQU PORT2=PORTB ;port .EQU PINY2=PINB ;vstup .CSEG ;kodovy segment .ORG 0 RJMP START .ORG PCI1addr RJMP SIGNAL ;.ORG OC0Aaddr .ORG OVF0addr RJMP PRETEKL START: LDI REG,LOW(RAMEND) OUT SPL,REG ;nastavi port 1 LDI REG,0b11111111 OUT SMER,REG LDI REG,0b00000000 OUT PORT,REG ;nastavi port 2 LDI REG,0b011 OUT SMER2,REG LDI REG,0b100 OUT PORT2,REG ; NASTAVENI CASOVACU LDI REG,0b00000010 ; nastavi citac na nulovani pri dosazeni porovnavane... OUT TCCR0A,REG ; ...hodnoty (tzv. CTC), OC0 nevyuzit LDI REG,0b00000011 ; preddeleni 64 OUT TCCR0B,REG ; LDI REG,255 ; nastavi porovnavanou hodnotu OUT OCR0A,REG ; LDI REG,0b00000010 ; povoli preruseni OCIE0A OUT TIMSK0,REG ; LDI REG,0b00100000 ; povoli preruseni PCINT OUT GIMSK,REG ; LDI REG,0b00000100 ; povoli preruseni PCINT OUT PCMSK1,REG ; LDI REG,0b00110000 ;povoli uspani (sleep) a nastavi mod power down OUT MCUCR,REG ;vypne analog. komparator - neni nikdy vyuzit (setri energii) LDI REG,0b10000000 OUT ACSR,REG ;vypne dalsi veci: citace, USI, USART (setri energii) LDI REG,0b00001011 OUT PRR,REG CLR PRODLEVA8 CLR PRODLEVA9 CLR PRETREG CLR BITY CLR NULA SEI SMYCKA: SLEEP RJMP SMYCKA SIGNAL: IN STAV,PINY2 COM STAV ;invertuje vstupni signal (prijimac v klidu log1) ;Sestupna hrana SBRC STAV,2 RJMP NE_10 CLR PRETREG OUT TCNT0,PRETREG NE_10: ;Nabezna hrana SBRS STAV,2 RJMP NE_01 IN REG,TCNT0 CPI REG,3 ;Prah delky zakmitu / (kratkeho) pulzu CPC PRETREG,NULA BRLO ZAKMIT CPI REG,53 ;Prah delky dlouhe mezery / mezery mezi snimky CPC PRETREG,NULA BRLO NE_KONEC_SNIMKU RCALL KONTROLA RJMP HOTOVO NE_KONEC_SNIMKU: LSL VYST1 ROL VYST2 ROL VYST3 INC BITY IN REG,TCNT0 CPI REG,13 ;Prah kratke / dlouhe mezery CPC PRETREG,NULA BRLO KRATKA_M INC VYST1 KRATKA_M: ZAKMIT: NE_01: HOTOVO: LDI REG,0b00100000 ;povoli uspani (sleep) a nastavi mod idle OUT MCUCR,REG RETI PRETEKL: INC PRETREG CPI PRETREG,4 BRSH VYPRSEL RETI VYPRSEL: RCALL KONTROLA CLR PRODLEVA8 CLR PRODLEVA9 LDI REG,0b00000000 OUT PORT,REG CLR PRETREG OUT TCNT0,PRETREG LDI REG,0b00110000 ;povoli uspani (sleep) a nastavi mod power down OUT MCUCR,REG RETI ;kontrola spravnosti prenosu KONTROLA: CPI BITY,20 ;nesedi-li pocet bitu, zahodi kod BRNE SPATNE_BITY RCALL PRIJEM CLR BITY RET SPATNE_BITY: CLR VYST1 CLR VYST2 CLR VYST3 CLR BITY RET PRIJEM: MOV KOPIE1,VYST1 MOVW KOPIE2,VYST2 MOV REG,KOPIE2 COM KOPIE2 COM KOPIE1 ANDI KOPIE2,0b00000011 LSR KOPIE3 ROR REG LSR KOPIE3 ROR REG ANDI KOPIE3,0b00000011 CP REG,KOPIE1 CPC KOPIE3,KOPIE2 BREQ SHODA RJMP KONEC_TL SHODA: ; Preklapeci vystup 8 SBRS KOPIE2,0 RJMP TL8NE CPI PRODLEVA8,0 BRNE TL8CEKA IN REG,PORT2 SBRC REG,0 CBI PORT2,0 SBRS REG,0 SBI PORT2,0 TL8CEKA: LDI PRODLEVA8,2 TL8NE: ; Preklapeci vystup 9 SBRS KOPIE2,1 RJMP TL9NE CPI PRODLEVA9,0 BRNE TL9CEKA IN REG,PORT2 SBRC REG,1 CBI PORT2,1 SBRS REG,1 SBI PORT2,1 TL9CEKA: LDI PRODLEVA9,2 TL9NE: CLR REG CPSE REG,PRODLEVA8 DEC PRODLEVA8 CPSE REG,PRODLEVA9 DEC PRODLEVA9 OUT PORT,KOPIE1 KONEC_TL: RET