; CLONE HT6P_PIC.ASM ; ; INICIO : 01/07/12 TERM.: 18/08/2012 ; AUTOR: CLÁUDIO LÁRIOS ; BLOG 'LARIOS.TECNOLOGIA.WS' ; PROCESSADOR: PIC 12F629 ; OBJETIVO: GERAR POR SOFTWARE, O PROTOCOLO PRODUZIDO PELO INTEGRADO HT6P20B ; PODE-SE CRIAR PEQUENOS CONTROLES REMOTOS (CHAVEIRINHOS), OU ACIONAR, DIRETO DA ; APLICAÇÃO, UMA SAÍDA PARA TX DE RF. ; APLICAÇÃO PARA FINS DIDÁTICOS APENAS. ; PINAGENS PARA O PIC12F629 (675): ; PINO 1- +VCC ; PINO 3- ENTRADA DO BOTÃO 'S0' (ACIONA C/ GND) ; PINO 2- ENTRADA DO BOTÃO 'S1' (ACIONA C/ GND) ; PINO 4- PULLUP 10K AO VCC ; PINO 5- NÃO USADO ; PINO 6- NÃO USADO ; PINO 7- SAÍDA DE RF (SAÍDA PARA O TX DE RF) ; PINO 8- GND ;--------------------------------------------------------------------------------------------------- ;DEFINIÇÕES DO USUÁRIO: ;--------------------------------------------------------------------------------------------------- ;ESCOLHA AQUI O MODELO DO MICROCONTROLADOR A SER USADO: #DEFINE PIC629 ;#DEFINE PIC675 ;---------------------------------------------------------------------------------------------------- ;ESCOLHA AQUI O NÚMERO DO 'SERIAL NUMBER' A SER TRANSMITIDO: SER0 EQU 0X01 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) ;---------------------------------------------------------------------------------------------------- IFDEF PIC629 #INCLUDE ; ARQUIVO PADRAO ENDIF IFDEF PIC675 #INCLUDE ; ARQUIVO PADRAO ENDIF __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT ; 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 GPIO,0 ; SAIDA PARA DADO PINO 7 #DEFINE IN0 GPIO,4 ;ENTRADA BOTÃO 0 PINO 3 #DEFINE IN1 GPIO,5 ;ENTRADA BOTÃO 1 PINO 2 ORG 0X00 GOTO INICIO ;................................................................................................ ; VETOR DE INTERRUPCAO ORG 0X04 RETFIE ;................................................................................................ ; ; INICIO BANK1 ;BANCO 1 MOVLW .0 MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES MOVLW B'111110' ;SAIDA EM GP0 MOVWF TRISIO ; MOVLW 0XFF MOVWF WPU CLRF OPTION_REG IFDEF PIC675 MOVLW .0 MOVWF ANSEL ;LIBERA PORTAS DO AD ENDIF BANK0 MOVLW .7 ;DESLIGA O COMPARADOR MOVWF CMCON ;IDEM CLRF GPIO MOVLW SER2 MOVWF V3 MOVLW SER1 MOVWF V2 MOVLW 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