Escolar Documentos
Profissional Documentos
Cultura Documentos
/*Contagem de 0 at 9 no display */
#include <16F877A.h> // biblioteca PIC 16F877A
#include <stdlib.h> // biblioteca
#fuses HS,NOWDT,NOLVP,NOBROWNOUT,NODEBUG,NOPROTECT,PUT,NOPROTECT
#use delay(clock=4000000) // tempo do relgio
void main(void) // incio do programa
{
while (true) // incio do while para repetio da contagem 0 a 9
{
byte num[10]; // criar um vetor como 10 posies
int i; // criar a varivel i do tipo inteiro
num[0]=63; // carregar a posio 0 do vetor com 63(0 em decimal)
num[1]=6; // carregar a posio 1 do vetor com 6 (1 em decimal)
num[2]=91; // carregar a posio 2 do vetor com 91 (2 em decimal)
num[3]=79; // carregar a posio 3 do vetor com 79(3 em decimal)
num[4]=102; // carregar a posio 4 do vetor com 102 (4 em decimal)
num[5]=109; // carregar a posio 5 do vetor com 109(5 em decimal)
num[6]=125; // carregar a posio 6 do vetor com 125(6 em decimal)
num[7]=7; // carregar a posio 7 do vetor com 7 (7 em decimal)
num[8]=127; // carregar a posio 8 do vetor com 127 (8 em decimal)
num[9]=103; // carregar a posio 9 do vetor com 103 (9 em decimal)
/*___________________________________________________________________________*/
if (b==10){ // condicional para o segundo visualizador B
b=0; // carregar b com 0
p5=num[b]; // carregar a varivel b com o nmero para visualizar P5
c=c+1; // aumentar o em uma unidade
p6=num[c]; // carregar a varivel c com o nmero para visualizar P6
} // fim do if do segundo visualizador
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
/*___________________________________________________________________________*/
if (c==10){ // condicional para o terceiro visualizador C
c=0; // carregar c com 0
p6=num[c]; // carregar a varivel c com o nmero para visualizar P6
d=d+1; // aumentar d em uma unidade
p7=num[d]; // carregar a varivel d com o nmero para visualizar P7
} // fim do if do terceiro visualizador
/*___________________________________________________________________________*/
if (d==10){ // condicional para o quarto visualizador D
d=0; // carregar d com 0
p7=num[d];
a=0;// carregar h com o nmero para visualizar
} // fim do if do quarto visualizador
/*___________________________________________________________________________*/
output_high(PIN_B7); // ativar a porta B7 do pic ligar o quarto visualizador
output_D(p7); //carregar a porta D com o valor de p7
delay_ms(20); // aguardar em milissegundo
output_low(PIN_B7); // desativar a porta B7 do pic desligar o terceiro visualizador
/*___________________________________________________________________________*/
output_high(PIN_B6); // ativar a porta B6 do pic ligar o terceiro visualizador
output_D(p6); //carregar a porta D com o valor de p6
delay_ms(20); // aguardar em milissegundo
output_low(PIN_B6); // desativar a porta B6 do pic desligar o terceiro visualizador
/*___________________________________________________________________________*/
/*___________________________________________________________________________*/
/*___________________________________________________________________________*/
a=a+1; // aumentar a em uma unidade
} // fim do while
} // fim do programa
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
5. Elaborar um programa em C para gerar um nmero aleatrio (int16 com cinco dgitos).
Desprezar o quinto dgito e exibir o nmero no display de sete segmentos. Acender o LED
instalado em RB0 se o nmero for mpar. Acender o LED instalado em RB0 e em RB1 se o
nmero for par. Utilizar as funes PAR e IMPAR para acender dois ou um leds,
respectivamente. Testar o programa no PROTEUS. Em seguida, gravar o programa na MCU da
placa didtica e avaliar os resultados.
void main(void)
{
set_tris_d(0b00000000); // Define pinos da Porta D como de sada
/* Declarao de variveis */
int16 aleatorio, divisor, aux;
int i,cont, alg_1, alg_2, alg_3, alg_4, alg_5, dig[6];
byte num[10];
/*___________________________________________________________________________*/
/* O quinto dgito (alg_5) desprezado conforme enunciado */
/* Aps exibir o numero no display os leds piscaram indicando se PAR ou IMPAR o numero */
/*___________________________________________________________________________*/
cont=cont+1;//contador para o while
}//fim while
}//fim da funcao void principal
/*___________________________________________________________________________*/
/* FUNO PAR */
void PAR(void)
{
output_high(PIN_B0);//acende led B0
output_high(PIN_B1);//acende led B1 junto com B0
delay_ms(1000); // aguardar 1 segundo antes de apagar o Led para o proximo numero
output_low(PIN_B0); //apaga led B0
output_low(PIN_B1); //apaga led B1
}
/*___________________________________________________________________________*/
/* FUNO MPAR */
void IMPAR(void)
{
output_high(PIN_B0);//acende led B0
delay_ms(1000); // aguardar 1 segundo antes de apagar o Led para o proximo numero
output_low(PIN_B0);//apaga led B0
}