;*******************************************************************************
;*  Létrehozva:20                                                     *
;*******************************************************************************
	
	;Távirányító családi kódja 0xD5,0x45
	;Gomb "A"  0x30
	;Gomb "B"  0x0C
	;Gomb "C"  0xC0
	;Gomb "D"  xX03
	;Reset min. 12 msec. Adatvonalba belenézni H szin megjelenése után 
	;900 usec-el. 3 byte adat érkezik.
	;Lezárás min 50 msec

	LIST	P=PIC18F14K22	; lista megadása
	INCLUDE	<P18F14K22.INC>	; includde fájlok megadása
	RADIX	hex		; alapértelmezet számrendszer megadása

	CONFIG	FOSC = IRC	; bels? oszcillátor
	CONFIG	WDTEN = OFF 	; watchdog bekapcsolása
	CONFIG	LVP = OFF	; alacsony feszültség? programozás kikapcsolva
	CONFIG  MCLRE = OFF     ; RA3 bemenetkénti használatra állítása


    CBLOCK	0x0001
    ADATBYTE
    CIKLUS
    CIKLUS1
    CIKLUS2
    CIKLUS3
    CIKLUS4
    CIKLUS5
    BITEK
    BYTE_1
    BYTE_2
    BYTE_3
    MIT
    HOVA
    SZORZO
    TABLA
    MB
    AUT_KIKAP :2
    ENDC

#define VALTAS  MB,1
#define JEL_FELDOLGOZVA  MB,3        
    
    
    org	    0x0000		; program memória kezd? címe
    nop
    CALL    INICIALIZALAS 
    CLRF    MB
    CLRF    TABLA
    CLRF    SZORZO    
    CLRF    CIKLUS1
;-------------------------------------------------------------------------------    
MAIN
    CALL    SZUNET
    CLRF    CIKLUS2
    MOVFF   TABLA,CIKLUS3
MAIN2  
    MOVF    SZORZO,W
    MULWF   CIKLUS3
    CLRF    TBLPTRU
    MOVLW   HIGH FENY
    MOVWF   TBLPTRH
    MOVLW   LOW FENY
    MOVWF   TBLPTRL
    MOVF    PRODL,W
    ADDWF   TBLPTRL
    MOVF    PRODH,W
    ADDWFC  TBLPTRH
    MOVF    CIKLUS2,W
    ADDWF   TBLPTRL
    CLRF    WREG
    ADDWFC  TBLPTRH
    TBLRD*+
    MOVFF   TABLAT,MIT
    INCF    CIKLUS2
    MOVLW   0x20
    CPFSEQ  MIT
    GOTO    MAIN3
    INCF    CIKLUS2
    MOVFF   CIKLUS2,SZORZO
    CLRF    CIKLUS2
    INCF    CIKLUS3
    CALL    TABLA_OLVAS
    CALL    SZUNET
    GOTO    MAIN2
MAIN3
    MOVLW   0x58
    CPFSEQ  MIT
    GOTO    MAIN4
    MOVLW   0xFF
    MOVWF   POSTINC0    
    CALL    TABLA_OLVAS    
    BTFSS   VALTAS
    GOTO    MAIN
    INCF    CIKLUS3
    MOVLW   .25        ;Jelenlegi színskála vége
    CPFSLT  CIKLUS3
    CLRF    CIKLUS3
    MOVFF   CIKLUS3,TABLA
    BCF	    VALTAS
    CLRF    CIKLUS1     
    GOTO    MAIN
MAIN4  
    MOVLW   0x5F
    CPFSEQ  MIT
    GOTO    MAIN5
    CLRF    TABLA   
    GOTO    MAIN
MAIN5    
    CALL    ADAT_BETOLT
    GOTO    MAIN2
SZUNET    
    BCF	    LATC,0
SZU_1    
    BTFSC   PORTB,7
    GOTO    SZU_2
    BTFSS   PIR1,1
    GOTO    $-2
    BCF	    PIR1,1
    INCF    CIKLUS5
    GOTO    SZU_1
