Este es el contador del 0 al 9, ya lo simule y parece que esta bien
#include <16F84A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#use delay(clock=4000000)
#byte PORTA=5
#byte PORTB=6
void main()
{
set_tris_A(0xff); // Puerto A como entradas
set_tris_B(0b00); // Puerto B como salidas
portb=0b00; // Puerto B puesto en cero
int i;
i=0;
do{
do{
}
while (bit_test(PORTA,0));
(bit_clear(PORTB,3));
(bit_set(PORTB,0));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_clear(PORTB,0));
(bit_set(PORTB,1));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_set(PORTB,0));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_clear(PORTB,0));
(bit_clear(PORTB,1));
(bit_set(PORTB,2));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_set(PORTB,0));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_clear(PORTB,0));
(bit_set(PORTB,1));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_set(PORTB,0));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_clear(PORTB,0));
(bit_clear(PORTB,1));
(bit_clear(PORTB,2));
(bit_set(PORTB,3));
delay_ms(2000);
i=i+1;
do{
}
while (bit_test(PORTA,0));
(bit_set(PORTB,0));
delay_ms(2000);
i=i+1;
}
while (i<=9);
}
Hay alguna manera mas simple de hacerlo?
Por cierto cuando simulo el movimiento de la banda transportadora en proteus hay un punto donde se queda "congelado" y después de unos 15 segundos sigue con el funcionamiento ¿Alguien sabe por que?