Exemplo de Programa Assembly

3
;****************************************************************************** ; NOME DO PROJETO: INTERRUPTOR LIGA/DESLIGA COM 12F629 ; CLIENTE: EDSON ; DESENVOLVIDO POR: ROBERTO TAKESHI MATINO ; VERSAO: 1.0 DATA: 17/08/10 ;****************************************************************************** ; DESCRICAO DO ARQUIVO: ; ;INTERRUPTOR LIGA/DESLIGA COM LED DE STAND BY. ; ; ;****************************************************************************** ; ARQUIVOS DE DEFINICOES #include <p16f628a.inc> __CONFIG _BOREN_ON & _CP_ON & _DATA_CP_OFF & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTOSC_OSC_NOCLKOUT ;******************************************************************************* ; PAGINACAO DE MEMORIA ;DEFINICAO DE COMANDOS DE USUARIO PARA ALTERACAO DA PAGINA DE MEMORIA #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMORIA #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MEMORIA ;****************************************************************************** ; VARIAVEIS ;DEFINICAO DOS NOMES E ENDERECOS DE TODAS AS VARIAVEIS UTILIZADAS PELO SISTEMA CBLOCK 0X20 ;ENDEREÇO INICIAL DA MEMORIA DO USUARIO FILTRO_BOTOES ;FILTRO PARA RUIDOS ENDC ;FIM DO BLOCO DE MEMORIA ;****************************************************************************** ; FLAGS INTERNOS ;DEFINIÇAO DOS FLAGS UTILIZADOS PELO SISTEMA ;****************************************************************************** ; CONSTANTES ;DEFINIÇAO DAS CONSTANTES UTILIZADAS PELO SISTEMA FILTRO_TECLA EQU .250 ;FILTRO PARA BOTOES ;****************************************************************************** ; ENTRADAS ;DEFINIÇAO DOS PINOS QUE SERAO UTILIZADOS COMO ENTRADA ;COMENTAR O SIGNIFICADO DOS ESTADOS (0 E 1) #DEFINE BOTAO1 PORTA,2 ;PORTA DO BOTAO ;0 -> PRESSIONADO ;1 -> LIBERADO ;****************************************************************************** ; SAIDAS ;DEFINICAO DOS PINOS QUE SERAO UTILIZADOS COMO SAIDA ;COMENTAR O SIGNIFICADO DOS PINOS (0 E 1) #DEFINE LED_EQUIP PORTB,0 ;LED INDICADOR DE EQUIPAMENTO LIGADO #DEFINE LED_STANDBY PORTB,1 ;LED INDICADOR DE STANDBY #DEFINE SAIDA_EQUIP PORTB,3 ;SAIDA PARA O EQUIPAMENTO ;****************************************************************************** ; INICIALIZAÇAO DA EEPROM

description

programação

Transcript of Exemplo de Programa Assembly

Page 1: Exemplo de Programa Assembly

;******************************************************************************; NOME DO PROJETO: INTERRUPTOR LIGA/DESLIGA COM 12F629; CLIENTE: EDSON; DESENVOLVIDO POR: ROBERTO TAKESHI MATINO; VERSAO: 1.0 DATA: 17/08/10;******************************************************************************; DESCRICAO DO ARQUIVO:;;INTERRUPTOR LIGA/DESLIGA COM LED DE STAND BY.;;;******************************************************************************; ARQUIVOS DE DEFINICOES

#include <p16f628a.inc>

__CONFIG _BOREN_ON & _CP_ON & _DATA_CP_OFF & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTOSC_OSC_NOCLKOUT

;*******************************************************************************; PAGINACAO DE MEMORIA;DEFINICAO DE COMANDOS DE USUARIO PARA ALTERACAO DA PAGINA DE MEMORIA

#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMORIA#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MEMORIA

;******************************************************************************; VARIAVEIS;DEFINICAO DOS NOMES E ENDERECOS DE TODAS AS VARIAVEIS UTILIZADAS PELO SISTEMA

CBLOCK 0X20 ;ENDEREÇO INICIAL DA MEMORIA DO USUARIO

FILTRO_BOTOES ;FILTRO PARA RUIDOS

ENDC ;FIM DO BLOCO DE MEMORIA

;******************************************************************************; FLAGS INTERNOS;DEFINIÇAO DOS FLAGS UTILIZADOS PELO SISTEMA

;******************************************************************************; CONSTANTES;DEFINIÇAO DAS CONSTANTES UTILIZADAS PELO SISTEMA

FILTRO_TECLA EQU .250 ;FILTRO PARA BOTOES

;******************************************************************************; ENTRADAS;DEFINIÇAO DOS PINOS QUE SERAO UTILIZADOS COMO ENTRADA;COMENTAR O SIGNIFICADO DOS ESTADOS (0 E 1)

