Buscar

Lista 03

Prévia do material em texto

Universidade Federal de Mato Grosso - UFMT 
Faculdade de Arquitetura, Engenharia e Tecnologia - FAET 
Departamento de Engenharia Elétrica 
Microprocessadores - 2016/2 
 
Lista para prova N3 
1) Caraterísticas especiais dos microcontroladores PIC: responda ou complete a frase com a 
resposta certa. 
a) Que acontece se o temporizador de arranque é habilitado? 
b) O cão de guarda geralmente é usado para duas funções, descreva essa funções: 
i. ...................................................................................................................................................... 
ii. ..................................................................................................................................................... 
c) Disserte sobre os bits de proteção de código. 
2) Geração de sinais PWM usando microcontroladores PIC 
a) Qual é a função de registrador PR2 no módulo PWM? 
b) Determine a faixa de frequências válida para gerar sinais PWM utilizando o módulo didático do 
laboratório de Micro. 
c) Para um sinal PWM de 10kHze o duty cycle é 75%, determine o período do ciclo de trabalho 
(tempo quando o sinal é alto). 
d) Escreva um programa em C para gerar um sinal PWM a uma frequência FPWM = 5kHz. Sendo 
que o valor do duty-cycle deverá ser controlado pelo potenciômetro conectado ao pino RA3 do 
µC PIC. Os valores da frequência e duty-cycle devem ser mostrados no LCD. O valor do duty-
cycle, entre 0% e 100%, deve ser mostrado com uma precisão de duas casas decimais. 
3) Controle de dispositivos via I2C 
a) Escreva um programa em C para setar um RTC. Para isso, devem-se enviar, através de um 
terminal UART, novos valores para os registradores de TEMPO e CALENDARIO de um RTC DS-
1307. O programa deve incluir as funções necessárias para invalidar dados errados. Uma hora 
correta deve ser enviada no formato hh:mm:ss. O dia da semana deve ser enviada usando 1 até 
7 (sendo 1=domingo). Uma data certa deve ser enviada no formato dd:mm:aa. Considere que 
pode usar a função SETA_RTC() para setar os registradores no RTC. Para usar essa função, os 
valores correspondentes, todos no formato BCD empacotados, devem ser previamente 
armazenados nas variáveis: hra_rtc, min_rtc, seg_rtc, dia_sem, dia_mes, mês, ano. 
4) Exercícios usando linguagem de programação C para microcontroladores PIC: 
a) Escreva um programa em C para controlar 
alguns LEDs, do módulo didático, por meio do 
teclado básico 4x4. Cada tecla pressionada 
deve controlar um LED, do LED_1 ao LED_3, 
correspondentemente às teclas [1], [2] e [3] do 
módulo didático (ver figura). 
Os LEDs devem iniciar desligados, e a cada vez 
que a tecla correspondente a um dado LED for 
pressionada, o estado do LED deve ser 
invertido. Por exemplo, se o LED estava OFF 
deve se tornar ON, e vice-versa 
b) Elabore um fluxograma e escreva um programa 
em C para mostrar nos LEDs ligados à porta D 
do µC PIC do módulo didático, o valor de um 
contador binário up/down de 8 bits. A aplicação 
deve iniciar com contagem ascendente. Cada vez que pulsar a tecla a tecla [A] deve mudar o 
tipo de contagem: de up para down ou de down para up. Ver figura do teclado básico 4x4. 
F E D 
C 
B
A RC0 
RC1 
RC2 
RC3 
RB3 RB2 RB1 RB0 
 
 
 
c) Elabore um fluxograma e escreva um programa na linguagem C para piscar um LED 5 vezes na 
frequência de 2Hz, depois 5 vezes na frequência de 1Hz. O programa deve repetir essa 
sequência até pulsar a tecla [A], então o LED devem ficar apagado. Se pulsar a tecla [C], o LED 
deve recomeçar o ciclo de pisca pisca. Ver figura do teclado básico 4x4. 
d) Escreva um programa em C para implementar um RTC utilizando interrupções por transbordo 
de TMR1. Então, o programa deve para acionar o buzzer (conectado ao pino RA2) por 5 
segundos a cada 30 segundos. Além disso, o programa deve reiniciar o relógio caso a tecla [0] 
do teclado básico 4x4 (ver figura acima) seja pressionada. 
e) Elabore um fluxograma e escreva um programa na linguagem C para monitorar um contador 
BCD de peças de 00 a 99, quando chegar em 99 deve-se aguardar até pressionar uma tecla [C] 
para reiniciar a contagem. 
f) Escreva um programa em C para realizar a conversão analógica-digital do valor de tensão lido 
pelo potenciômetro conectado ao pino RA3 do µC PIC. Mostre no display LCD o valor de tensão 
correspondente, entre 0 e 5V, com a precisão de duas casas decimais. 
 
 
 
 
 
