hoje como prometido vou mostrar como seria aquela estrutura comentada na parte 1 do nosso tutorial
vamos começar
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; cabeçalho do programa
; neste trecho colocamos informações referente ao codigo como:
; nome da empresa que escreveu o codigo - micro controlador ultilizado - nome do programador - data de ;criação
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; informações para o compilador
LIST P=16F84a ;define processador
RADIX DEC ;define padrão decimal
INCLUDE <P16F84a.INC> ;inclue arquivo com características do 16f84a
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; configurações de gravaçào
; aqui definimos nossos bits de configuração
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; paginaçào de memoria
; aqui criamos nomes para nossos bamcos de memorias do pic
#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; variaveis
; aqui criamos espaços para nossas variavei usadas no sistema
cblock 0x0c
W_TEMP
STATUS_TEMP
TEMPO0
TEMPO1
TEMPO2
CONTROLE
FLAG
F1
F2
ENDC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; flags de controle
; aqui definimos nossos flags que nada mais é do que cada bit que temos dentro de uma determinada variavel
#DEFINE ST_PR1 FLAG,0
#DEFINE SE_PC1 FLAG,1
#DEFINE ST_J1 FLAG,2
#DEFINE ST_J2 FLAG,3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; CONSTANTES
;espaços para constantes do sisteme como o proprio nome sugere é um registro que nunca tem seu valor ;alterado
T1 EQU .250 ;FILTRO TC ON E OFF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; DEFINIÇÕES
; aqui é onde iremos criar nomes para os pinos do pic
#DEFINE PR1 PORTA,0
#DEFINE PC1 PORTA,1
#DEFINE J1 PORTA,2
#DEFINE J2 PORTA,3
#DEFINE ON PORTB,0
#DEFINE OFF PORTB,1
#DEFINE ABI PORTB,3
#DEFINE SIRENE PORTB,2
#DEFINE ERRO PORTB,4
#DEFINE VIO PORTB,5
#DEFINE AXL PORTB,6
#DEFINE MONITOR PORTB,7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; MEMORIA DE PROGRAMA
; este trecho indica que apartir deste ponto se inicia o programa
ORG 0X00 ;define nicio do trecho a seguir em 000
GOTO INICIO ;desvia para o inicio
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ROTINA DE INTERRUPÇÃO
;é para este trecho que todas asinterrupções do programa sera direcionada
ORG 0X04
RETFIE ;volta da interupção
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SUB.ROTINAS
;neste trecho fica posicionado todas as subrotinas lembrando que subrotinas são aquelas que estam fora da ;rotina principal
EMERGENCIA
BCF MONITOR
BSF VIO
NOP
BSF SIRENE
NOP
RETURN
MONITORANDO
BCF AXL
BSF MONITOR
BSF ABI
CLRF CONTROLE
PR_1
BTFSC PR1
INCF CONTROLE
NOP
PC_1
BTFSC PC1
INCF CONTROLE
NOP
J_1
BTFSC J1
INCF CONTROLE
NOP
J_2
BTFSC J2
INCF CONTROLE
NOP
RETURN
ALARME_OFF
BCF ABI
BCF VIO
BCF MONITOR
BCF SIRENE
BSF AXL
CLRF CONTROLE
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;_____________________________________INICIO DO PROGRAMA
; ESTE ENDERECO E' O IMEDIATAMENTE APOS O FIM DA INTERRUPCAO OU QUANDO ;LIGAMOS NOSSO SISTEMA
INICIO:
;apartir deste ponto começamos a configurar os registradores do pic
BANK1 ; SELECIONA BANCO 1 PARA OPTION E TRIS
MOVLW .15 ; W = 15
MOVWF TRISA ; TRISA = FFH. PORTA TODA ENTRADA
MOVLW .3 ; W = 3
MOVWF TRISB ; TRISB = 0. PORTB TODA SAIDA
MOVLW .129 ; CARREGA W COM ESTE VALOR
MOVWF OPTION_REG ; REGISTRO OPTION AJUSTA TIMER 0 CLOCK INTERNO
MOVLW .0 ; CARREGA W COM ESTE VALOR
MOVWF INTCON
BANK0 ; VOLTO AO BANCO 0. PADRAO DO RESET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ROTINA PRINCIPAL
; aqui é aonde iremos criar o nosso programa para executar o que queremos
MAIN
CLRF PORTA
CLRF PORTB
CLRF FLAG
CLRF F1
CLRF F2
CLRF STATUS
TEST_ON
BTFSS ON
GOTO TESTE_OFF
CALL MONITORANDO
GOTO TESTE_CONTRO
TESTE_OFF
BTFSS OFF
GOTO TEST_ON
CALL ALARME_OFF
GOTO TEST_ON
TESTE_CONTRO
MOVLW .4
MOVWF F1
XORWF CONTROLE,F1
SKPZ
CALL EMERGENCIA
CALL MONITORANDO
GOTO TEST_ON
END
; FIM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pode parecer meio confuso no começo mais a pratica leva a perfeiçào
da maneira que esta colocado o programa nesta estrutura fica mito facil encontrar um trecho especifico
para se fazer alguma alteraçào se nescessario
bom é isso ai lembrando que este codigo que esta escrito acima é totalmente funcional
e no nosso proximo tutorial teremos mais informaçòes sobre progamaçào
valeu ate a proxima galera
Nenhum comentário:
Postar um comentário