Esto es lo que hice y comprobé ayer por la tarde:
Codigo:
// Potenciómetro digital
#include <16f876.h>
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay(clock=4000000)
void main(void)
{
output_high(PIN_B0); //DC=1
output_high(PIN_B1); //UC=1
output_high(PIN_B2); //D=1
while(1)
{
if(input(PIN_A0)) //Potenciómetro ascendente paso a paso
{
output_low(PIN_B1);
delay_ms(50);
output_high(PIN_B1);
while(input(PIN_A0));
delay_ms(50);
}
if(input(PIN_A1)) //Potenciómetro descendente paso a paso
{
output_low(PIN_B0);
delay_ms(50);
output_high(PIN_B0);
while(input(PIN_A1));
delay_ms(50);
}
if(input(PIN_A2)) //Potenciómetro ascendente automático
{
output_low(PIN_B1);
delay_ms(50);
while(input(PIN_A2));
output_high(PIN_B1);
delay_ms(50);
}
if(input(PIN_A3)) //Potenciómetro descendente automático
{
output_low(PIN_B0);
delay_ms(50);
while(input(PIN_A3));
output_high(PIN_B0);
delay_ms(50);
}
if(input(PIN_A4)) //Sube y baja indefinidamente hasta que B2=1
{
output_low(PIN_B2);
delay_ms(50);
while(input(PIN_A4));
output_high(PIN_B2);
delay_ms(50);
}
}
}
Falta añadir el if que controlaría al potenciómetro mediante la entrada D (CPU), MGL ¿te podrías tú encargar de eso?
Un saludo