#include<16f628A.h>
#Fuses xt,nowdt,NOPROTECT, PUT, NOLVP,MCLR
#use delay(clock=4000000)
#use fast_io(b)
int16 contador=0;
#int_ext
void ext_isr()
{
disable_interrupts(int_timer1);
output_toggle(PIN_B1);
enable_interrupts(int_timer1);
}
#int_timer1
void TIMER1_isr(void)
{
contador++;
if(contador==100)
{
output_toggle(PIN_B7);
output_bit(PIN_B5,1);
contador=0;
}
}
void main() {
set_tris_b (0b00000001);
set_tris_a (0b00000001);//swich que intenta cambiar el valor de la variable
output_bit(PIN_B1,0);
ext_int_edge(0,L_TO_H);//output_low(int_timer1);//Inicia con el led encendido
setup_timer_1(RTCC_INTERNAL| RTCC_DIV_4);
set_timer1(192);
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
while(true)
{
if(input(PIN_B1)==0)
contador=0;
if(input(PIN_B1)==1)//cuando coloco este codigo aqui el programa no funciona
contador == 2550;
}
}
Retovil, veo que has tomado un atajo y creo que no es el camino adecuado, aunque a veces funcione.Me parecio claro el objetivo, que es sencillamene cambiar de un tiempo menor a un tiempo mayor
En el hilo que pusiste anteriormente te propuse un ejercicio, no era por capricho, se trataba de que comprendas lo que haces. Si te limitas a copiar partes del codigo y amontonarlas en otro programa, existe la posibilidad de que te funcione, pero hay muchas mas posibilidades de que no sea asi, sobretodo si no estas entendiendo al 100 % lo que tratas de hacer.
Saludos.
Es obvio retovil que no va a funcionar. Ninguno de tus 2 if harian que funcione.. Y me voy a explicar...y KillerJc la pregunta del millon ,donde registra el programa el conteo de 100
Supongamos que PIN_B1 esta en 0.
Mientras esta en el main, se pone un 0 en contador.
Entra a la interrupcion, incrementa contador a 1, sale
Vuelve al main, y contador en 0 de nuevo.
Lo cual nunca va a activar el TMR1 ya que jamas contador va a ser 100.
Podria ser presionar solo un boton, y que vaya intercambiando entre varias velocidades. Simplemente deberias tener un array con los valores y cada ves que se presiona el boton se procede a incrementar el indice del array. Ojo que debe tener proteccion para que antes se suelte el boton. Y proteccion de que el indice no supere la cantidad de valores que posee el array.En esto estoy colocar un array ponele llamdo int8 vector[3]{300,800,1200};
int8 vector[3]{300,800,1200};
for (i=0;<=3;i=i+1); //aca es donde me hace ruido,accionando el boton pasa de una en una ,o for lo recorre todo?