Lo primero, un saludo a todos. Hace poco que he empezado con esto de los PIC, así que llevo unas semanas leyendo , y me está sirviendo de mucho.
Ya he hecho algún programilla en ensamblador, así que me he decidido a programar en C. Estoy haciendo un sencillito programa de un deposito con dos sensores que produzcan una interrupcion por cambio de estado (INT_RB). El problema es que en la simulación con proteus, no consigo que entre en la interrupción, y no sé a que puede deberse. El codigo es:
----------------------------------------------------------------------------------------------------------------------------
#include <16F84a.h> ////Dispositivo que utilizo.
#fuses XT,NOWDT,NOPUT,NOPROTECT ////Configuracion de fusibles.
#use delay(clock=4000000) ////cristal a 4MHZ.
#byte port_b=0x06 /*Asigna port_B con un objeto
en la direccion 6 de la memoria(puerto B).*/
///#byte port_a=0x05
#use fast_io(b)
#int_rb
void IntPortB4_7()
{
if (pin_b6==1) ///si el deposito esta vacio
{
output_bit(pin_a0,1);
}
if (pin_b7==0) ///si el deposito esta lleno
{
output_bit(pin_a0,0);
}
}
void main (void) ////funcion principal.
{
port_b_pullups(TRUE); ////Habilitadas resistencias pull-ups
SET_TRIS_B(0xFF); ////Declaro el puerto B como entrada.
SET_TRIS_A(0x00); ////Declaro el puerto A como salida.
///output_bit(pin_a0,0);
enable_interrupts(INT_RB); ////Hablilito la interrupcion externa.
enable_interrupts(GLOBAL);
sleep();
}
---------------------------------------------------------------------------------------------
Algo que me extraña es que al realizar la depuración en proteus, al ver el codigo C, las lineas de la funcion de interrupcion no tienen dirección asignada. No se si esto es indicativo de algo.
Espero vuestra ayuda.