Blog de Luiz Oscar Ruschel Pilger destinado ao estudo de Microcontroladores PIC18F4550. O material deste blog é fruto de um trabalho iniciado em 2013 para as aulas de microcontroladores do curso de Técnico em Eletrônica da Escola Técnica Estadual Parobé de Porto Alegre - RS. Ele vem a substituir o antigo blog picparobe.
sexta-feira, 12 de agosto de 2016
Exemplo de configuração e uso da INT0
/*
* File: Int_atv_1_1.c
* Author: Pilger
*
* Created on 19 de Agosto de 2017, 06:44
* Interrupção - Atividade 01-1
* Exemplo de configuração e uso de Interrupção externa - INT0
* Ação interrupção INT0: Troca o estado da saída (led)
* Funções com protótipos
*/
#define led LATDbits.LATD0
#include <xc.h>
#include "C:\h\Config_PIC18F4550.h"
//prototipos de funções
void inicia_regs (void);
void interrupt ISR_alta_prioridade (void);
void config_int (void);
void config_int0 (void);
void main(void) {
inicia_regs();
config_int();
config_int0(); // configura as interrupções
while (1){
}
}
void inicia_regs (void){
// Configura todas as portas multiplexadas com o módulo conversor A/D, como I/O digital. (cap13)
ADCON1= 0x0F;
TRISA = 0x00;
TRISB = 0x01; // define a B0 como entrada (INT0) - onde estão as chaves
TRISD = 0x00; // define a porta D como saída - onde está o LCD
TRISE = 0x00; // define a porta E como saída - onde está o Led que indica que passou pela interrupção
PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; // zeroa todos os pinos
}
// função de interrupção de alta prioridade
void interrupt ISR_alta_prioridade (void){
led = ~led; // Inverte o estado da saída
INTCONbits.INT0IF = 0; // Limpa o flag de ativação da interrupçãp
}
// função de configuração geral de interrupções
void config_int (void){ // configurações gerais a todas as interrupçãoes
RCONbits.IPEN = 1; // Habilita interrupção com nível de prioridade. End 0x08 - alta e 0x18 - baixo
INTCONbits.GIEH = 1; // Habilita todas as interrupções de alta prioridade
INTCONbits.GIEL = 0; // Desabilita todas as interrupções de baixa prioridade
}
// função de configuração da Interrupção externa 0
void config_int0 (void){ // configurações específicas a INT0
INTCONbits.INT0IE = 1; // Ativa a inerrupção externa INT0 (RB0)
INTCON2bits.INTEDG0 = 0; // Interrupção externa INT0 na borda de descida
INTCONbits.INT0IF = 0; // Limpa o flag bit da interrupção externa INT0
}
_________________________________________________________________
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário