Fork me on GitHub

Microcontrolandos

O Blog está passando por uma fase de mudanças. Todos os posts estão sendo atualizados, códigos, links e imagens estão sendo arrumados. Conteúdos novos ainda estão por vir.

Projeto 19: Dado Eletronico

Share:

Dado Eletrônico com PIC16F628A


Projeto simples de um Dado Eletrônico utilizando o PIC16F628A

Funciona da seguinte maneira: Ao pressionar o botão START/STOP irá executar a função rand(). Essa função gera um número aleatório entre 0 e 32767, toda vez que é chamada. Ao pressionar o botão novamente, fixa o valor e exibe-o pela PORTB.

Como os números dos dados são de 1 a 6, tive que fazer uma regra de 3 com o valor randômico.

DOWNLOAD:
Firware: Dado.hex;
Arquivo de simulação do Proteus: Dado.DSN;

CóDIGO-FONTE:

long random;
bit oldstate, start;
int numeros[6] = {0x08,0x01,0x09,0x05,0x0D,0x07};
void main() {
oldstate=0;
start=0;
TRISB=0b10000000;
PORTB = 0x00;
while(1){
 if(PORTB.F7)  oldstate=1;
 if(!PORTB.F7 && oldstate){
  start= ~start;
  oldstate=0;
 }

 if(start){
  random = rand();//a função rand() gera um numero entre 0 e 32767
  random = ( 6 * random ) / 32767; //regra de 3
  PORTB = numeros[random];
 }else{
 PORTB = numeros[random];
 }

delay_ms(20);
 }
}

Nenhum comentário