LedChaser com PIC16F84A
Bom, este esquema é simples, então estarei colocando apenas o esquemático e o código fonte do PIC e os links de download para os códigos compilados também. Usei o CCS C para compila-los.
Esquemático:
Downloads:
Código Fonte:
#include <16F84A.h>
#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES NOPROTECT
#use delay(clock=4000000)
int timing = 50;
void check_timer() {
if(!INPUT(PIN_A0)) {
if(timing != 400)
timing = timing+10;
}
if(!INPUT(PIN_A1)) {
if(timing != 30)
timing = timing-10;
}
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
while(true) {
OUTPUT_B(0x80);
delay_ms(timing);check_timer();
OUTPUT_B(0xC0);
delay_ms(timing);check_timer();
OUTPUT_B(0x60);
delay_ms(timing);check_timer();
OUTPUT_B(0x30);
delay_ms(timing);check_timer();
OUTPUT_B(0x18);
delay_ms(timing);check_timer();
OUTPUT_B(0x0C);
delay_ms(timing);check_timer();
OUTPUT_B(0x06);
delay_ms(timing);check_timer();
OUTPUT_B(0x03);
delay_ms(timing);check_timer();
OUTPUT_B(0x01);
delay_ms(timing);check_timer();
OUTPUT_B(0x01);
delay_ms(timing);check_timer();
OUTPUT_B(0x03);
delay_ms(timing);check_timer();
OUTPUT_B(0x06);
delay_ms(timing);check_timer();
OUTPUT_B(0x0C);
delay_ms(timing);check_timer();
OUTPUT_B(0x18);
delay_ms(timing);check_timer();
OUTPUT_B(0x30);
delay_ms(timing);check_timer();
OUTPUT_B(0x60);
delay_ms(timing);check_timer();
OUTPUT_B(0xC0);
delay_ms(timing);check_timer();
OUTPUT_B(0x80);
delay_ms(timing*2);
}
}