Buscar

exercicios resolvidos microcontroladores PIC

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Capitulo 2
1-) Escreva um programa para acionar o led conectado no pino 0 da porta B da figura 9 de acordo com a seguinte lógica:
a-) Pisca 4 vezes o led a uma freqüência de 1 Hz,
b-) Espera 5 segundos,
c-) Pisca 6 vezes o led a uma freqüência de 2 Hz,
d-) Espera 3 segundos,
e-) Voltar para o item a.
OBS: O tempo ligado é igual ao tempo desligado. Comente cada linha do programa.
2-) Faça o desenho de um microcontrolador, alimentado com uma tensão de 5 V, que tem um led ligado no pino 0 da
porta B e um led ligado no pino 0 da porta A. Os leds devem ligar quando tiver nível lógico 1 no referido pino.
3-) Escreva um programa para fazer com que os leds do exercício anterior pisquem a uma freqüência de 2 Hz cada um. O
tempo que os leds ficam ligados deve ser igual ao tempo que ficam desligados e quando um led estiver ligado o outro deve
estar desligado. Comente cada linha do programa.
4-) Escreva um programa para acionar os leds do circuito do exercício 2 de acordo com a seguinte lógica.
a-) Pisca 3 vezes o led da porta A a uma freqüência de 1/3 Hz.
b-) Espera 1 segundo.
c-) Pisca 3 vezes o led da porta B a uma freqüência de 1/3 Hz.
d-) Espera 1 segundo.
e-) Pisca 5 vezes os dois leds simultaneamente a uma freqüência de 4 Hz.
f-) Espera 2 segundos.
g-) Volta para o item a.
OBS: O tempo ligado é igual ao tempo desligado. Comente cada linha do programa.
5-) Escreva um programa para acionar os leds do circuito do exercício 2 de acordo com a seguinte lógica.
a-) Pisca 4 vezes alternadamente os leds das portas A e B (quando um está ligado o outro está desligado) a uma
freqüência de 0,2 Hz.
b-) Espera 1 segundo.
c-) Pisca 3 vezes simultaneamente os leds das portas A e B a uma freqüência de 3 Hz.
d-) Espera 3 segundo.
e-) Volta para o item a.
OBS: O tempo ligado é igual ao tempo desligado. Comente cada linha do programa.
6-) Em código Morse o sinal SOS é produzido através de 3 bips curtos, 3 bips longos e 3 bips curtos novamente. Faça um
programa para reproduzir em um “buzzer” conectado no pino 0 da porta B o sinal SOS. O tempo de duração dos bips
curtos deve ser de 100 ms e os bips longos 200 ms. O tempo ligado deve ser igual ao tempo desligado. O tempo entre
cada sequência de 3 bips deve ser de 400 ms. Entre 1 SOS e outro, esperar 1,5 s. Comente cada linha do programa.
1) void main()
 {
 trisb = 0;
 while(1)
 {
 portb = 1; |
 delay_ms(500);| 4X
 portb = 0; |
 delay_ms(500);|
 
delay_ms(4500);
 portb = 1; 
 delay_ms(250);
 portb = 0; 6X
 delay_ms(250);
 delay_ms(2750);
 }
 }
