Aquí está el programa...
Ya lo encendí, pero la salida en RC0 siempre está encendida... me pueden decir por favor que está mal? Gracias
El programa debe hacer esto... si hay un paso de 0 a 1 en RB0, la salida en RC0 encenderá 8ms, luego se apagará.
Cuando ocurre la interrupción, se guarda en un registro el valor ff, lo que enciende a RC0 con el if.
-----
//migsantiago
#include "16f877a.h"
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#use fast_io (b)
#use fast_io (c)
int valor; //indica que interrupción hubo
void main()
{
set_tris_b(0xff); //RB0 entrada
set_tris_c(0x00); //RC0 salida
enable_interrupts(INT_EXT); //habilita interrupción por flanco en RB0
EXT_INT_EDGE(L_to_H); //interrumpe cuando pasa de 0 a 1
enable_interrupts(global);
while(1)
{
if(valor=0xff)
{
valor=0x00;
output_c(0xff);
delay_ms(
;
}
output_c(0x00); //apaga todo
//se la pasa haciendo nada, esperando que haya interrupción
}
}
#int_EXT //aquí llega cuando el flanco es izquierdo
void inter_externa()
{
valor=0xff;
}