; CLONE HT6P_628a.ASM ; ; INICIO : 19/10/13 TERM.: 21/10/2013 ; AUTOR: CLÁUDIO LÁRIOS ; BLOG 'LARIOS.TECNOLOGIA.WS' ; PROCESSADOR: PIC 16F628a ; OBJETIVO: GERAR POR SOFTWARE, O PROTOCOLO PRODUZIDO PELO INTEGRADO HT6P20B ; PODENDO ALTERAR O ENDEREÇO, VIA CHAVE DIP. ; OBTEMOS DESTA FORMA, A SIMULAÇÃO DE VÁRIOS CONTROLES, PARA TESTE DE EQUIPAMENTOS ; COMO ALARMES,ETC. ; APLICAÇÃO PARA FINS DIDÁTICOS APENAS. ; PINAGENS PARA O PIC16F628A: ; PINO 14- +VCC ; PINO 18- COM PULL UP 10K - ENTRADA DO BOTÃO 'S0' (ACIONA C/ GND) ; PINO 1- OM PULL UP 10K -ENTRADA DO BOTÃO 'S1' (ACIONA C/ GND) ; PINO 4- PULLUP 10K AO VCC ; PINOS 6 A 13 - CHAVE DIP A MASSA ; PINO 17- SAÍDA DE RF (SAÍDA PARA O TX DE RF) ; PINO 5- GND ;ESCOLHA AQUI O NÚMERO DO 'SERIAL NUMBER' A SER TRANSMITIDO: ;SER0 EQU 0X01 ;SERÁ UMA VARIAVEL SER1 EQU 0X23 SER2 EQU 0X0F ;OBS. (OS BITS 6 E 7 DE SER2 CORRESPONDEM AOS BOTÕES ) ;---------------------------------------------------------------------------------------------------- ;ESCOLHA AQUI O PERIDO DO PULSO BASE T_PULSO EQU .164 ;164D PARA 500 MICROSEG. (LAMBDA: JÁ ACERTADO PARA C.REMOTOS COMERCIAIS =+- 500 US) ;---------------------------------------------------------------------------------------------------- LIST P=16f628a , R=DEC INCLUDE "P16F628a.INC" ; ARQUIVO PADRAO ERRORLEVEL -302 __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON & _MCLRE_ON & _LVP_OFF ; PAGINACAO DE MEMORIA; #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1 ; VARIAVEIS CBLOCK 0X20 ;ENDERECO INICIAL DE MEMORIA V3,V2,V1,R5,R6,R7 ENDC ;======================DEFINICAO DE BITS E FLAGS============================================== #DEFINE SAIDA PORTA,0 ; SAIDA PARA DADO PINO 17 #DEFINE IN0 PORTA,1 ;ENTRADA BOTÃO S0 PINO 18 #DEFINE IN1 PORTA,2 ;ENTRADA BOTÃO S1 PINO 1 ORG 0X00 GOTO INICIO ;................................................................................................ ; VETOR DE INTERRUPCAO ORG 0X04 RETFIE ;................................................................................................ ; ; INICIO BANK1 ;BANCO 1 MOVLW .0 MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES MOVLW B'11111111' ;SAIDA EM GP0 MOVWF TRISB ; MOVLW B'11111110' MOVWF TRISA CLRF OPTION_REG BANK0 MOVLW .7 ;DESLIGA O COMPARADOR MOVWF CMCON ;IDEM CLRF PORTA MOVLW SER2 MOVWF V3 MOVLW SER1 MOVWF V2 MOVFW PORTB ; PORTB SERÁ O ' SER0 ' MOVWF V1 BCF V3,7 BCF V3,6 BTFSS IN1 GOTO SIT1 ;BOTÃO 1 ACIONADO BTFSC IN0 ;NENHUM BOTÃO ACIONADO (SEM TRANSMISSÃO). GOTO INICIO BSF V3,6 ;BOTÃO '0' ACIONADO APENAS GOTO ENVIAR SIT1: BSF V3,7 BTFSS IN0 ;TESTA SE BOTÃO '0' TAMBÉM ESTÁ ACIONADO ,SE NÃO ENVIAR BOTÃO'1' APENAS BSF V3,6 ;SIM ,ESTÁ TAMBÉM ACIONADO ENVIAR: CALL STARTBIT MOVLW .24 ;QUANTIDADE DE BITS A TRANSMITIR MOVWF R5 VOLT10: BCF STATUS,C RRF V3,F RRF V2,F RRF V1,F BTFSC STATUS,C GOTO EB1 CALL BIT0 VV13: DECFSZ R5,F GOTO VOLT10 ;------------------------------------------------- ANTICODE: CALL BIT0 ;GERA O 'ANTICODE' CALL BIT1 CALL BIT0 CALL BIT1 ;----------------------------------------------------- PAUSA: MOVLW .23 ;23 CLOCKS DE PAUSA FINAL MOVWF R6 RTY: CALL DELAY1CK DECFSZ R6,F GOTO RTY GOTO INICIO ;------------------------------------------------- EB1: CALL BIT1 GOTO VV13 ;================================================= ;ROTINAS DELAY1CK: MOVLW T_PULSO ;GERA ATRASO DE TEMPO MOVWF R7 DECFSZ R7,F GOTO $-1 RETURN BIT0: BCF SAIDA ;GERA BIT '0' NA SAÍDA CALL DELAY1CK BSF SAIDA CALL DELAY1CK CALL DELAY1CK BCF SAIDA RETURN BIT1: BCF SAIDA ;GERA BIT '1' NA SAÍDA CALL DELAY1CK CALL DELAY1CK BSF SAIDA CALL DELAY1CK BCF SAIDA RETURN STARTBIT: BSF SAIDA ;GERA STARTBIT '1' NA SAÍDA CALL DELAY1CK BCF SAIDA RETURN END