Me parece bien. Sé que al ser nuevo en C o en PICC Compiler, tengas que usar el Wizard.Muchas gracias. Era eso. Ya funciona!
Pero no te lo recomiendo. Es mejor que seas tú quien defina las configuraciones.
Mucha información la puedes encontrar en la misma ayuda del programa con tan solo presionar la tecla F1.
Y por cierto. Al parecer estás realizando una secuencia de desplazamiento de bits.
Lo puedes hacer de una forma más sencilla si lo haces con bucles.
Por ejemplo, de ésta forma:
PHP:
#include <16f877a.h> // Librería del microcontrolador
#use delay(crystal = 4MHz) // Frecuencia del oscilador (Incluye palabra de configuración)
#byte portb = getenv("SFR:PORTB") // Definir el puerto B
void main (void) // Programa principal.
{
int8 i; // Variables de 8 bits.
int16 retardo = 127; // Variable de 16 bits. (Valor inicial = 127)
setup_adc_ports(AN0); // Configurar el ADC para el canal 0
setup_adc(ADC_CLOCK_INTERNAL); // El ADC usará el reloj interno RC
set_adc_channel(0); // Establecer el canal 0
delay_us(50); // Dar un tiempo al conversor.
set_tris_b(0x00); // Todo el puerto B como salidas.
portb = 1; // RB1 = 1
delay_ms(retardo); // Retardo inicial de 127 ms. (Mitad de 255)
while (true) // Bucle infinito.
{
retardo = read_adc();
if(retardo <30) retardo = 30; // No permitir que "retardo" sea menor a 30
for(i=1;i<=7;i++) // Bucle de 1 a 7 pasos.
{
portb <<=1; // Desplazar hacia la izquierda el bit activo del puerto B.
delay_ms(retardo); // Retardo de x ms.
}
for(i=1;i<=7;i++) // Bucle de 1 a 7 pasos.
{
portb >>=1; // Desplazar hacia la derecha el bit activo del puerto B.
delay_ms(retardo); // Retardo de x ms.
}
} // Fin del bucle.
} // Fin del programa.
Si se desea, se pueden eliminar las instrucciones para el ADC y establecer un retardo fijo.
Suerte.