TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kaki en 17 de Septiembre de 2013, 11:51:19
-
Hola buenos dias....
Escribo por que tengo una duda sobre esta interrupción (nunca la use), es INT_RB.
En esta interrupción se puede usar todo el puerto B para que interrumpa o solo de RB4 a RB7 ???
Saludos Cordiales!!
-
Normalmente así es, se refiere a RB4-7
Aunque eso deberá especificarlo el datasheet del micro.Por ejemplo el PIC16F1939 tiene configuracion individual por cada pin.
Saludos
-
Tenes razon no especifique el pic... es un 18f2550...
Tengo 7 pulsadores no da ni a palos para los 7??
-
Depende de lo que quieras hacer.
Es una práctica o es algo que tienes pensado realizar?
Se podría implementar como un teclado matricial pero con menos teclas.
Saludos
-
es un proyecto para la facultad... ya lo tengo hecho.. pero para que quede mejor lo que queria hacer es poner los botones en una interupccion...
son 7 botones.. y hay uno que se llama SET y cuando mantengo apretado ese y pulso otros hace cosas distintas que esos que pulse sin apretar SET...
No se si entiendes!
-
que tal kaki!
No se si entiendi bien, pero me parece que tu lo que quieres es que cuando se pulse set y se mantenga este pulsado, al cambiar algun otro pin del puerto B, se realice alguna accion?
Saludos
-
Lo que quiero es poner esto:
while(true){
while((input(PIN_B3)))//SET
{
while((input(PIN_B0)) & (minutosDec < MAXIMO_MINUTO))//UP Tiempo Decena +1
{
minutosDec += 1;
maxsend(5,minutosDec);
maxsend(6,minutosUni);
delay_ms(60);
}
while((input(PIN_B1)) & (minutosDec > MINIMO_MINUTO))//DOWN Tiempo Decena -1
{
minutosDec -= 1;
maxsend(5,minutosDec);
maxsend(6,minutosUni);
delay_ms(60);
}
while((input(PIN_B5)) & (minutosUni < MAXIMO_MINUTO))//UP Tiempo Unidad+1
{
minutosUni += 1;
maxsend(5,minutosDec);
maxsend(6,minutosUni);
componerMinutos();
delay_ms(60);
}
while((input(PIN_B6)) & (minutosUni > MINIMO_MINUTO))//DOWN Tiempo Unidad -1
{
minutosUni -= 1;
maxsend(5,minutosDec);
maxsend(6,minutosUni);
componerMinutos();
delay_ms(60);
}
}
if((input(PIN_B2)))//START
{
if (start == false) inicio();
while((input(PIN_B2))); //Anti Revote
}
if((input(PIN_B4)))//RESET
{
reset();
while((input(PIN_B4)));
}
if((input(PIN_B0)) & (tantosVisita < LIMITE_UP))//UP Visita
{
tantosVisita++;
mostadoDisplay(1,tantosVisita);
while((input(PIN_B0)));
}
if((input(PIN_B1)) & (tantosVisita > LIMITE_DOWN) )//DOWN Local
{
tantosVisita--;
mostadoDisplay(1,tantosVisita);
while((input(PIN_B1)));
}
if((input(PIN_B5)) & (tantosLocal < LIMITE_UP) )//UP Local
{
tantosLocal++;
mostadoDisplay(3,tantosLocal);
while((input(PIN_B5)));
}
if((input(PIN_B6)) & (tantosLocal > LIMITE_DOWN) )//DOWN Local
{
tantosLocal--;
mostadoDisplay(3,tantosLocal);
while((input(PIN_B6)));
}
}
Dentro una interrupcion...
-
Yo utilizaria la interrupcion por RB0 para el set, solamente para el while del set y agregaria un pequeño retardo ante de entrar al while debido al rebote del contacto de RB0, el resto del codigo podria ir afuera de la interrupcion :mrgreen:
Puedes probar eso para empesar :mrgreen:
-
Es que no tiene sentido creo.. por q cuando apreto STRART el set ya no sirve para nada... en cambio el UPLocal/Visita DOWNLocal/Visita si usan siempre..