SZU_2
    MOVLW   .120
    CPFSGT  CIKLUS5
    GOTO    SZU_3
    BTFSC   JEL_FELDOLGOZVA
    GOTO    SZU_4
    MOVLW   .24
    MOVWF   BITEK
    CLRF    BYTE_1
    CLRF    BYTE_2
    CLRF    BYTE_3
    CLRF    CIKLUS5
VETEL    ;---------Távirányító jelének vétele---------
    INCF    CIKLUS5
    BTG	    LATB,6;--------------
    BTFSS   PIR1,1
    GOTO    $-2
    BCF	    PIR1,1
    MOVLW   .9
    CPFSEQ  CIKLUS5
    GOTO    VETEL
    BCF	    STATUS,C
    RLCF    BYTE_3
    RLCF    BYTE_2
    RLCF    BYTE_1
    BTFSC   PORTB,7
    BSF	    BYTE_3,0
    BTFSC   PORTB,7
    GOTO    $-2
    BTFSS   PORTB,7
    GOTO    $-2
    BCF	    PIR1,1
    CLRF    CIKLUS5
    DECFSZ  BITEK
    GOTO    VETEL
    MOVLW   0xD5
    CPFSEQ  BYTE_1
    GOTO    SZU_3
    MOVLW   0x45
    CPFSEQ  BYTE_2
    GOTO    SZU_3
    MOVLW   0x0C
    CPFSEQ  BYTE_3
    GOTO    VET_0
    BTFSS   PORTA,5
    GOTO    SZU_3
    MOVLW   .28
    MOVWF   TABLA
    BSF	    JEL_FELDOLGOZVA
    CLRF    CIKLUS4
    GOTO    SZU_4
VET_0    
    MOVLW   0x30
    CPFSEQ  BYTE_3
    GOTO    VET_1
    BTFSS   PORTA,5
    GOTO    SZU_3
    BSF	    VALTAS
    BSF	    JEL_FELDOLGOZVA
    CLRF    CIKLUS4
    GOTO    SZU_4
VET_1    
    MOVLW   0xC0
    CPFSEQ  BYTE_3
    GOTO    VET_2
    BTFSS   PORTA,5
    GOTO    SZU_3
    MOVLW   .26
    MOVWF   TABLA
    BSF	    JEL_FELDOLGOZVA
    CLRF    CIKLUS4
    GOTO    SZU_4
VET_2
    MOVLW   0x03
    CPFSEQ  BYTE_3
    GOTO    SZU_3
    BTFSC   PORTA,5
    GOTO    VET_3
    BSF	    LATA,5
    BSF	    JEL_FELDOLGOZVA
    CLRF    CIKLUS4
    BSF	    OSCCON,6
    BSF	    OSCTUNE,6
    MOVLW   B'00000110'
    MOVWF   T2CON
    MOVLW   .99
    MOVWF   PR2
    MOVLW   0x07
    MOVWF   AUT_KIKAP
    MOVLW   0x12
    MOVWF   AUT_KIKAP+1
    GOTO    SZU_4
VET_3
    BCF	    LATA,5
    CLRF    CIKLUS4
    BCF	    OSCCON,6
    BCF	    OSCTUNE,6
    MOVLW   B'00000100'
    MOVWF   T2CON
    MOVLW   .24
    MOVWF   PR2
    GOTO    SZU_4
SZU_3
    CLRF    CIKLUS5
    BTFSS   PORTA,5
    GOTO    SZU_1
SZU_4
    MOVLW   .15
    CPFSGT  CIKLUS4
    GOTO    SZU_5
    BCF	    JEL_FELDOLGOZVA
SZU_5     
    BTFSS   INTCON,2
    GOTO    SZU_1
    BCF	    INTCON,2
    INCF    CIKLUS4
    CLRF    FSR0H
    MOVLW   0x30
    MOVWF   FSR0L
    CLRF    WREG
    DECF    AUT_KIKAP
    SUBWFB  AUT_KIKAP+1 
    BTFSC   STATUS,C
    RETURN
    BCF	    LATA,5
    CLRF    CIKLUS4
    BCF	    OSCCON,6
    BCF	    OSCTUNE,6
    MOVLW   B'00000100'
    MOVWF   T2CON
    MOVLW   .24
    MOVWF   PR2
    RETURN
