Selecionando LED na sequência usando um botão
lista de peças para montagem em bancada:
- matriz de contatos pequena - pic16F628A, microcontrolador da Microchip - 4 resistor de 220 ohm para limitar a corrente do LED - 4 LED de 3 ou 5 mm vermelho - Botão de contato - cabinhos para ligações dos componentes - fonte de 5V, pode ser um carregador de celular ou suporte de 3 pilhas(4,5V) O código fonte: /////////////////////////////////////////////////////////////////////// // Projeto: Selecionar LED na sequência usando um botão // // Nome: Renato Lôbo Rodrigues // // Data: 18/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 //Estes registros encontra-se nas funções especiais de cada modelo de pic. #byte tris_portA = 0x85 //direção do portA #byte tris_portB = 0x86 //direção do portB #bit bot1 = 0x06.3 //pino B3 #bit RBPU = 0x81.7 //Registro pullup do portB #bit led1 = 0x05.0 //pino A0 #bit led2 = 0x05.1 //pino A1 #bit led3 = 0x05.2 //pino A2 #bit led4 = 0x05.3 //pino A3 //___________________________________________ //Rotina principal void main() { int1 st1 = true; //status do botão int8 ponteiro = 0;//seleciona um LED de cada vez tris_portB = 0b11111111; //todos os pinos como entrada RBPU = 0; //pull-up portB ativados tris_portA = 0b11110000; //pino A0,A1,A2,A3 como saída led1 = 1; //liga led1 led2 = 0; //desliga led2 led3 = 0; //desliga led3 led4 = 0; //desliga led4 while(true) //laço infinito { //funciona quando solta o botão (KeyUp) if (!bot1) st1=false; delay_ms(50); //um tempo para anular repique da chave if ( bot1 && st1==false) { st1=true; ponteiro++; if(ponteiro>3)ponteiro=0; led1 = 0 ;led2 = 0 ;led3 = 0 ;led4 = 0 ; //Apaga todos os LEDs switch (ponteiro) { case 0:led1 = 1 ; //Acende o led1 break; case 1:led2 = 1 ; //Acende o led2 break; case 2:led3 = 1 ; //Acende o led3 break; case 3:led4 = 1 ; //Acende o led4 break; } delay_ms(200); //um tempo para anular repique da chave }//fim do if }//fim do while } //fim do main
Nenhum comentário :
Postar um comentário
olá,digite aqui seu comentário!