Buenas tardes, tengo el mismo problema con el pic 16f88. Estoy intentando hacer un voltímetro de leds doble, multiplexando sus salidas, usando AN0 y AN1 (RA0 y RA1) como entradas analógicas, RA2, RA4, RA6 y RA7 como salidas comunes de 8 leds c/u. El problema que tengo es que las salidas RA6 y RA7 no me encienden los leds.
Les paso la programación:
#include <16f88.h>
#device adc=10
#use delay(clock=4M)
#fuses noprotect, nowdt, nobrownout, noput, nolvp
long nivel; // almacena bits
void main()
{
set_tris_b(0b00000000);
set_tris_a(0b00000011); // RA0, RA1 como entradas;
setup_adc_ports(sAN0); // entrada RA0 como análoga
setup_adc_ports(sAN1); // entrada RA0 como análoga
setup_adc(ADC_CLOCK_INTERNAL); // reloj del conversor
set_adc_channel(0); // selecciona canal para conversión
set_adc_channel(1); // selecciona canal para conversión
while(true)
{
output_low(pin_a2);output_low(pin_a4);output_low(pin_a6);output_low(pin_a7);//apaga salidas
output_b(0b11111111);
delay_ms(10); // retardo para lectura
nivel=read_adc(); // guardo la lectura en bits
if(nivel>50)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_01
output_b(0b11110111);
}//led_01
if(nivel>100)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_02
output_b(0b11111011);
}//led_02
if(nivel>150)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_03
output_b(0b11111101);
}//led_03
if(nivel>200)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_04
output_b(0b11111110);
}//led_04
if(nivel>250)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_05
output_b(0b11101111);
}//led_05
if(nivel>300)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_06
output_b(0b11011111);
}//led_06
if(nivel>350)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_07
output_b(0b10111111);
}//led_07
if(nivel>400)
{
output_high(pin_a2);output_low(pin_a4);output_low(pin_a6);output_high(pin_a7);//led_08
output_b(0b01111111);
}//led_08
if(nivel>450)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_09
output_b(0b01111111);
}//led_09
if(nivel>500)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_10
output_b(0b10111111);
}//led_10
if(nivel>550)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_11
output_b(0b11011111);
}//led_11
if(nivel>600)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_12
output_b(0b11101111);
}//led_12
if(nivel>650)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_13
output_b(0b11111110);
}//led_13
if(nivel>700)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_14
output_b(0b11111101);
}//led_14
if(nivel>750)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led015
output_b(0b11111011);
}//led_15
if(nivel>800)
{
output_low(pin_a2);output_high(pin_a4);output_high(pin_a6);output_low(pin_a7);//led_16
output_b(0b11110111);
}//led_16
} //bucle while
} /