Buscar

ACQA - Sistemas digitais microcontrolados

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 5 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

Continue navegando


Prévia do material em texto

Analise o programa e a figura com o diagrama esquemático abaixo. O programa é basicamente um pisca-pisca, 
acionado por botões (B1 a B4). Cada saída (P1 a P4) tem uma frequência quando o botão correspondente é 
acionado. O outro conjunto de saídas (L1 a L8) é acionada pelo potenciômetro, que está conectado na entrada 
analógica AN0: 
 
 
Arquivo: Questao.h 
#include 
#device ADC=8 
#use delay(crystal=4MHz) 
#use FIXED_IO( B_outputs=PIN_B7,PIN_B6,PIN_B5,PIN_B4 ) 
#use FIXED_IO( C_outputs=PIN_C7,PIN_C6,PIN_C5,PIN_C4,PIN_C3,PIN_C2,PIN_C1,PIN_C0 ) 
#define EA1 PIN_A0 
#define B1 PIN_B0 
#define B2 PIN_B1 
#define B3 PIN_B2 
#define B4 PIN_B3 
#define P1 PIN_B4 
#define P2 PIN_B5 
#define P3 PIN_B6 
#define P4 PIN_B7 
#define L1 PIN_C0 
#define L2 PIN_C1 
#define L3 PIN_C2 
#define L4 PIN_C3 
#define L5 PIN_C4 
#define L6 PIN_C5 
#define L7 PIN_C6 
#define L8 PIN_C7 
Arquivo: Questao.c 
#include 
short pisca_1, pisca_2, pisca_3, pisca_4; 
int ciclo_1, ciclo_2, ciclo_3, ciclo_4; 
short le_adc; 
long aux_valor, valor_adc, saida; 
#define valor_1 25 
#define valor_2 75 
#define valor_3 125 
#define valor_4 225 
#define ajuste 131 
#INT_RTCC 
void RTCC_isr(void) 
{ 
 set_timer0(get_timer0() + ajuste); 
 if (pisca_1) 
 { 
 ciclo_1--; 
 if (ciclo_1 == 0) 
 { 
 output_toggle(P1); 
 ciclo_1 = valor_1; 
 } 
 } 
 if (pisca_2) 
 { 
 ciclo_2--; 
 if (ciclo_2 == 0) 
 { 
 output_toggle(P2); 
 ciclo_2 = valor_2; 
 } 
 } 
 if (pisca_3) 
 { 
 ciclo_3--; 
 if (ciclo_3 == 0) 
 { 
 output_toggle(P3); 
 ciclo_3 = valor_3; 
 } 
 } 
 if (pisca_4) 
 { 
 ciclo_4--; 
 if (ciclo_4 == 0) 
 { 
 output_toggle(P4); 
 ciclo_4 = valor_4; 
 } 
 } 
 le_adc = 1; 
} 
void main() 
{ 
 port_B_pullups(0xFF); 
 setup_adc_ports(AN0); 
 setup_adc(ADC_CLOCK_INTERNAL); 
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8|RTCC_8_bit); 
 output_low(P1); 
 output_low(P2); 
 output_low(P3); 
 output_low(P4); 
 output_c(0); 
 ciclo_1 = valor_1; 
 ciclo_2 = valor_2; 
 ciclo_3 = valor_3; 
 ciclo_4 = valor_4; 
 enable_interrupts(INT_RTCC); 
 enable_interrupts(GLOBAL); 
 while(TRUE) 
 { 
 if (input(B1) == 0) 
 { 
 pisca_1 = 1; 
 } 
 else 
 { 
 pisca_1 = 0; 
 } 
 if (input(B2) == 0) 
 { 
 pisca_2 = 1; 
 } 
 else 
 { 
 pisca_2 = 0; 
 } 
 if (input(B3) == 0) 
 { 
 pisca_3 = 1; 
 } 
 else 
 { 
 pisca_3 = 0; 
 } 
 if (input(B4) == 0) 
 { 
 pisca_4 = 1; 
 } 
 else 
 { 
 pisca_4 = 0; 
 } 
 if (le_adc) 
 { 
 le_adc = 0; 
 valor_adc = read_adc() / 29; 
 aux_valor = valor_adc; 
 saida = 1; 
 while (aux_valor > 0) 
 { 
 saida = saida * 2; 
 aux_valor--; 
 } 
 if (valor_adc > 0) 
 { 
 saida = saida - 1; 
 } 
 else 
 { 
 saida = 0; 
 } 
 output_c(saida); 
 } 
 } 
} 
 
Pede-se: 
 
a) A frequência de acionamento dos LED P1 e P2. 
LED P1 pisca numa frequência de 20 Hz, enquanto que o LED P2 pisca numa frequência aproximada de 
6,667 Hz. 
 
b) O intervalo de interrupção do TIMER0. 
Timer0 de 8 bits, configurado com prescaler 1:8, com registrador ajustado em 131. 
𝐶𝑖𝑐𝑙𝑜 𝑑𝑎 𝑀á𝑞𝑢𝑖𝑛𝑎
𝐹
4
4 ∙ 10
4
1 ∙ 10 𝐻 1 𝑀𝐻𝑧 
𝑡𝑖𝑚𝑒𝑟0
𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 ∙ 256 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑇𝑀𝑅0
𝐶𝑖𝑐𝑙𝑜 𝑑𝑎 𝑀á𝑞𝑢𝑖𝑛𝑎
8 ∙ 256 131
1 ∙ 10
0,001𝑠 1 𝑚𝑠 
O intervalo de interrupção do TIMER0 será de 1 ms. 
c) Indicar os LEDS que estarão acesos se o potenciômetro estiver fornecendo 3,5 V na entrada
analógica, cuja faixa vai de 0 a 5 V.
LEDs L1, L2, L3, L4, L5 e L6 ficarão acesos.
d) O menor degrau de tensão detectado pelo conversor analógico do PIC:
Como a tensão VDD é de 5 V, com o conversor AD configurado para 8 bits de resolução, o menor degrau 
de tensão detectado pelo conversor será de 19,53 mV.
5
2
0,01953 𝑉 19,53 𝑚𝑉