Você está na página 1de 23

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ;* ;* ;* DESENVOLVIDO POR WELLINGTON DINIZ COSTA VERSO: 1.

0 *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* DESCRIO DO ARQUIVO *

;*-----------------------------------------------------------------* ;* DETECTA A CHAMADA ,SIMULA UMA DISCAGEM E COLOCA ;* A LINHA EM COMUNICAO COM O GPRS ;* ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

#INCLUDE <P16F628A.INC> 16F628A

;ARQUIVO PADRO MICROCHIP PARA

__CONFIG _BOREN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA

#DEFINE #DEFINE

BANK0 BCF STATUS,RP0 BANK1 BSF STATUS,RP0

;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA

CBLOCK

0x20

;ENDEREO INICIAL DA MEMRIA DE ;USURIO

TEMPO1 TEMPO2 CONT1 CONT2 W_TEMP STATUS_TEMP

ENDC

;FIM DO BLOCO DE MEMRIA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)

#DEFINE CH_INIC DETECSO INICIO DA CHAMADA #DEFINE CHAMADA CH_FIM

PORTB,0

;PORTA DA

PORTB,4;DETECTA O FIM DA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE #DEFINE #DEFINE #DEFINE CE CLK DAT RELE1 PORTA,0 PORTB,3 PORTB,2 PORTA,1

#DEFINE

RELE3

PORTA,3

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

ORG

0x00

;ENDEREO INICIAL DE PROCESSAMENTO

GOTO INICIO

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;

ORG MOVWF SWAPF MOVWF BCF

0x04

;ENDEREO INICIAL DA INTERRUPO W_TEMP STATUS,W STATUS_TEMP PORTB,4

;ROTINA DE INTERRUPO BTFSS GOTO BCF TEST1_CONT1 INTCON,RBIF SAI_INT INTCON,RBIF

MOVF SUBLW BTFSS

CONT1,W

;COLOCA CONT1 EM W

.230;SUBT 230 DE W STATUS,C ;TESTA CARRY ,RESULTADO NEGATIVO?

GOTO GOTO TEST2_CONT1 MOVF SUBLW BTFSS NEGATIVO?

TEST2_CONT1 ;NAO ,ENTAO CONT1 MAIOR QUE 122 ZERA_TUDO ;SIM ,ENTAO CONT1 MENOR QUE 122

CONT1,W .255

;COLOCA CONT1 EM W

;SUBT 255 DE W ;TESTA CARRY , RESULTADO

STATUS,C

GOTO 128

ZERA_TUDO

;NAO ,ENTAO CONT1 MAIOR QUE

GOTO 128 ZERA_TUDO CLRF CLRF GOTO INC_CONT2 INCF CLRF GOTO TEST_CONT2 MOVLW XORWF RES SERA 0 BTFSS GOTO GOTO

INC_CONT2

;SIM, ENTAO CONT1 MENOR QUE

CONT1 CONT2 SAI_INT

CONT2 CONT1 TEST_CONT2

.4 CONT2,W ;COMPARA CONT2 E W SE FOR IGUAL O

STATUS,Z ;TESTA O BIT =0? SAI_INT ;NAO ,SAI DA INT E ESPERA ;SIM ;DESLIGA TUDO

CHAVEAMENTO_DESL

SAI_INT SWAPF MOVWF SWAPF SWAPF BANK0 RETFIE ;RETORNA DA INTERRUPO STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W

DALAY1 MOVLW MOVWF .10 TEMPO2 ;INICIA TEMPO 2 COM O VALOR ;PASSADO EM W DL1

MOVLW MOVWF

.120 TEMPO1

DL2 NOP NOP DECFSZ GOTO DL2 TEMPO1,F

;ESTE DELAY DURA 6ms

;DECREMENTA TEMPO1. ACABOU? ;NO, CONTINUA AGUARDANDO ;SIM

DECFSZ GOTO DL1

TEMPO2,F

;DECREMENTA TEMPO2. ACABOU? ;NO, CONTINUA AGUARDANDO ;SIM

