Circuito esquemático :
Circuito de contador en PCB:
#include <main.h>
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_8MHZ);
while(!input(PIN_A3));
output_a (0b011001);
delay_ms (1000);
output_a (0b011000);
delay_ms (1000);
output_a (0b001111);
delay_ms (1000);
output_a (0b001110);
delay_ms (1000);
output_a (0b001101);
delay_ms (1000);
output_a (0b001100);
delay_ms (1000);
output_a (0b001011);
delay_ms (1000);
output_a (0b001010);
delay_ms (1000);
output_a (0b001001);
delay_ms (1000);
output_a (0b101000);
}
Otra forma de realizar el mismo programa , pero con vectores es :
#include <main.h>
void main()
{
int secuencia[] = {0b011001, 0b011000, 0b001111, 0b001110,
0b001101, 0b001100, 0b001011, 0b001010,
0b001001, 0b101000};
int i;
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_8MHZ);
while(!input(PIN_A3));
for (i=0; i < 10; i++) {
output_a (secuencia[i]);
delay_ms (1000);
}
}
Foto del circuito en el protoboard:
Video del programa para comprobar que funciona en el Proteus.
No hay comentarios:
Publicar un comentario