Hola, estoy queriendo hacer un programa que simplemente active el PIN_A0, cuando se produzca una interrupcion del puertoB. Estoy utilizando el puertoB con su respectivo pull up.
El problema, es que aunque no cambien de estado los pines RB7-RB4, apenas comienza el programa en proteus, se activa la interrupcion! Ya no se que puede ser.
Apenas le doy a play, luego de tres segundos se activa el PIN_A0 sin que se alteren los estados de RB7-RB4. Ayuda por favor!
#include <16f876.h> //pic a utilizar
#fuses XT,NOCPD,NOWDT,NOPUT,NOLVP,NOBROWNOUT //ordenes programador
#use delay (clock=4000000) //Fosc=4Mhz
#use fast_io(b)
#use fast_io(c)
#include <LCD.c>
#define portb 0x06
int c=0;
#int_rb
void cambiob(){
delay_ms(3000); //Estos delays los utilizo para darme cuenta de que apenas comienza el programa, se activa la interrupcion.
output_high(PIN_A0);
delay_ms(1000);
}
void main()
{
set_tris_a(0b00000000);
set_tris_b(0b11110000);
*portb = 0b00000000;
PORT_B_PULLUPS(TRUE);
lcd_init();
enable_interrupts(GLOBAL);
enable_interrupts(INT_RB);
while(true){
if(c!=0){ //Aqui el programa principal tendria que poner el valor de c en el lcd si es que es distinto de 0. (pero esto no creo
printf(lcd_putc,"%u",c) ; //que cause problemas)
}
//delay_ms(1000);
}
}