;----------------------------------Színbeírás-----------------------------------    
ADAT_BETOLT
    MOVLW   0x3A
    CPFSGT  MIT
    GOTO    AB1
    MOVLW   0x07
    SUBWF   MIT,F
AB1 MOVLW   0x30
    SUBWF   MIT,F
    MOVLW   0x4
    MULWF   MIT
    CLRF    TBLPTRU
    MOVLW   HIGH SZINKODOK
    MOVWF   TBLPTRH
    MOVLW   LOW SZINKODOK
    MOVWF   TBLPTRL
    MOVF    PRODL,W
    ADDWF   TBLPTRL
    CLRF    WREG
    ADDWFC  TBLPTRH
    MOVLW   0x3
    MOVWF   CIKLUS
AB2    
    TBLRD*+
    MOVFF   TABLAT,POSTINC0
    DECFSZ  CIKLUS
    GOTO    AB2
    RETURN
;-------------------------------------------------------------------------------
INICIALIZALAS
    CLRF    LATA		; kimeneti portok törlése
    CLRF    LATB					
    CLRF    LATC					
    CLRF    ANSEL
    CLRF    ANSELH
    MOVLW   B'00001000'		; A port
    MOVWF   TRISA
    MOVLW   B'10000000'		; B port kimenet
    MOVWF   TRISB
    MOVLW   B'00000000'		; C port kimenet
    MOVWF   TRISC
    MOVLW   B'00110000'		; oszcillátor frekvenciája <4:6>
    MOVWF   OSCCON		; 111 = 16, 110 = 8, 101 = 4, 100 = 2 MHz 
    CLRF    OSCCON2
    MOVLW   B'00000000'
    MOVWF   OSCTUNE
    BCF	    INTCON2,7    
    MOVLW   B'10000011'
    MOVWF   T0CON
    MOVLW   B'00000100'
    MOVWF   T2CON
    MOVLW   .24
    MOVWF   PR2
    MOVLW   B'00000100'
    MOVWF   WPUA
    MOVLW   B'10000000'
    MOVWF   WPUB
    BCF	    INTCON,2
    RETURN    
;---------------------------12 LED adatainak elküldése--------------------------
TABLA_OLVAS
    CLRF    FSR0H  
    MOVLW   0x30
    MOVWF   FSR0L
T_O    
    MOVFF   POSTINC0,ADATBYTE
    MOVLW   0xFF
    CPFSLT  ADATBYTE
    RETURN
    CALL    KULD_ADAT
    GOTO    T_O
KULD_ADAT
    MOVLW   D'8'
KULD_ADAT_1    
    BSF	    LATC,0
    NOP
    RLCF    ADATBYTE
    BTFSS   STATUS,C
    BCF	    LATC,0
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF	    LATC,0
    NOP
    DECFSZ  WREG
    GOTO    KULD_ADAT_1
    RETURN
;-------------------------------------------------------------------------------  
SZINKODOK
    ;   { Kikapcsolás}>>0
    DB	0x00,0x00,0x00
    ;   {Világos zöld}>>1
    DB	0xB0,0x00,0x15
    ;   {    Zöld    }>>2
    DB	0xB9,0x00,0x07
    ;   { Sötét zöld }>>3 
    DB	0xB9,0x05,0x00
    ;   { Világos kék}>>4
    DB	0x90,0x00,0xC0
    ;   {     Kék    }>>5
    DB	0x30,0x00,0xF0
    ;   { Sötét kék  }>>6
    DB	0x30,0x00,0xFE
    ;   {   H. lila  }>>7
    DB	0x00,0x30,0xC0
    ;   {    Lila    }>>8
    DB	0x00,0x60,0x90
    ;   { Sötét lila }>>9
    DB	0x00,0xF0,0x10
    ;   {Vil.n. sárga}>>A
    DB	0x60,0xF0,0x00
    ;   {  N. sárga  }>>B
    DB	0x15,0xF7,0x00
    ;   {    Piros   }>>C
    DB	0x00,0xFE,0x00
    ;   {    Sárga   }>>D
    DB	0x90,0xC0,0x00
    ;   {    Fehér   }>>E
    DB	0x70,0x70,0x70   
