;************************* ; RX TLC INFR. ; 16 NOV. 2008 ; IT9DPX - FRANCO ;************************* list F=INHX8M,P=16F628 INCLUDE "P16F628.INC" ERRORLEVEL -302 ERRORLEVEL -305 RADIX HEX __CONFIG 3F09 ORG 20H DURATA EQU 0020 FLAG EQU 0021 CODICE EQU 0022 CONTA EQU 0023 S_M EQU 0024 W_M EQU 0025 TEMPO_1 EQU 0026 TEMPO_2 EQU 0027 DEC1 EQU 0028 DEC2 EQU 0029 COD_TEMP EQU 002A DATX EQU 002B CONT EQU 002C #define P1 PORTB,4 #define P2 PORTB,5 #define P3 PORTB,6 #define P4 PORTB,7 ORG 00 GOTO INIZIO ORG 04 ;-------------------- ; al sopraggiungere di un impulso su ; RB0 il valore del tmr1 viene letto INT_RB0 MOVWF W_M MOVFW STATUS MOVWF S_M BTFSS INTCON,1 GOTO RB4567 BCF INTCON,1 BSF INTCON,7 MOVFW TMR1H CLRF TMR1L CLRF TMR1H MOVWF DURATA BSF FLAG,0 MOVFW S_M MOVWF STATUS MOVFW W_M RETFIE RB4567 CALL TASTIERA MOVWF CONT BTFSC CONT,7 GOTO NONCE CALL TXDAT GOTO RB4567 NONCE BCF INTCON,0 BSF INTCON,7 MOVFW S_M MOVWF STATUS MOVFW W_M GOTO VIA ;--------------------- ;inizializza PIC INIZIO BSF STATUS,RP0 ;commuta 2° banco MOVLW B'01011111' MOVWF OPTION_REG ;PULL-UPS ATTIVO MOVLW B'10010000' MOVWF INTCON ;abilita interrupt RB0 MOVLW B'00000001' MOVWF TRISB ; rb0 come input MOVLW B'00001000' MOVWF TRISA ; porta output BCF STATUS,RP0 ;commuta 1° banco MOVLW B'00010001' MOVWF T1CON ;tmr1 on , presc=2 MOVLW 0007 MOVWF CMCON ;spegne compar. porte I/O on CLRF PORTA CLRF PORTB CLRF FLAG CLRF CODICE CLRF TMR1L CLRF TMR1H CLRF CONTA BTFSC PORTA,3 GOTO INIZI BSF PORTA,1 ;----------- ;.....ritardo di RB0.. LOOP3 DECF TEMPO_1 BTFSC STATUS,Z DECF TEMPO_2 BTFSS STATUS,Z GOTO FINE_RIT CLRF CONTA ;590mS circa BCF PORTA,1 ;dati in arrivo SLEEP ;.......... FINE_RIT BTFSS FLAG,0 GOTO LOOP3 BCF FLAG,0 MOVFW DURATA addlw .240 ; <> DI 7,5 ? btfsc STATUS,C goto MAGGIORE MINORE BCF STATUS,C RLF CODICE GOTO LOOP3 MAGGIORE MOVFW DURATA ADDLW .215 ; >di(255-215)/2=20 mS btfsc STATUS,C GOTO CODICE_PRONTO BSF STATUS,C RLF CODICE GOTO LOOP3 ;............... CODICE_PRONTO BTFSS PORTA,1 GOTO TESTB4 BCF PORTA,1 ;dati in arrivo GOTO RIPETIZ TESTB4 BSF PORTA,1 ;dati in arrivo ;................ RIPETIZ MOVFW CODICE XORWF COD_TEMP,W BTFSC STATUS,Z GOTO UGUALE MOVFW CODICE MOVWF COD_TEMP MOVLW .1 MOVWF CONTA GOTO PROSEGUI UGUALE INCF CONTA BTFSS CONTA,2 GOTO PROSEGUI MOVLW .1 MOVWF CONTA ;----------- VERIFICA MOVFW CODICE SUBLW 0040H BTFSS STATUS,C GOTO PROSEGUI; >40 BCF STATUS,C; <40 RRF CODICE MOVFW CODICE CALL ACC_SPE GOTO PROSEGUI ACC_SPE ADDWF PCL NOP ; W da 02h a 20h NOP BSF PORTA,2 RETLW 0 BCF PORTA,2 RETLW 0 BSF PORTB,1 RETLW 0 BCF PORTB,1 RETLW 0 BSF PORTB,2 RETLW 0 BCF PORTB,2 RETLW 0 BSF PORTB,3 RETLW 0 BCF PORTB,3 RETLW 0 BSF PORTB,4 RETLW 0 BCF PORTB,4 RETLW 0 BSF PORTB,5 RETLW 0 BCF PORTB,5 RETLW 0 BSF PORTB,6 RETLW 0 BCF PORTB,6 RETLW 0 BSF PORTB,7 RETLW 0 BCF PORTB,7 RETLW 0 ;................. PROSEGUI MOVLW .255 MOVWF TEMPO_1 MOVWF TEMPO_2 GOTO LOOP3 ;************************* ; alla fine tx_tlc.asm ; TLC_SABA PER LCD ; 28 LUG. 2003 ; IT9DPX - FRANCO ;************************* INIZI BSF STATUS,RP0 ;commuta 2° banco MOVLW B'01011111' MOVWF OPTION_REG ;PULL-UPS ATTIVO MOVLW B'10001000' MOVWF INTCON ;abil. int.RB.4.5.6.7 MOVLW B'00001000' MOVWF TRISA MOVLW B'11110000' MOVWF TRISB ; rb4 come input BCF STATUS,RP0 ;commuta 1° banco CLRF PORTB MOVLW 0007 MOVWF CMCON ;spegne compar. porte I/O on ;.................. VIA MOVLW .255 MOVWF TEMPO_1 MOVWF TEMPO_2 VIA1 DECF TEMPO_1 BTFSC STATUS,Z DECF TEMPO_2 BTFSS STATUS,Z GOTO VIA1 MOVLW B'00000000' MOVWF PORTB SLEEP GOTO VIA ;................. TXDAT MOVWF DATX MOVLW .8 MOVWF CONT CALL RIT6 TXDAT1 RLF DATX BTFSS STATUS,C GOTO CAL6 CALL RIT9 GOTO FINCAL CAL6 CALL RIT6 FINCAL DECF CONT BTFSS STATUS,Z GOTO TXDAT1 CALL RIT25 RETURN ;............ RIT6 CALL RIT20 MOVLW .8 MOVWF DEC2 MOVLW .200 MOVWF DEC1 GOTO PAS1 RIT9 CALL RIT20 MOVLW .12 MOVWF DEC2 MOVLW .175 MOVWF DEC1 GOTO PAS1 RIT25 CALL RIT20 MOVLW .39 ; era78 MOVWF DEC2 MOVLW .234 MOVWF DEC1 GOTO PAS1 RIT20 BSF PORTA,1 MOVLW .1 MOVWF DEC2 MOVLW .4 MOVWF DEC1 GOTO PAS1 PAS1 DECFSZ DEC1 GOTO PAS1 DECFSZ DEC2 GOTO PAS1 BCF PORTA,1 RETURN ;............... TASTIERA MOVLW B'00001110' MOVWF PORTB btfss P1 retlw .4 btfss P2 retlw .8 btfss P3 retlw .36 btfss P4 retlw .40 MOVLW B'00001101' MOVWF PORTB btfss P1 retlw .12 btfss P2 retlw .16 btfss P3 retlw .44 btfss P4 retlw .48 MOVLW B'00001011' MOVWF PORTB btfss P1 retlw .20 btfss P2 retlw .24 btfss P3 retlw .52 btfss P4 retlw .56 MOVLW B'00000111' MOVWF PORTB btfss P1 retlw .28 btfss P2 retlw .32 btfss P3 retlw .60 btfss P4 retlw .64 retlw .128 ;.................. END