Página 1 de 1

interrupção externa, RB0

MensagemEnviado: 09 Fev 2007 09:41
por eliandrostz
Pessoal,
Estou precisando trabalhar com uma interrupção externa no pino RB0, fiz o código abaixo para testar o funcionamento mas não consegui fazer funcionar de jeito nenhum, no pino RB0 coloquei um resistor de 10K pro gnd e um botão para Vcc para simular o pulso, se alguém puder me dar uma luz eu agradeço.

#include <16f877.h>
#use delay (clock=20000000)
#fuses HS, NOWDT, PUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#include <regs_16f87x.h>
#include <lcd.c>

int x;

#int_timer0
trata_timer0()
{
x=10;
}

void main()
{
lcd_init();
setup_timer_0 (RTCC_EXT_L_TO_H);
enable_interrupts (global);
enable_interrupts (int_ext);
lcd_putc("\f aguarda RB0");
x=0;
while (1)
{
printf(lcd_putc,"\n x = %u", x); //se x = 10, interrupcao aconteceu
}
}

Re: interrupção externa, RB0

MensagemEnviado: 09 Fev 2007 09:46
por andre_luis
Declara :
Código: Selecionar todos
#int_EXT
EXT_isr()
{
InterrupcaoAconteceu = TRUE ; // variavel global
}



E no main().....

Código: Selecionar todos

if ( InterrupcaoAconteceu )
   {
   printf(....)                               ;
   InterrupcaoAconteceu = FALSE ;
   }


MensagemEnviado: 09 Fev 2007 10:04
por eliandrostz
Obrigado André, funciona perfeitamente.

T+