Hola amigo, no se si aun te sirve la informacion como cuentas en tu programa si quieres compara lo que tienes en el puerto solo ponlo dentro del while(true).
Asi quedaria:
#include <16f877.h>
#fuses XT, NOWDT, NOPROTECT, PUT, Brownout
#use delay (clock = 4000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
int8 a1;
int8 b1;
int8 c1;
int8 d1;
// programa
void main (void)
{
while(true)
{
a1= input_a();
b1= input_b();
c1= input_c();
d1= input_d();
set_tris_a(0x3f);
set_tris_b(0x3f);
set_tris_c(0x3f);
set_tris_d(0x3f);
while(a1 != b1)
{
while(a1 < b1)
{
output_high(PIN_D7);
output_low(PIN_D6);
output_high(PIN_C7);
output_low(PIN_C6);
}
while(a1 > b1)
{
output_low(PIN_D7);
output_high(PIN_D6);
output_low(PIN_C7);
output_high(PIN_C6);
}
}
do
{
output_high(PIN_D6);
output_low(PIN_D7);
output_low(PIN_C6);
output_high(PIN_C7);
//delay_ms(1000);
}
while(0);
while(c1!= d1)
{
while(c1 < d1)
{
output_high(PIN_D7);
output_low(PIN_D6);
output_high(PIN_C7);
output_low(PIN_C6);
}
while(c1 > d1)
{
output_low(PIN_D7);
output_high(PIN_D6);
output_low(PIN_C7);
output_high(PIN_C6);
}
}
do
{
output_high(PIN_D6);
output_low(PIN_D7);
output_low(PIN_C6);
output_high(PIN_C7);
//delay_ms(1000);
}
while(0);
}
}
Prueba haber como te va... Saludos...
Asi quedaria:
#include <16f877.h>
#fuses XT, NOWDT, NOPROTECT, PUT, Brownout
#use delay (clock = 4000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
int8 a1;
int8 b1;
int8 c1;
int8 d1;
// programa
void main (void)
{
while(true)
{
a1= input_a();
b1= input_b();
c1= input_c();
d1= input_d();
set_tris_a(0x3f);
set_tris_b(0x3f);
set_tris_c(0x3f);
set_tris_d(0x3f);
while(a1 != b1)
{
while(a1 < b1)
{
output_high(PIN_D7);
output_low(PIN_D6);
output_high(PIN_C7);
output_low(PIN_C6);
}
while(a1 > b1)
{
output_low(PIN_D7);
output_high(PIN_D6);
output_low(PIN_C7);
output_high(PIN_C6);
}
}
do
{
output_high(PIN_D6);
output_low(PIN_D7);
output_low(PIN_C6);
output_high(PIN_C7);
//delay_ms(1000);
}
while(0);
while(c1!= d1)
{
while(c1 < d1)
{
output_high(PIN_D7);
output_low(PIN_D6);
output_high(PIN_C7);
output_low(PIN_C6);
}
while(c1 > d1)
{
output_low(PIN_D7);
output_high(PIN_D6);
output_low(PIN_C7);
output_high(PIN_C6);
}
}
do
{
output_high(PIN_D6);
output_low(PIN_D7);
output_low(PIN_C6);
output_high(PIN_C7);
//delay_ms(1000);
}
while(0);
}
}
Prueba haber como te va... Saludos...