muchas gracias Y@el al final se a quedado en esto y funcionando, si observas algo mal o mejorable agradeceria la correccion ahora ya puedo pasar a la segunda fase
#include <16f877a.h> //PIC utilizado
#fuses XT,NOWDT,NOPROTECT,PUT //Configuramos fuses
#use delay (clock=4000000) //Oscilador a 4Mhz
#use fast_io(a) //Optimizamos E/S A
#use fast_io(b) //Optimizamos E/S B
#byte portb = 0x6 //Direccion PORTB
#byte porta = 0x5 //Direccion PORTA
int i;
void arranque(){ //funcion arranque
if (i <
{ //condicion menor que 8
#asm
bsf 03,0; //pone el bit a 1
RLF portb,1 //rota a la izquierda por el puerto
#endasm
i++; //incrementa en 1
delay_ms(500); //retardo elegido
}
}
void paro(){ //funcion parada
if (i > 0){ //condicion mayor que 8
#asm
bcf 03,0; //pone el bit a cero
RRF portb,1 //rota a la derecha po el puerto
#endasm
i--; //decrementa en 1
delay_ms(500); //retardo elegido
}
}
void emergencia() // funcion emergencia
{
portb = 0b00000000; // todo el puerto a 0
}
void main()
{
i=0;
set_tris_b(0b00000000); // PORTB salida
set_tris_a(0b11111111); // PORTA entrada
portb=0;
do {
if (input(PIN_A0))
arranque();
else
paro();
}while (true);
}