http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf
lista de peças para montagem em bancada:
- matriz de contatos pequena
- pic16F628A, microcontrolador da Microchip
- resistor de 220 ohm para limitar a corrente do LED
- LED 3 ou 5 mm vermelho
- cabinhos para ligações dos componentes
- fonte de 5V, pode ser um carregador de celular ou suporte de 3 pilhas(4,5V)
A simulação:
foto do projeto:
O código fonte :
/////////////////////////////////////////////////////////////////////// // Projeto: pisca-pisca usando timer0 // // Nome: Renato Lôbo Rodrigues // // Data: 11/05/17 // // Email: lobosoft@oi.com.br // /////////////////////////////////////////////////////////////////////// #include <16F628A.h> #use delay (clock = 4Mhz) //Configure os fusíveis em acordo com o pic selecionado #fuses NOWDT #fuses PUT #fuses NOBROWNOUT #fuses NOMCLR #fuses INTRC_IO #fuses PROTECT #byte tris_portA = 0x85 //direção dos pinos do portA #byte tris_portB = 0x86 //direção dos pinos do portB #bit led1 = 0x05.0 //pino A0 //############################################################################## #bit GIE = 0x0b.7 //interrupção blobal #bit TOIE = 0x0b.5 //interrupção timer0 #bit TMR1ON = 0x10.0 //interrupção timer1 #bit TMR2ON = 0x12.2 //interrupção timer2 #byte tmr0 = 0x01 //preload do timer0 #byte OPTION_REG = 0x81 //registro no endereço 0x81 do banco1 //___________________________________________ //Rotina de interrupção do timer0 #int_rtcc void rotina_t0() { static int8 conta; conta++; // conta 125 vezes o tempo do timer0(4ms) para completar 500 miliseguundos if (conta==125) //125*4ms = 500ms => ciclo de 1 segundo { led1=~led1; //inverte a saída ligando ou desligando o LED. conta = 0; } tmr0 = 6; //inicia a contagem em 6 e vai até 256(onde estoura) } //___________________________________________ //Rotina principal void main() { //pinos configurado como entrada por segurança (alta impedância) tris_portA = 0b11111110; //todos os pinos do portA como entrada exceto pino A0 como saída tris_portB = 0b11111111; //todos os pinos do portB como entrada led1 = 1; //Acende o led1 //registro configurado para 4 milisegundos(veja pagina 25 do datasheet) OPTION_REG = 0b10000011;//1 = pull-up desabilitado //0000= deixe tudo zero como padrão //011 =prescaler dividido por 16 tmr0 = 6; //preload do timer0 para 4ms GIE = 1; //interrupção global ativa TOIE = 1; //interrupção timer0 ativa TMR1ON = 0; //desabilita timer1 TMR2ON = 0; //desabilita timer2 while(true) //laço infinito { } }
Nenhum comentário :
Postar um comentário
olá,digite aqui seu comentário!