; Prijimac 16-kanaloveho DO ; kodovani delkou mezery. ; 1 MHz ATTiny2313A ; vytvoril: DANYK ; http://danyk.cz .NOLIST .INCLUDE "tn2313Adef.inc" .LIST .DEF REG=R16 ;pracovni registr .DEF REG2=R17 ;pracovni registr 2 .DEF STAV=R18 ;registr stavu vstupu .DEF VYST=R19 ;registr vystupu .DEF VYST_2=R20 ;registr predchoziho vystupu .DEF PRODLEVA=R21 ;prodleva do dalsi reakce .DEF BITY=R22 ;pocitadlo bitu .EQU SMER=DDRB ;rizeni smeru .EQU PORT=PORTB ;port .EQU SMER2=DDRD ;rizeni smeru .EQU PORT2=PORTD ;port .EQU SMER3=DDRA ;rizeni smeru .EQU PORT3=PORTA ;port .EQU PINY3=PINA ;vstupy .CSEG ;kodovy segment .ORG 0 RJMP START .ORG OC0Aaddr RJMP CAS_VYPRSEL .ORG PCIAaddr RJMP SIGNAL START: LDI REG,LOW(RAMEND) OUT SPL,REG ;nastavi port B LDI REG,0b11111111 OUT SMER,REG LDI REG,0b00000000 OUT PORT,REG ;nastavi port D LDI REG,0b01111111 OUT SMER2,REG LDI REG,0b00000000 OUT PORT2,REG ;nastavi port A LDI REG,0b00000001 OUT SMER3,REG LDI REG,0b00000010 OUT PORT3,REG ; NASTAVENI CASOVACU LDI REG,0b00000010 ; nastavi čítač na nulovani pri dosazeni porovnavane... OUT TCCR0A,REG ; ...hodnoty (tzv. CTC), OC0 nevyuzit LDI REG,0b00000011 ; preddeleni 64 OUT TCCR0B,REG ; LDI REG,213 ; nastavi porovnavanou hodnotu OUT OCR0A,REG ; LDI REG,0b00000001 ; povoli preruseni OCIE0A OUT TIMSK,REG ; LDI REG,0b00001000 ; povoli preruseni PCINT1 OUT GIMSK,REG ; LDI REG,0b00000010 ; povoli preruseni PCINT na PA1 (PCINT9) 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 SEI SMYCKA: SLEEP RJMP SMYCKA SIGNAL: IN STAV,PINY3 COM STAV ;invertuje vstupni signal (prijimac v klidu log1) ;Sestupna hrana SBRC STAV,1 RJMP NE_10 LDI REG,0 OUT TCNT0,REG NE_10: ;Nabezna hrana SBRS STAV,1 RJMP NE_01 IN REG,TCNT0 CPI REG,3 ;Prah delky zakmitu / (krátkého) pulzu BRLO ZAKMIT CPI REG,53 ;Prah delky dlouhe mezery / mezery mezi snimky BRLO NE_KONEC_SNIMKU RCALL KONTROLA MOV VYST_2,VYST NE_KONEC_SNIMKU: LSL VYST INC BITY IN REG,TCNT0 CPI REG,13 ;Prah kratke / dlouhe mezery BRLO KRATKA_M INC VYST KRATKA_M: ZAKMIT: NE_01: LDI REG,0b00100000 ;povoli uspani (sleep) a nastavi mod idle OUT MCUCR,REG RETI CAS_VYPRSEL: RCALL KONTROLA CLR VYST SER VYST_2 CLR PRODLEVA LDI REG,0 OUT TCNT0,REG LDI REG,0b00110000 ;povoli uspani (sleep) a nastavi mod power down OUT MCUCR,REG RETI ;kontrola spravnosti prenosu KONTROLA: CPI BITY,9 ;nesedi-li pocet bitu, zahodi kod BRNE SPATNE_BITY CP VYST_2,VYST ;nejsou-li 2 po sobe jdouci kody stejne, nereaguje BRNE RUZNE_KODY RCALL PRIJEM RUZNE_KODY: CLR BITY RET SPATNE_BITY: CLR VYST CLR BITY RET PRIJEM: CPI PRODLEVA,0 BREQ PRODLEVA_JE_0 RJMP KONEC_TL PRODLEVA_JE_0: MOV REG,VYST SWAP REG ANDI REG,0b00001111 MOV REG2,VYST COM REG2 ANDI REG2,0b00001111 CP REG,REG2 BREQ SHODA RJMP KONEC_TL SHODA: CLR REG2 LDI ZL,LOW(SKOK) LDI ZH,HIGH(SKOK) ADD ZL,REG ADC ZH,REG2 IJMP SKOK: RJMP TL0 RJMP TL1 RJMP TL2 RJMP TL3 RJMP TL4 RJMP TL5 RJMP TL6 RJMP TL7 RJMP TL8 RJMP TL9 RJMP TL10 RJMP TL11 RJMP TL12 RJMP TL13 RJMP TL14 RJMP TL15 TL0: IN REG,PORT SBRC REG,0 CBI PORT,0 SBRS REG,0 SBI PORT,0 RJMP KONEC_TL TL1: IN REG,PORT SBRC REG,1 CBI PORT,1 SBRS REG,1 SBI PORT,1 RJMP KONEC_TL TL2: IN REG,PORT SBRC REG,2 CBI PORT,2 SBRS REG,2 SBI PORT,2 RJMP KONEC_TL TL3: IN REG,PORT SBRC REG,3 CBI PORT,3 SBRS REG,3 SBI PORT,3 RJMP KONEC_TL TL4: IN REG,PORT SBRC REG,4 CBI PORT,4 SBRS REG,4 SBI PORT,4 RJMP KONEC_TL TL5: IN REG,PORT SBRC REG,5 CBI PORT,5 SBRS REG,5 SBI PORT,5 RJMP KONEC_TL TL6: IN REG,PORT SBRC REG,6 CBI PORT,6 SBRS REG,6 SBI PORT,6 RJMP KONEC_TL TL7: IN REG,PORT SBRC REG,7 CBI PORT,7 SBRS REG,7 SBI PORT,7 RJMP KONEC_TL TL8: IN REG,PORT2 SBRC REG,0 CBI PORT2,0 SBRS REG,0 SBI PORT2,0 RJMP KONEC_TL TL9: IN REG,PORT2 SBRC REG,1 CBI PORT2,1 SBRS REG,1 SBI PORT2,1 RJMP KONEC_TL TL10: IN REG,PORT2 SBRC REG,2 CBI PORT2,2 SBRS REG,2 SBI PORT2,2 RJMP KONEC_TL TL11: IN REG,PORT2 SBRC REG,3 CBI PORT2,3 SBRS REG,3 SBI PORT2,3 RJMP KONEC_TL TL12: IN REG,PORT2 SBRC REG,4 CBI PORT2,4 SBRS REG,4 SBI PORT2,4 RJMP KONEC_TL TL13: IN REG,PORT2 SBRC REG,5 CBI PORT2,5 SBRS REG,5 SBI PORT2,5 RJMP KONEC_TL TL14: IN REG,PORT2 SBRC REG,6 CBI PORT2,6 SBRS REG,6 SBI PORT2,6 RJMP KONEC_TL TL15: IN REG,PORT3 SBRC REG,0 CBI PORT3,0 SBRS REG,0 SBI PORT3,0 RJMP KONEC_TL KONEC_TL: LDI PRODLEVA,1 RET