hoje como prometido vou mostrar como seria aquela estrutura comentada na parte 1 do nosso tutorialvamos comecar;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; cabecalho do programa; neste trecho colocamos informacoes referente ao codigo como:; nome da empresa que escreveu o codigo - micro controlador ultilizado - nome do programador - data de ;criacao;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; informacoes para o compilador LIST P=16F84a ;define processador RADIX DEC ;define padrao decimal INCLUDE <P16F84a.INC> ;inclue arquivo com caracteristicas do 16f84a;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; configuracoes de gravacao; aqui definimos nossos bits de configuracao __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; paginacao 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 espacos para nossas variavei usadas no sistemacblock 0x0c W_TEMP STATUS_TEMP TEMPO0 TEMPO1 TEMPO2 CONTROLE FLAG F1 F2 ENDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; flags de controle; aqui definimos nossos flags que nada mais e 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;espacos para constantes do sisteme como o proprio nome sugere e um registro que nunca tem seu valor ;alteradoT1 EQU .250 ;FILTRO TC ON E OFF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DEFINICOES; aqui e 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 INTERRUPCAO;e para este trecho que todas asinterrupcoes do programa sera direcionada ORG 0X04 RETFIE ;volta da interupcao;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUB.ROTINAS;neste trecho fica posicionado todas as subrotinas lembrando que subrotinas sao aquelas que estam fora da ;rotina principalEMERGENCIA BCF MONITOR BSF VIO NOP BSF SIRENE NOP RETURNMONITORANDO BCF AXL BSF MONITOR BSF ABI CLRF CONTROLEPR_1 BTFSC PR1 INCF CONTROLE NOPPC_1 BTFSC PC1 INCF CONTROLE NOPJ_1 BTFSC J1 INCF CONTROLE NOPJ_2 BTFSC J2 INCF CONTROLE NOP RETURNALARME_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 SISTEMAINICIO: ;apartir deste ponto comecamos 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 e aonde iremos criar o nosso programa para executar o que queremosMAIN CLRF PORTA CLRF PORTB CLRF FLAG CLRF F1 CLRF F2 CLRF STATUSTEST_ON BTFSS ON GOTO TESTE_OFF CALL MONITORANDO GOTO TESTE_CONTROTESTE_OFF BTFSS OFF GOTO TEST_ON CALL ALARME_OFF GOTO TEST_ONTESTE_CONTRO MOVLW .4 MOVWF F1 XORWF CONTROLE,F1 SKPZ CALL EMERGENCIA CALL MONITORANDO GOTO TEST_ON END; FIM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;pode parecer meio confuso no comeco mais a pratica leva a perfeicaoda maneira que esta colocado o