RETURN

DALAY2 MOVLW MOVWF .8 TEMPO2 ;INICIA TEMPO 2 COM O VALOR ;PASSADO EM W DL1_1 MOVLW MOVWF .200 TEMPO1

DL2_1 NOP NOP DECFSZ GOTO DL2_1 TEMPO1,F

; ESTE DALAY DURA 14ms

;DECREMENTA TEMPO1. ACABOU? ;NO, CONTINUA AGUARDANDO ;SIM

DECFSZ GOTO DL1_1

TEMPO2,F

;DECREMENTA TEMPO2. ACABOU? ;NO, CONTINUA AGUARDANDO ;SIM

RETURN DALAY3

MOVLW MOVWF DL1_2 NOP DECFSZ GOTO DL1_2

.250 TEMPO1

;ESTE DALAY DURA 1ms

TEMPO1,F

RETURN

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO DO PROGRAMA *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

INICIO BANK1 MOVLW MOVWF B'00000000' TRISA ;DEFINE TODOS COMO SADAS ;ALTERA PARA O BANCO 1

MOVLW MOVWF MOVLW MOVWF

B'00010011' TRISB B'10000001' OPTION_REG ;PRESCALER 1:4 NO TMR0 ;PULL-UPS DESABILITADOS ;TMR0 SERA INC COM MUDANA DE ;DEFINE RB0 E RB1 COMO ENTRADA

;ESTADO DO PINO RA4 MOVLW MOVWF DESLIGADAS BANK0 MOVLW MOVWF COMPARADOR B'00000111' CMCON ;DEFINE O MODO DE OPERAO DO B'00001000' INTCON ;TODAS AS INTERRUPES

;RETORNA PARA O BANCO 0

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

PREPARA

CLRF CLRF CLRF CLRF BSF BSF

PORTA PORTB CONT1 CONT2 CE CLK

;LIMPA O PORTA ;LIMPA O PORTB

;COLOCA CE EM + ;COLOCA CLK EM +

GOTO MAIN

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA PRINCIPAL *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAIN BTFSC CH_INIC LINHA SE TIVER ;TESTA SE H CHAMADA PULA UMA

GOTO MAIN

;SE NAO TIVER CRIA O LOOP

GOTO DISCAGEM

DISCAGEM BSF RELE3

CALL DALAY2 BCF CE ;INICIA A DISCAGEM COLOCANDO CE EM '0'

CALL DALAY1 ;AGUARDA UM TEMPO PARA ESTABILIZAO GOTO NUM3_1 STOP BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

RETURN NUM3_1 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 CLK

CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 CALL DALAY2 GOTO NUM3_2

NUM3_2 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2

BSF

CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 GOTO NUM5 CLK

NUM5

BCF CALL BSF

CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 GOTO NUM1_1 CLK

NUM1_1 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2

BCF

DAT

;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 GOTO NUM1_2 CLK

NUM1_2 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2

BCF

DAT

;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 GOTO NUM7 CLK

NUM7 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 GOTO NUM5_1 CLK

NUM5_1 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2

BSF CALL STOP

CLK

CALL DALAY2 GOTO NUM5_2

NUM5_2 BCF CALL BSF CLK DALAY2 DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BSF DAT ;COLOCA '1'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CLK

CALL DALAY2

BCF

CLK

CALL DALAY2 BCF DAT ;COLOCA '0'

CALL DALAY2 BSF CALL STOP CALL DALAY2 GOTO CHAVEAMENTO_LIG CLK

CHAVEAMENTO_LIG BSF BSF BSF BSF CE CLK RELE1 INTCON,GIE ;LIGA AS INTERRUPES

GOTO INC_CONT1 CHAVEAMENTO_DESL BCF BCF BCF INTCON,GIE ;DESLIGA INTERRUPES RELE1 RELE3

GOTO PREPARA INC_CONT1 INCF CONT1

CALL DALAY3

GOTO INC_CONT1 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FIM DO PROGRAMA *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * END ;OBRIGATRIO

Você também pode gostar