;********************************************************************* ; ; CLONE_PT2262.ASM ; ; GERAR CODIFICAÇÃO SIMILAR AO CI PT2262 COM PIC 12f629/675 ; ; AUTOR: CLAUDIO LÁRIOS DATA:27-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 A PROGRAMAÇÃO EQUIVALENTE AOS PINOS DE UM PT2262 REAL, A SER TRANSMITIDO: ; SENDO '1' PARA LIGAÇÃO AO VCC, '0' PARA O GND E 'F' DEIXADO FLUTUANTE ; A0 EQU '1' ;PINO 1 A1 EQU '0' ;PINO 2 A2 EQU 'F' ;PINO 3 A3 EQU '1' ;PINO 4 A4 EQU '0' ;PINO 5 A5 EQU 'F' ;PINO 6 A6 EQU '1' ;PINO 7 A7 EQU '0' ;PINO 8 ; SENDO QUE D3 A D0 SERÃO FORNECIDOS PELOS BOTÕES ;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 .190 ; PARA 500 MICROSEG. (P/ FREQ=5KHZ 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 VB,R5,R6,R7,TEMP,BIT 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 ;================================================================================================ ; ROTINA DE PRINCIPAL ;================================================================================================ MAIN CLRF VB COMF GPIO,W MOVWF BIT ANDLW B'00110110' BTFSC STATUS,Z GOTO MAIN ;NÃO HÁ BOTÕES ACIONADOS BTFSC BIT,5 BSF VB,3 BTFSC BIT,4 BSF VB,2 BTFSC BIT,2 BSF VB,1 BTFSC BIT,1 BSF VB,0 ;================================================================================================ ; ROTINA DE ENVIO PARA O TX ;================================================================================================ ENVIAR: MOVLW A0 CALL ENVIAR_BIT_ADR MOVLW A1 CALL ENVIAR_BIT_ADR MOVLW A2 CALL ENVIAR_BIT_ADR MOVLW A3 CALL ENVIAR_BIT_ADR MOVLW A4 CALL ENVIAR_BIT_ADR MOVLW A5 CALL ENVIAR_BIT_ADR MOVLW A6 CALL ENVIAR_BIT_ADR MOVLW A7 CALL ENVIAR_BIT_ADR MOVLW .4 ; 4 BOTÕES MOVWF R5 VOLT10: BCF STATUS,C RRF VB,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 BSF SAIDA ;REPETE 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 BSF SAIDA ;REPETE CALL DELAY1CK CALL DELAY1CK CALL DELAY1CK BCF SAIDA CALL DELAY1CK RETURN ;================================================================================================ ; GERA BIT 'ENTRADA FLUTUANTE' ;================================================================================================ BITF: BSF SAIDA ;GERA BIT '0' NA SAÍDA CALL DELAY1CK BCF SAIDA CALL DELAY1CK CALL DELAY1CK CALL DELAY1CK 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'=4@ + '0'124@ CALL DELAY1CK BCF SAIDA MOVLW .31 MOVWF TEMP CALL DELAY1CK DECFSZ TEMP,F GOTO $-2 RETURN ;================================================================================================ ; ENVIA BIT DE ENDEREÇO (DADO PELOS JUMPERS NOS PINOS 1 A 8 DO PT2262 REAL) ;================================================================================================ ENVIAR_BIT_ADR MOVWF BIT ;SALVA VALOR DO BIT XORLW '0' BTFSC STATUS,Z GOTO BIT0 ;ENVIA PARA O TX MOVFW BIT XORLW '1' BTFSC STATUS,Z GOTO BIT1 MOVFW BIT XORLW 'F' BTFSC STATUS,Z GOTO BITF RETURN ;================================================================================================ ; FIM DO PROGRAMA ;================================================================================================ END