hola bueno te comento despues de unos cabesazos se me ilumino la ampolleta y lo voy a ahcer con interrupciones ya lo cheque funciona de lo mejor a qui dejo el codigo y me das tu opinion al respecto y si algo se puede mejorar seria jenial XD bueno saludos
#include <16f876a.h> //pic a utilizar
#device ADC=8
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#use delay (clock=20000000) //clock=20Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd.c> //libreria manejo lcd
#use standard_io(A)
///DECLARACION DE FUNCIONES
void opcion_1(void); //funcion cuenta ascendente
void opcion_2(void); //funcion cuenta descendente
void opcion_3(void); //funcion cuenta descendente
///DECLARACION VARIABLES GLOBALES
///PROGRAMA
void main(void)
{
lcd_init(); //inicializa lcd
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
///inicializamos el contador
lcd_init(); //inicializa lcd
printf(lcd_putc,"Presione boton" ); //muestra mensaje inicio
do{
if(!input(PIN_A0)){ //¿se ha pulsado el boton?
do{ //SI -> eliminar...
}while(!input(PIN_A0)); //...rebotes del boton
opcion_1();
}
if(!input(PIN_A1)){ //¿se ha pulsado el boton?
do{ //SI -> eliminar...
}while(!input(PIN_A1)); //...rebotes del boton
opcion_2();
}
if(!input(PIN_A2)){ //¿se ha pulsado el boton?
do{ //SI -> eliminar...
}while(!input(PIN_A2)); //...rebotes del boton
opcion_3();
}
}while(TRUE);
}
void opcion_1(void) //funcion cuenta ascendente
{ lcd_init(); //inicializa lcd
for(;
{
printf(lcd_putc,"Driver Motor PAP_1");
}}
void opcion_2(void) //funcion cuenta descendente
{lcd_init(); //inicializa lcd
for(;
{
printf(lcd_putc,"Driver Motor PAP_2");
}}
void opcion_3(void) //funcion cuenta descendente
{lcd_init(); //inicializa lcd
for(;
{
printf(lcd_putc,"Driver Motor PAP_3");
}}