Questões de provas escritas anteriores 
1) Mencione três critérios elementares que devem ser utilizados para definir a palavra de 
configuração no µC PIC16F877A. (2015/2) 
1. ................................................................................................................................................. 
2. ................................................................................................................................................. 
3. ................................................................................................................................................. 
2) Para implementar um RTC utilizando o Timer 1, calcular e deduzir os valores que devem ser 
definidos no temporizador e nas variáveis auxiliares utilizadas. Em seguida: a) Preencha a Tabela 
a seguir; b) complete os valores literais na rotina de interrupção (Linguagem C); c) implemente 
o fluxograma da rotina de interrupção; d) complete os valores literais no programa principal 
(Assembly) e faça um ressumo conciso desse trecho de código; e) Escreva a rotina de 
interrupção em Assembly para o µC PIC16F877A; f) Reescreva a rotina de interrupção utilizando 
instruções de Assembly para o µC PIC18F4550 (use critério). (2015/2). 
N° passos de TMR1 Prescaler Fator Tempo de 1 c.i. = Tbase_RTC 
 8 0,2 us = 1 s 
Rotina de interrupção em linguagem C: Fluxograma 
int8 hrs, min, seg; 
#int_timer1 
void timer1_isr () { 
 static int fator; 
 set_timer1( ); 
 fator++; 
 if (fator == ) { 
 fator = ; 
 seg++; 
 if (seg == ) { 
 seg = ; 
 min++; 
 if (min == ) { 
 min = ; 
 hrs++; 
 if (hrs == ) 
 hrs= ; 
 } 
 } 
 } 
} 
3) Usando o µC PIC16F877 (FOSC = 20MHz) pretende-se obter um sinal PWM de frequência = 
40kHz e ciclo ativo de 75%. Calcular, nos casos possíveis, os valores a serem definidos nos 
registradores especiais do módulo PWM e preencha a Tabela a seguir. (2015/2) 
Prescaler de Timer2 
T2CON<1:0> PR2 (hex) CCPR1L (hex) CCP1CON<5:4> 
00 
01 
10 
5) Dado o fluxograma da figura a seguir, escreva: a) um programa usando instruções do 
PIC16F877A; b) instruções do PIC18F4550; c) sentença da linguagem C: (2,5 pt) 
 
 
 
 
A<B?
Imprimir("A<B") 
fim
nãosim
 Imprimir("A>=B") 
 Define valor de A
 Define valor de B
 
a) Instruções do PIC16F877A b) Instruções do PIC18F4550 c) Sentenças da Linguagem C 
 list p=16f877a 
 #include <p16f877a.inc> 
 __CONFIG H'3F32' 
 cblock 0x20 
 A, B 
 endc 
 org 0x0 
 
 
 
 
 
 list p=18f4550 
 #include <p18f4550.inc> 
 #include <p18f4550_config.h> 
 cblock 0x20 
 A, B 
 endc 
 
 org 0x0 
 #include <16f877a.h> 
 #device ADC=10 
 #fuses HS,NOWDT,PUT,NOLVP 
 #use delay(clock=20M) 
 #use rs232(BAUD=9600, 
XMIT=pin_C6, RCV=pin_C7, BITS=8) 
 int8 A, B; 
 void main() { 
4) Elabore um fluxograma para o seguinte programa escrito em C (2016/1) 
#include <16F877a.h> 
#fuses HS,PUT,NOWDT 
#use delay(clock = 20M) 
#use fast_io(D) 
#byte porta_d = 0x08 
#byte tris_d = 0x88 
void main() { 
int contador = 0; int1 modo=0; 
tris_d = 0x00; 
if(true) { 
 porta_d = contador; 
 delay_ms(500); 
 if(modo ==0) { 
 contador++;if(contador==0x65) 
 modo =1; 
 } 
6) Elabore os fluxogramas necessários e escreva um programa em C para mostrar nos LEDs 
ligados à porta D do µC PIC, o seguinte efeito de deslocamento de luzes: (2016/1) 
 
O programa não pode apresentar mais de duas instruções 
de escrita na Porta D. 
Cada valor apresentado na porta D, pode ser mostrado 
durante 200ms. 
Depois de apresentar o 6º valor, deve recomeçar 
apresentando o primeiro valor, repetindo o ciclo de forma 
indefinida. 
 
Nota: pode considerar que as 
sub-rotinas UART_TxCar ou 
EnviaCarLCD estão disponíveis 
para serem utilizadas.

Continue navegando