Baixe o app para aproveitar ainda mais
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
Compartilhar