Hola buenos dias, soy nuevo en este foro, me disculaparan si coloque el tema en donde no debia.
Bueno ahora si al problemita, lo que sucede es que estaba tratando de ahcer un proyectico pequeño para unos comederos de peces, tengo que hacer que cada 24 horas se me activen unos motores por unos pocos segundo y que el tiempo en que los motores duren en funcionamiento sea variable gracias a dos interruptores (uno de incrementar tiempo y el otro de decrementar tiempo) bueno el codigo ya lo hice y funciona, pero el problema es que cuando lo simulo en proteus le doy "play" y se queda en un punto especifico del codigo (despues del void main) como si tuviera un break alli. Aunque a pesar de esto creo que deberia funcioanr en la vida real, no se.
JAJJAJA no ya no, cerre el proteus y funciono de maravilla..........jejej, igual si algo dejo el codigo por si a alguien le sirve........a y acepto mejoras XD
Para los que quizas les importe, el numero de interrupciones pa las 24 horas no es 1318 si no 1318359....... y en el while final colocar TRUE y los delays para eliminar los rebotes colocarlos de aprox 500ms y la variable "cont" es un entero de 32 osea "int32 cont"
Aqui esta el codigo
#include <16f84a.h>
#device *=16
#fuses XT, NOPROTECT, NOWDT, NOPUT
#use delay(clock=4000000)
#bit RB0=0X06.0
#bit RB1=0X06.1
int16 cont;
#int_RTCC
RTCC_isr(void)
{
cont++;
}
void main()
{ // AQUI SIEMPRE SE QUEDA
int16 var;
var=3000;
enable_interrupts(GLOBAL);
enable_interrupts(INT_RTCC);
setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_256);
do{
if(var>500 && var<6000)
{
if(RB0==1) //incrementa tiempo de los motores en 0.5s
{
delay_ms(60);
var=var+500;
}
if(RB1==1)
{
delay_ms(60);
var=var-500;
}
}
if(cont==1318)//se necesitan 1318 interrupciones para contar 24 horas
{
cont=0;
output_a(0x01);
delay_ms(var);
output_a(0x00);
}
}while(cont<1400);
}