Criar um Site Grátis Fantástico
Microchip
Microchip

Aplicação de botões:

Para ter um botão que funcione bem deve possuir um filtro para que no acionamento deste não seja executado várias vezes, uma vez que o microcontrolador trabalha em uma velocidade elevada deve-se ter um filtro de no minimo 25 milisegundos para eliminar o riple de chaveamento:

exemplo de rotina:

este exemplo possui funcoes de filtro para acionar e liberar e se auto-carrega o filtro, muito utilizado em minhas aplicaçoes, por ter recursos que com alguma implementação possui 4 estagios de funcionamento : ato de pressionar, agir, ato de liberar, liberado

LED_1 = MONITORA FUNCIONAMENTO DO BOTAO

LED_2 = A CADA ACIONAMENTO DO BOTAO MUDA ESTADO DA SAIDA


CBLOCK 0X20
 FILTRO_BT_1  ;MEMORIA DE FILTRO PARA BOTAO_1
 STATUS_BOTOES  ;MEMORIA DE STATUS DOS BOTOES
ENDC

#DEFINE BOTAO_1 PORTA,0   ;DEFINE PINO QUE SERA UTILIZADO COMO BOTAO
#DEFINE STATUS_BOT_1 STATUS_BOTOES,1 ;FLAG QUE INDICA SE BOTAO ESTA PRESSIONADO

#DEFINE LED_1 PORTB,1  ;SAIDA LED_1 MONITORA QUANDO ESTA ACIONADO BOTAO OU LIBERADO
#DEFINE LED_2 PORTB,2  ;SAIDA LED_2 A CADA APERTAO NO BOTAO NUDA SEU ESTADO

;--------------------
0RG 0X00
 GOTO INICIO

;--------------------

;--------------------

INICIO
;--------------------
; AQUI FAÇA CONFIGURAÇÃO INICIAL DO MICROCONTROLADOR
;--------------------
 MOVLW .100
 MOVWF FILTRO_BT_1

MAIN
 BTFSC BOTAO_1   ;TESTA SE BOTAO ESTA PRESSIONADO
 GOTO BOTAO_1_LIBERADO
 BTFSC STATUS_BOT_1  ;TESTA STATUS DO BOTAO
 GOTO BOTAO_1_PRESSO
 DECFSZ FILTRO_BT_1,F  ;DECREMENTA FILTRO DO BOTAO
 GOTO PROX_ROTINA
 BSF STATUS_BOT_1  ;MARCA BOTAO COMO ACIONADO
;--------------------
; AQUI OQUE FARA O BOTAO AO PRESSIONAR
 BSF LED_1
 CALL AGE_LED_2
;--------------------

BOTAO_1_PRESSO
 MOVLW .200   ;RECOLOCA FILTRO DE BOTAO
 MOVWF FILTRO_BT_1
 GOTO PROX_ROTINA

BOTAO_1_LIBERADO
 BTFSS STATUS_BOT_1  ;TESTA STATUS DO BOTAO
 GOTO BOTAO_1_LIVRE
 DECFSZ FILTRO_BT_1,F  ;DECREMENTA FILTRO DO BOTAO
 GOTO PROX_ROTINA
 BCF STATUS_BOT_1
;--------------------
; AQUI OQUE FARA O BOTAO AO LIBERAR
 BCF LED_1
;--------------------

BOTAO_1_LIVRE
 MOVLW .100   ;REPOE FILTRO DE BOTAO
 MOVWF FILTRO_BT_1
 GOTO PROX_ROTINA

PROX_ROTINA

    GOTO MAIN

;--------------------
;--------------------
; SUB ROTINA MUDA ESTADO DE LED_2
;--------------------
AGE_LED_2
 BTFSC LED_2   ;TESTA LED_2 ESTA APAGADO ?
 GOTO DESL_LED_2
 BSF LED_2   ;SIM ENTAO, LIGA E RETORNA
 RETURN

DESL_LED_2    ;ESTA ACESO, DESLIGA E RETORNA
 BCF LED_2
 RETURN

;--------------------
END

 

 

 

Translate to English Translate to Spanish Translate to French Translate to German Google-Translate-Portuguese to Italian Translate to Russian Translate to Chinese Translate to Japanese
ONLINE
2







Total de visitas: 2994