3)
void main()
 {
 trisb=0;
 trisa=0;
 while(1)
 {
 portb=0;
 delay_ms(250);
 porta=1;
 delay_ms(250);
 portb=1;
 delay_ms(250);
 porta=0;
 delay_ms(250);
 } 
}
4)
 void main()
 {
 trisb=0;
 trisa=0;
 while(1)
 {
 Porta.f0 = 1;
 delay_ms(1500); 3X
 porta.f0 = 0;
 delay_ms(1500);
delay_ms(1000);
 Portb.f0 = 1;
 delay_ms(1500); 3X
 portb.f0 = 0;
 delay_ms(1500);
delay_ms(1000);
 porta.f0 = 1;
 portb.f0 = 1;
 delay_ms(125); 5x
 porta.f0 = 0;
 portb.f0 = 0;
 delay_ms(125);
delay_ms(3000);
 }
}
5)
void main() {
 trisb=0;
 trisa=0;
 while(1)
 {
 porta=1;
 portb=0;
 delay_ms(2500); 4X
 porta=0;
 portb=1;
 delay_ms(2500);
 
 delay_ms(1000);
 porta=1;
 portb=1;
 delay_ms(166);
 porta=0; 3X
 portb=0;
 delay_ms(166);
 
 delay_ms(3000);
 }
}
6)
void main() {
 trisb=0;
 while(1)
 {
 portb=1;
 delay_ms(100); 3X
 portb=0;
 delay_ms(100);
 delay_ms(400);
 
 portb=1;
 delay_ms(200); 3X
 portb=0;
 delay_ms(200);
 delay_ms(400);
 
 portb=1;
 delay_ms(100); 3X
 portb=0;
 delay_ms(100);
 
 delay_ms(1500);
 }
}
Capitulo 4
15-) Dado o circuito da figura 9, faça um programa para piscar 3 vezes, simultaneamente, os leds 0 e 2 a uma
freqüência de 2 Hz, espera 3 segundos e pisca 4 vezes, alternadamente, os leds 1 e 3 a uma freqüência de 1 Hz,
espera 2 segundos e recomeça o ciclo. O tempo que cada led fica ligado é igual ao tempo em que ele fica desligado.
Faça o programa de duas formas:
a-) Utilizando o acesso individual aos pinos da porta B.
b-) Colocando na porta B um valor (em binário, decimal ou hexadecimal) para ligar o led correto.
16-) Deseja-se comandar a ligação dos leds conectados nos pinos da porta B da figura 9 através da chave colocada no
pino 0 da porta A. Faça um programa que coloque no pino 0 da porta B, durante um segundo o mesmo nível lógico do
pino 0 da porta A, espera 1 segundo e coloca no pino 1 da porta B o mesmo nível lógico do pino 0 da porta A, espera mais
1 segundo e repete para o pino 2 da porta B e assim sucessivamente, depois volta para o pino 0 da porta B.
17-) Dado o circuito da figura 10, faça um programa que coloque no pino 0 da porta B o mesmo nível lógico presente no pino 0 da
porta A, espera 1 segundo e coloca no pino 0 da porta B o mesmo nível lógico do pino 1 da porta A, e assim por diante, até o pino 4
da porta A quando então volta para o pino 0 da porta A recomeçando o ciclo.
18-) Faça o programa que corresponde ao fluxograma da figura 11.
19-) Considere que o programa do exercício anterior foi gravado em um microcontrolador PIC. Descreva o
funcionamento do circuito.
20-) Faça um programa para ligar os 8 leds conectados na porta B de um microcontrolador PIC na seguinte
sequência: liga os leds 0 e 7, espera 1s, desliga os leds 0 e 7 e liga os leds 1 e 6, espera 1s, desliga os leds 1 e 6 e
liga os leds 2 e 5, espera 1s, desliga os leds 2 e 5 e liga os leds 3 e 4, espera 1s, desliga os leds 3 e 4 e liga os leds 2
e 5, espera 1s, desliga os leds 2 e 5 e liga os leds 1 e 6, espera 1s, desliga os leds 1 e 6 e reinicia o ciclo.
21-) Faça um programa para ligar os 8 leds conectados na porta B de um microcontolador PIC de forma seqüencial,
ou seja, liga o led 0, espera 1s, desliga o led 0 e liga o led 1, espera 1s, desliga o led 1 e liga o led 2 e assim por
diante até o led 7.
22-) Faça um programa para ligar os 8 leds conectados na porta B de um microcontolador PIC de forma seqüencial,
ou seja, liga o led 7, espera 1s, desliga o led 7 e liga o led 6, espera 1s, desliga o led 6 e liga o led 5 e assim por
diante até o led 7.
Figura 10
23-) Combine os programas dos exercícios anteriores para fazer um seqüencial que ligue os leds 0 a 7 e depois de 6
a 1, novamente de 0 a 7 e assim por diante. Cada led deve ficar ligado durante 1 segundo.
24-) Dado o circuito abaixo, faça o programa de um contador de 0 a F. Cada algarismo deve ser apresentado no
display durante 1s.
25-) Faça um programa que, inicialmente posicione o eixo de um motor de passo na posição mostrada na figura 6,
após 5s o eixo do motor deve girar 180º no sentido horário com passos de 45º e duração de 250 ms, espera 3s, gira
180º em sentido contrário com passos de 45º e duração de 500 ms, pára, espera 5s, gira novamente o eixo 180º no
sentido horário com passos de 45º e duração de 250 ms e assim por diante.
26-) O pino 0 da porta B de um microcontrolador PIC16F628A é utilizado para fazer o acionamento de um motor de
corrente contínua com excitação independente. A velocidade do motor é proporcional ao valor médio da tensão
aplicada no induzido do motor que está mostrada na figura abaixo. Sabendo-se que o período da forma de onda é
de 60 ms, escreva um programa que faça este motor girar a uma velocidade igual a 2/3 da velocidade máxima..
14)
a) void main() {
 trisb.f0 = 0;
 trisb.f1 = 0;
 trisb.f2 = 0;
 trisb.f3 = 0;
 while (1)
 {
 portb.f0 = 1;
 delay_ms(1000);
 portb.f0 = 0;
 portb.f1 = 1;
 delay_ms(1000);
 portb.f1 = 0;
 portb.f2 = 1;
 delay_ms(1000);
 portb.f2 = 0;
 portb.f3 = 1;
 delay_ms(1000);portb.f3 = 0;
 }
}
b) void main() {
 trisb = 0;
 while(1)
 {
 portb = 1;
 delay_ms(1000);
 portb = 2;
 delay_ms(1000);
 portb = 4;
 delay_ms(1000);
 portb = 8;
 delay_ms(1000);
 }
}
15)
a)
void main() {
trisb.f0 = 0;
trisb.f1 = 0;
trisb.f2 = 0;
trisb.f3 = 0;
while(1)
{
portb.f0 = 1;
portb.f2 = 1;
delay_ms(250);
portb.f0 = 0;
portb.f2 = 0;
delay_ms(250);
portb.f0 = 1;
portb.f2 = 1;
delay_ms(250);
portb.f0 = 0;
portb.f2 = 0;
delay_ms(250);
portb.f0 = 1;
portb.f2 = 1;
delay_ms(250);
portb.f0 = 0;
portb.f2 = 0;
delay_ms(250);
delay_ms(3000);
portb.f1 = 1;
portb.f3 = 0;
delay_ms(500);
portb.f1 = 0;
portb.f3 = 1;
delay_ms(500);
portb.f1 = 1;
portb.f3 = 0;
delay_ms(500);
portb.f1 = 0;
portb.f3 = 1;
delay_ms(500);
portb.f1 = 1;
portb.f3 = 0;
delay_ms(500);
portb.f1 = 0;
portb.f3 = 1;
delay_ms(500);
portb.f1 = 1;
portb.f3 = 0;
delay_ms(500);
portb.f1 = 0;
portb.f3 = 1;
delay_ms(500);
portb.f3 = 0;
delay_ms(2000);
}
}
b) void main() {
 trisb = 0;
 while (1)
 {
 portb = 5;
 delay_ms(250);
 portb = 0;
 delay_ms(250);
 portb = 5;
 delay_ms(250);
 portb = 0;
 delay_ms(250);
 portb = 5;
 delay_ms(250);
 portb = 0;
 delay_ms(250);
 delay_ms(3000);
 portb = 2;
 delay_ms(500);
 portb = 8;
 delay_ms(500);
 portb = 2;
 delay_ms(500);
 portb = 8;
 delay_ms(500);
 portb = 2;
 delay_ms(500);
 portb = 8;
 delay_ms(500);
 portb = 2;
 delay_ms(500);
 portb = 8;
 delay_ms(500);
 portb = 0;
 delay_ms(2000);
 }}