#DEFINE BOTAO1 PORTA,2 ;PORTA DO BOTAO;0 -> PRESSIONADO;1 -> LIBERADO

;******************************************************************************; SAIDAS;DEFINICAO DOS PINOS QUE SERAO UTILIZADOS COMO SAIDA;COMENTAR O SIGNIFICADO DOS PINOS (0 E 1)

#DEFINE LED_EQUIP PORTB,0 ;LED INDICADOR DE EQUIPAMENTO LIGADO#DEFINE LED_STANDBY PORTB,1 ;LED INDICADOR DE STANDBY#DEFINE SAIDA_EQUIP PORTB,3 ;SAIDA PARA O EQUIPAMENTO

;******************************************************************************; INICIALIZAÇAO DA EEPROM

Page 2: Exemplo de Programa Assembly

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

ORG 0X000 ;ENDERECO INICIAL DE PROCESSAMENTO

GOTO INICIO

;******************************************************************************; INICIO DAS INTERRUPCOES

ORG 0X0004 ;ENDEREÇO INICIAL DA INTERRUPCAO

RETFIE ;RETORNA DA INTERRUPÇÃO (HABILITA GIE)

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

INICIO

CLRF PORTA ;LIMPA O PORTA CLRF PORTB ;LIMPA O PORTB

BANK1 ;ALTERA PARA O BANCO 1 MOVLW B'00000100' ;DEFINE RA2 COMO ENTRADA E MOVWF TRISA ;DEMAIS COMO SAIDA

MOVLW B'00000000' ;DEFINE O PORTB COMO SAIDA MOVWF TRISB

MOVLW B'10001010' ;PRESCALER 1:2 PARA WDT MOVWF OPTION_REG ;PULL-UPS DESABILITADOS ;AS DEMAIS CONFIGURACOES SAO IRRELEVANTES MOVLW B'00000000' ;TODAS AS INTERRUPCOES DESLIGADAS MOVWF INTCON

BANK0 ;RETORNA AO BANCO 0 MOVLW B'00000111' ;DEFINE O MODO DE OPERACAO DO COMP. ANALOGICO MOVWF CMCON

;******************************************************************************; AS INTRUÇÕES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM; RESET OU POWER-UP, MAS PASSE DIRETO SE O RESET FOR POR WDT. DESTA FORMA,; SEMPRE QUE O PIC É LIGADO, O PROGRAMA TRAVA, AGUARDA UM ESTOURO DE WDT; E COMEÇA NOVAMENTE. ISTO EVITA PROBLEMAS NO START-UP DO PIC.

BTFSC STATUS,NOT_TO ; RESET POR ESTOURO DE WATCHDOG TIMER ? GOTO $ ; NÃO - AGUARDA ESTOURO DO WDT ; SIM

;******************************************************************************; INICIALIZACAO DAS VARIAVEIS

BSF LED_STANDBY ;ACENDE LED_STANDBY

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

MAIN

VARRE CLRWDT ;LIMPA WATCHDOG TIMER

BTFSS BOTAO1 ;O BOTÃO 1 ESTÁ PRESSIONADO? GOTO TRATA_BOTAO_INTERR ;SIM - PULA PARA TRATA_BOTAO_PROG

;NAO MOVLW FILTRO_TECLA ;CARREGA NO W O VALOR DO FILTRO_TECLA

Page 3: Exemplo de Programa Assembly

MOVWF FILTRO_BOTOES ;SALVA EM FILTRO_BOTOES

GOTO VARRE

TRATA_BOTAO_INTERR

MOVF FILTRO_BOTOES,F BTFSC STATUS,Z ;FILTRO JÁ É IGUAL A ZERO? GOTO VARRE ;SIM - VOLTA PARA A VARREDURA DECFSZ FILTRO_BOTOES,F ;NÃO - FIM DO FILTRO? GOTO VARRE ;NÃO - VOLTA PARA A VARREDURA ;SIM - BOTÃO PRESSIONADO BTFSS LED_EQUIP ;LED DO EQUIPAMENTO ESTA LIGADO? GOTO ENTRA_ACIONA_EQUIP ;NAO - ENTRA DADOS DA PROGRAMAÇAO ;SIMSAI_ACIONA_EQUIP

BCF LED_EQUIP ;APAGA LED_EQUIPBSF LED_STANDBY ;ACENDE LED_STANDBYBCF SAIDA_EQUIP ;DESLIGA EQUIPAMENTO

GOTO VARRE

ENTRA_ACIONA_EQUIP

BCF LED_STANDBY ;APAGA LED_STANDBY BSF LED_EQUIP ;ACENDE LED_EQUIP

BSF SAIDA_EQUIP ;LIGA EQUIPAMENTO

GOTO VARRE

;******************************************************************************; FIM DO PROGRAMA

END