;********************************************************************* ; ; CLONE_PT2240B.ASM ; ; GERAR CODIFICAÇÃO SIMILAR AO CI PT2240B COM PIC 12f629/675 ; ; AUTOR: CLAUDIO LÁRIOS DATA:24-10-2013 ; ;********************************************************************* ; PINAGENS PARA O PIC12F629 (675): ; PINO 1- +VCC ; PINO 3- ENTRADA DO BOTÃO 'S1' (ACIONA C/ GND) ; PINO 2- ENTRADA DO BOTÃO 'S0' (ACIONA C/ GND) ; PINO 4- PULLUP 10K AO VCC ; PINO 5- ENTRADA DO BOTÃO 'S2' (ACIONA C/ GND) ; PINO 6- ENTRADA DO BOTÃO 'S3' (ACIONA C/ GND) ; 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 7,6,5 E 4 DE SER2 CORRESPONDEM AOS BOTÕES - MANTENHA EM '0' ) ;---------------------------------------------------------------------------------------------------- ;ESCOLHA AQUI O PERIDO DO PULSO BASE T_PULSO EQU .108 ; PARA 330 MICROSEG. (P/ FREQ=100KHZ NO TX) ;---------------------------------------------------------------------------------------------------- IFDEF PIC629 #INCLUDE ; ARQUIVO PADRAO ENDIF IFDEF PIC675 #INCLUDE ; ARQUIVO PADRAO ENDIF ERRORLEVEL -302 __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,TEMP 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 ;LIGA PULL UPS NAS ENTRADAS 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 MAIN MOVLW SER2 MOVWF V3 MOVLW SER1 MOVWF V2 MOVLW SER0 MOVWF V1 BCF V3,4 BCF V3,5 BCF V3,6 BCF V3,7 COMF GPIO,W MOVWF TEMP ANDLW B'00110110' BTFSC STATUS,Z GOTO MAIN ;NÃO HÁ BOTÕES ACIONADOS BTFSC TEMP,5 BSF V3,7 BTFSC TEMP,4 BSF V3,6 BTFSC TEMP,2 BSF V3,5 BTFSC TEMP,1 BSF V3,4 ;================================================================================================ ; ROTINA DE ENVIO PARA O TX ;================================================================================================ ENVIAR: 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 CALL SYNC_BIT ;ENVIA BIT DE SINCRONISMO + PAUSA GOTO MAIN ;================================================================================================ ; SUBROTINAS ;================================================================================================ ;ENVIA BIT '1' EB1: CALL BIT1 GOTO VV13 ;================================================================================================ ; ROTINA DE DELAY ;================================================================================================ DELAY1CK: MOVLW T_PULSO ;GERA ATRASO DE TEMPO ( 32@ ) MOVWF R7 DECFSZ R7,F GOTO $-1 RETURN ;================================================================================================ ; GERA BIT '0' ;================================================================================================ BIT0: BSF SAIDA ;GERA BIT '0' NA SAÍDA CALL DELAY1CK BCF SAIDA CALL DELAY1CK CALL DELAY1CK CALL DELAY1CK RETURN ;================================================================================================ ; GERA BIT '1' ;================================================================================================ BIT1: BSF SAIDA ;GERA BIT '1' NA SAÍDA CALL DELAY1CK CALL DELAY1CK CALL DELAY1CK BCF SAIDA CALL DELAY1CK RETURN ;================================================================================================ ; GERA O SINCRONISMO ;================================================================================================ SYNC_BIT: BSF SAIDA ;GERA BIT DE SINCRONISMO NA SAÍDA '1'=32@ + '0' 992@ CALL DELAY1CK BCF SAIDA MOVLW .31 MOVWF TEMP CALL DELAY1CK DECFSZ TEMP,F GOTO $-2 RETURN ;================================================================================================ ; FIM DO PROGRAMA ;================================================================================================ END