;------------------------------
CIKLUS_BEALLITAS
    
;-------------------------------------------------------------------------------
FENY
    DB	"11111111111111111111111111111111111111111111111111111111111111 "
    DB	"11111111111111111111111111111111111111111111111111111111111111X"	
    DB	"22222222222222222222222222222222222222222222222222222222222222 "
    DB	"22222222222222222222222222222222222222222222222222222222222222X"
    DB	"33333333333333333333333333333333333333333333333333333333333333 "
    DB	"33333333333333333333333333333333333333333333333333333333333333X"
    DB	"44444444444444444444444444444444444444444444444444444444444444 "
    DB	"44444444444444444444444444444444444444444444444444444444444444X"
    DB	"55555555555555555555555555555555555555555555555555555555555555 "
    DB	"55555555555555555555555555555555555555555555555555555555555555X"
    DB	"66666666666666666666666666666666666666666666666666666666666666 "
    DB	"66666666666666666666666666666666666666666666666666666666666666X"
    DB	"77777777777777777777777777777777777777777777777777777777777777 "
    DB	"77777777777777777777777777777777777777777777777777777777777777X"
    DB	"88888888888888888888888888888888888888888888888888888888888888 "
    DB	"88888888888888888888888888888888888888888888888888888888888888X"
    DB	"99999999999999999999999999999999999999999999999999999999999999 "
    DB	"99999999999999999999999999999999999999999999999999999999999999X"
    DB	"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA "
    DB	"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX"
    DB	"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB "
    DB	"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBX"
    DB	"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC "
    DB	"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCX"
    DB	"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD "
    DB	"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDX"
    DB	"000000000000EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE000000 "
    DB	"000000000000EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE000000X"
    ;--------------------------------------------------------------------
    DB	"0000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE00 "
    DB	"000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE000 "
    DB	"00111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE0000 "
    DB	"0111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE00000 "
    DB	"111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE000000 "
    DB	"11122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE0000001 "
    DB	"1122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE00000011 "
    DB	"122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE000000111 "
    DB	"22223333444455556666777788889999AAAABBBBCCCCDDDDEEEE0000001111 "
    DB	"2223333444455556666777788889999AAAABBBBCCCCDDDDEEEE00000011112 "
    DB	"223333444455556666777788889999AAAABBBBCCCCDDDDEEEE000000111122 "
    DB	"23333444455556666777788889999AAAABBBBCCCCDDDDEEEE0000001111222 "
    DB	"3333444455556666777788889999AAAABBBBCCCCDDDDEEEE00000011112222 "
    DB	"333444455556666777788889999AAAABBBBCCCCDDDDEEEE000000111122223 "
    DB	"33444455556666777788889999AAAABBBBCCCCDDDDEEEE0000001111222233 "
    DB	"3444455556666777788889999AAAABBBBCCCCDDDDEEEE00000011112222333 "
    DB	"444455556666777788889999AAAABBBBCCCCDDDDEEEE000000111122223333 "
    DB	"44455556666777788889999AAAABBBBCCCCDDDDEEEE0000001111222233334 "
    DB	"4455556666777788889999AAAABBBBCCCCDDDDEEEE00000011112222333344 "
    DB	"455556666777788889999AAAABBBBCCCCDDDDEEEE000000111122223333444 "
    DB	"55556666777788889999AAAABBBBCCCCDDDDEEEE0000001111222233334444 "
    DB	"5556666777788889999AAAABBBBCCCCDDDDEEEE00000011112222333344445 "
    DB	"556666777788889999AAAABBBBCCCCDDDDEEEE000000111122223333444455 "
    DB	"56666777788889999AAAABBBBCCCCDDDDEEEE0000001111222233334444555 "
    DB	"6666777788889999AAAABBBBCCCCDDDDEEEE00000011112222333344445555 "
    DB	"666777788889999AAAABBBBCCCCDDDDEEEE000000111122223333444455556 "
    DB	"66777788889999AAAABBBBCCCCDDDDEEEE0000001111222233334444555566 "
    DB	"6777788889999AAAABBBBCCCCDDDDEEEE00000011112222333344445555666 "
    DB	"777788889999AAAABBBBCCCCDDDDEEEE000000111122223333444455556666 "
    DB	"77788889999AAAABBBBCCCCDDDDEEEE0000001111222233334444555566667 "
    DB	"7788889999AAAABBBBCCCCDDDDEEEE00000011112222333344445555666677 "
    DB	"788889999AAAABBBBCCCCDDDDEEEE000000111122223333444455556666777 "
    DB	"88889999AAAABBBBCCCCDDDDEEEE0000001111222233334444555566667777 "
    DB	"8889999AAAABBBBCCCCDDDDEEEE00000011112222333344445555666677778 "
    DB	"889999AAAABBBBCCCCDDDDEEEE000000111122223333444455556666777788 "
    DB	"89999AAAABBBBCCCCDDDDEEEE0000001111222233334444555566667777888 "
    DB	"9999AAAABBBBCCCCDDDDEEEE00000011112222333344445555666677778888 "
    DB	"999AAAABBBBCCCCDDDDEEEE000000111122223333444455556666777788889 "
    DB	"99AAAABBBBCCCCDDDDEEEE0000001111222233334444555566667777888899 "
    DB	"9AAAABBBBCCCCDDDDEEEE00000011112222333344445555666677778888999 "
    DB	"AAAABBBBCCCCDDDDEEEE000000111122223333444455556666777788889999 "
    DB	"AAABBBBCCCCDDDDEEEE000000111122223333444455556666777788889999A "
    DB	"AABBBBCCCCDDDDEEEE000000111122223333444455556666777788889999AA "
    DB	"ABBBBCCCCDDDDEEEE000000111122223333444455556666777788889999AAA "
    DB	"BBBBCCCCDDDDEEEE000000111122223333444455556666777788889999AAAA "
    DB	"BBBCCCCDDDDEEEE000000111122223333444455556666777788889999AAAAB "
    DB	"BBCCCCDDDDEEEE000000111122223333444455556666777788889999AAAABB "
    DB	"BCCCCDDDDEEEE000000111122223333444455556666777788889999AAAABBB "
    DB	"CCCCDDDDEEEE000000111122223333444455556666777788889999AAAABBBB "
    DB	"CCCDDDDEEEE000000111122223333444455556666777788889999AAAABBBBC "
    DB	"CCDDDDEEEE000000111122223333444455556666777788889999AAAABBBBCC "
    DB	"CDDDDEEEE000000111122223333444455556666777788889999AAAABBBBCCC "
    DB	"DDDDEEEE000000111122223333444455556666777788889999AAAABBBBCCCC "
    DB	"DDDEEEE000000111122223333444455556666777788889999AAAABBBBCCCCD "
    DB	"DDEEEE000000111122223333444455556666777788889999AAAABBBBCCCCDD "
    DB	"DEEEE000000111122223333444455556666777788889999AAAABBBBCCCCDDD "
    DB	"EEEE000000111122223333444455556666777788889999AAAABBBBCCCCDDDD "
    DB	"EEE000000111122223333444455556666777788889999AAAABBBBCCCCDDDDE "
    DB	"EE000000111122223333444455556666777788889999AAAABBBBCCCCDDDDEE "
    DB	"E000000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEE "
    DB	"000000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE "
    DB	"00000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE0X"
    ;-----------------
    DB	"_"    
    
    END