16)
void main() {
trisa.f0 = 1;
trisb = 0;
while (1){
portb.f0 = porta.f0;
delay_ms(1000);
portb.f1 = porta.f0;
delay_ms(1000);
portb.f2 = porta.f0;
delay_ms(1000);
portb.f3 = porta.f0;
delay_ms(1000);
}}
17)
void main() {
 trisa = 15;
 trisb = 0;
 while (1){
 portb.f0 = porta.f0;
 delay_ms(1000);
 portb.f0 = porta.f1;
 delay_ms(1000);
 portb.f0 = porta.f2;
 delay_ms(1000);
 portb.f0 = porta.f3;
 delay_ms(1000);
 }}
18)
void main() {
trisb = 0;
trisa = 15;
while(1)
{
portb.f3 = porta.f0;
delay_ms(1000);
portb.f2 = porta.f1;
delay_ms(1000);
portb.f1 = porta.f2;
delay_ms(1000);
portb.f0 = porta.f3;
delay_ms(1000);
}
}
20)
void main() {
trisb = 0;
while (1)
{
portb.f0 = 1;
portb.f7 = 1;
delay_ms(1000);
portb.f0 = 0;
portb.f7 = 0;
portb.f1 = 1;
portb.f6 = 1;
delay_ms(1000);
portb.f1 = 0;
portb.f6 = 0;
portb.f2 = 1;
portb.f5 = 1;
delay_ms(1000);
portb.f2 = 0;
portb.f5 = 0;
portb.f3 = 1;
portb.f4 = 1;
delay_ms(1000);
portb.f3 = 0;
portb.f4 = 0;
portb.f2 = 1;
portb.f5 = 1;
delay_ms(1000);
portb.f2 = 0;
portb.f5 = 0;
portb.f1 = 1;
portb.f6 = 1;
delay_ms(1000);
portb.f1 = 0;
portb.f6 = 0;
}
}
21)
void main() {
trisb = 0;
while (1)
{
portb.f0 = 1;
delay_ms(500);
portb.f0 = 0;
delay_ms(500);
portb.f1 = 1;
delay_ms(500);
portb.f1 = 0;
delay_ms(500);
portb.f2 = 1;
delay_ms(500);
portb.f2 = 0;
delay_ms(500);
portb.f3 = 1;
delay_ms (500);
portb.f3 = 0;
delay_ms(500);
portb.f4 = 1;
delay_ms (500);
portb.f4 = 0;
delay_ms (500);
portb.f5 = 1;
delay_ms (500);
portb.f5 = 0;
delay_ms (500);
portb.f6 = 1;
delay_ms (500);
portb.f6 = 0;
delay_ms(500);
portb.f7 = 1;
delay_ms (500);
portb.f7 = 0;
delay_ms (500);
}
}
22)
trisb=0;
while (1)
{
portb.f7=1;
delay_ms (500);
portb.f7=0;
delay_ms (500);
portb.f6=1;
delay_ms (500);
portb.f6=0;
delay_ms (500);
portb.f5=1;
delay_ms (500);
portb.f5=0;
delay_ms (500);
portb.f4=1;
delay_ms (500);
portb.f4=0;
delay_ms (500);
portb.f3=1;
delay_ms (500);
portb.f3=0;
delay_ms (500);
portb.f2=1;
delay_ms (500);
portb.f2=0;
delay_ms (500);
portb.f1=1;
delay_ms (500);
portb.f1=0;
delay_ms (500);
portb.f0=1;
delay_ms (500);
portb.f0=0;
delay_ms (500);
 }
}
23) void main() {
trisb = 0;
while(1)
{
portb.f0=1;
delay_ms(500);
portb.f0=0;
delay_ms(500);
portb.f1=1;
delay_ms(500);
portb.f1=0;
delay_ms(500);
portb.f2=1;
delay_ms(500);
portb.f2=0;
delay_ms(500);
portb.f3=1;
delay_ms(500);
portb.f3=0;
delay_ms(500);
portb.f4=1;
delay_ms(500);
portb.f4=0;
delay_ms(500);
portb.f5=1;
delay_ms(500);
portb.f5=0;
delay_ms(500);
portb.f6=1;
delay_ms(500);
portb.f6=0;
delay_ms(500);
portb.f7=1;
delay_ms(500);
portb.f7=0;
delay_ms(500);
portb.f6=1;
delay_ms(500);
portb.f6=0;
delay_ms(500);
portb.f5=1;
delay_ms(500);
portb.f5=0;
delay_ms(500);
portb.f4=1;
delay_ms(500);
portb.f4=0;
delay_ms(500);
portb.f3=1;
delay_ms(500);
portb.f3=0;
delay_ms(500);
portb.f2=1;
delay_ms(500);
portb.f2=0;
delay_ms(500);
portb.f1=1;
delay_ms(500);
portb.f1=0;
delay_ms(500);
}
}
24) 
void main()
{
trisb = 0;
while(1)
{
portb = 0b11101110;
delay_ms (1000);
portb = 0b00101000;
delay_ms (1000);
portb = 0b11001101;
delay_ms (1000);
}
}
25)
Capitulo 5
1-) Escreva um programa para ligar o led da figura 1 se pelo menos uma das duas chaves for pressionada.
2-) Escreva um programa para ligar o led da figura 1 se apenas uma das chaves for pressionada. Se nenhuma
chave for pressionada ou, se as duas chaves forem pressionadas simultaneamente, o led deve ser desligado.
Carregando-se o microcontrolador da figura 1 com este programa, o circuito funcionará como uma chave paralela.
3-) Escreva um programa, utilizando o operador lógico NOT (~), para ligar o led da figura 1 se a chave 0 estiver
aberta e desligá-lo se a chave estiver fechada.
4-) Escreva um programa para ligar o led da figura 1 somente se as duas chaves estiverem abertas.
5-) Escreva um programa para desligar o led da figura 1 se apenas uma das chaves estiver fechada.
6-) Escreva um programa para piscar o led da figura 1 a uma frequência de 2 Hz, com tempo ligado igual ao tempo
desligado, utilizando o operador lógico NOT (~).
7-) Considere que foram colocadas mais duas chaves no circuito da figura 1, uma no pino 2 e outra no pino 3 da porta A.
Faça um programa para ligar o led 0 se as chaves 0 e 1 estiverem fechadas ou as chaves 2 e 3 estiverem fechadas.
8-) Em relação ao circuito do exercício anterior, faça um programa para ligar o led 0 se a chave 0 estiver fechada ou
as chaves 1 e 2 estiverem fechadas ou a chave 3 estiver fechada.
9-) Em relação ao circuito do exercício 7, faça um programa para ligar o led 0 se a chave 0 ou a chave 1estiver
fechada e a chave 2 ou a chave 3 estiver fechada. Não se esqueça que o operador AND tem prioridade em relação
ao operador OR.
10-) Em relação ao circuito do exercício 7, faça um programa para ligar o led 0 se as chaves 0 e 2 estiverem abertas
e as chaves 1 e 3 estiverem fechadas. Sugestão: Construa a tabela verdade e utilize o método soma de produtos.
11-) Refaça o exemplo 3 invertendo o sentido de ligação dos leds, ou seja, primeiro liga o led 7, depois o 6 e assim
por diante. Utilize o operador >> (deslocamento à direita).
12-) Combine os programas do exemplo 3 e do exercício anterior e faça um sequencial para ligar os leds 0 a 7 e
depois de 6 a 1, novamente de 0 a 7, e assim por diante.
1)
void main() {
trisb.f0 = 0;
trisa = 6;
portb = 0;
cmcon = 7;
while(1)
{
portb.f0 = porta.f2|porta.f1;
}
}
2)
void main() {
 portb = 0;
 trisa = 6;
 trisb.f0 = 0;
 cmcon = 7;
 while (1)
 {
 portb.f0 = porta.f1^porta.f2;
 }
}
3)
void main() {
 trisb.f0 = 0;
 trisa = 6;
 portb = 0;
 cmcon = 7;
 while(1)
 {
 portb.f0 = ~porta.f1 & porta.f2;
 }
}
4)
void main() {
 trisb.f0 = 0;
 trisa = 6;
 portb = 0;
 cmcon = 7;
 while(1)
 {
 portb.f0 = ~porta.f1 & ~porta.f2;
 }
}
5)
void main() {
 trisb.f0 = 0;
 trisa = 6;
 portb = 0;
 cmcon = 7;
 while(1)
 {
 portb.f0 = ~(porta.f1 ^ porta.f2);
}
}
6)
void main() {
 trisb.f0= 0;
 trisa = 6;
 portb = 0;
 cmcon = 7;
 while(1)
 {
 portb.f0 = porta.f1;
 delay_ms(500);
 portb.f0 = ~porta.f1;
 delay_ms(500);
 }
}
7)
void main() {
 trisb.f0 = 0;
 trisa = 0b11110;
 portb = 0;
 cmcon = 7;
 while(1)
 {
 portb.f0 = ~(porta.f1&porta.f2) | ~(porta.f3&porta.f4)
 }
}
8)
void main()
{
Trisb.f0 = 0;
Trisa = 0b11110;
Cmcon = 7;
While (1)
Portb = 0;
{
Portb.f0 = (porta.f0) | (porta.f1 & porta.f2) | (porta.f3)
}}
9)
Void main()
{
Trisb.f0 = 0;
Trisa = 15;
Cmcon = 7;
While (1)
Portb = 0;
{
Portb.f0 = (porta.f0 | porta.f1) & (porta.f2 | porta.f3)
}}
10)
Void main()
{
Trisb.f0 = 0;
Trisa = 15;
Cmcon = 7;
Portb = 0;
While (1)
{
Portb = (~porta.f0 & ~porta.f2) & (porta.f1 & porta.f3)}}
11)
Void main()
{
Trisb = 0;
Portb = 0;
While (1)
{
Portb = 0b10000000;
Delay_ms(500);
Portb = portb>>1 6X
Delay_ms(500)
} }
co

Outros materiais