You are on page 1of 8

4ª AVALIAÇÃO CONTINUADA - QUESTÃO FECHADA

Identificação | Cód. da Avaliação: 6671633Valor Total: 2,00


Disciplina: 919026 - SISTEMAS DIGITAIS MICROCONTROLADOS
Oferta: 5182576Atividade: 12231Semana: 4
Acessível de 27/08/2022 00:00:00 à 11/09/2022 23:59:59
Iniciada em 11/09/2022 00:34:07
Atenção! O prazo para a realização das atividades pontuadas no AVA já é estendido e deverá ser
cumprido conforme publicado previamente. A prorrogação do prazo somente será realizada nos
casos de problemas técnicos em nossa infraestrutura ou de desastres naturais na região da
residência do aluno.
Avaliação Finalizada no dia 11/09/22 as 16:56:01. Você acertou 50% da avaliação.

Questão 1/2 Valor da questão: 1,00


Montar um programa através da Linguagem C facilita o trabalho do programador, por se tratar de
uma linguagem de alto nível. Analise o programa abaixo bem como o diagrama esquemático da
figura 2. 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) é acionado pelo potenciômetro, que está conectado na entrada analógica AN0.

============================ Arquivo: Atividade.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
======================= Fim Arquivo: Atividade.h ============================
========================= Arquivo: Atividade.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);
}
}
}
======================= Fim Arquivo: Atividade.c ============================

Ao iniciar o programa, todos os LEDS estão apagados. Se qualquer uma das chaves B1, B2, B3
ou B4 são acionadas, o LED correspondente começa a piscar na frequência definida no programa.
Qual o estado do LED quando a chave abre após o primeiro acionamento?

A) Para de piscar e permanece no último estado que estava no momento que a chave
foi aberta.
B) Continua a piscar com frequência 2 vezes menor enquanto a chave estiver aberta.
C) Para de piscar e permanece aceso enquanto a chave estiver aberta.
D) Para de piscar e permanece apagado enquanto a chave estiver aberta. ( errado )
E) Continua a piscar com frequência 2 vezes maior enquanto a chave estiver aberta.

Questão 2/2 Valor da questão: 1,00


Observe o circuito e o código-fonte abaixo:

//==================== Arquivo crono.h //===================


#include
#device adc=8
#FUSES NOWDT
#FUSES XT
#FUSES PUT
#FUSES NOPROTECT
#FUSES BROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#FUSES NODEBUG
#use delay(clock=4000000)
#define BOTAO1 PIN_A0
#define BOTAO2 PIN_A1
#define BOTAO3 PIN_A2
//================== Fim Arquivo crono.h //=================
//==================== Arquivo crono.c //===================
#include "crono.h"
short contando, contar;
int numeros[6] = {0,0,0,0,0,0};
int n = 0;
int c, t;
int passo = 10;

BYTE CONST CODIGO [10]= {0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};

#int_RTCC
void RTCC_isr(void)
{
set_timer0(get_timer0() + 6);
if (contando)
{
passo--;
if (passo == 0)
{
passo = 10;
t = 0;
contar = 1;
while (contar)
{
if (numeros[t] < 9)
{
numeros[t]++;
contar = 0;
}
else
{
numeros[t] = 0;
t++;
}
}
}
}
output_b(0b11111111);
if (n == 2)
output_c(CODIGO[numeros[n]] | 128);
else
output_c(CODIGO[numeros[n]]);
output_b(0b11111111 ^ (128 >> n));
n++;
if (n > 5) n = 0;
}

void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
contando = 0;
while(1)
{
if (contando)
{
if (!input(BOTAO2))
{
contando = 0;
}
}
else
{
if (!input(BOTAO1))
contando = 1;
if (!input(BOTAO3))
{
for (c = 0; c < 6; c++)
numeros[c] = 0;
passo = 10;
}
}
}
}
//================== Fim Arquivo crono.c //=================

Assinale a alternativa CORRETA em função do funcionamento e operação do cronômetro:

A) Ao ligar o cronômetro o display é preenchido com zeros, aguardando o acionamento


o botão “ON” para iniciar a contagem. Uma vez contando, o único botão ativo é o
botão “OFF”, que para a contagem. Ao parar a contagem com o botão “OFF” é
possível iniciá-la novamente através do botão “ON”. O botão “RESET” é usado para
zerar os valores e só é reconhecido quando a contagem estiver parada.
B) Ao ligar o cronômetro o display inicia-se apagado, os dígitos só são mostrados quando
iniciar a contagem e o botão “ON” é usado para esta finalidade. Uma vez contando, o único
botão ativo é o botão “OFF”, que para a contagem. Ao parar a contagem com o botão
“OFF” é possível iniciá-la novamente através do botão “ON”. O botão “RESET” é usado
para zerar os valores e só é reconhecido quando a contagem estiver parada.
C) Ao iniciar o cronômetro o display é preenchido com zeros, aguardando o acionamento o
botão “ON” para iniciar a contagem. Uma vez contando, todos os botões “ON”, “OFF” e
“RESET” são lidos sequencialmente e cada um deles tem uma função específica. O botão
“ON” congela o display mais a contagem continua, o botão “OFF” para a contagem e o
botão “RESET” zera o contador.
D) Ao ligar o cronômetro o display é preenchido com zeros, aguardando o acionamento o
botão “ON” para iniciar a contagem. Uma vez contando, o único botão ativo é o botão
“OFF”, que para a contagem. Ao parar a contagem com o botão “OFF” não é possível
iniciá-la novamente. O botão “RESET” é usado para zerar os valores e é reconhecido em
qualquer momento da operação.
E) Ao ligar o cronômetro o display inicia-se apagado, os dígitos só são mostrados quando
iniciar a contagem e o botão “ON” é usado para esta finalidade. Uma vez contando, o único
botão ativo é o botão “OFF”, que para a contagem. Ao parar a contagem com o botão
“OFF” não é possível iniciá-la novamente. O botão “RESET” é usado para zerar os valores
e só é reconhecido quando a contagem estiver parada.

Questão 2/2 Valor da questão: 1,00 (REESTUDO)


O sistema abaixo foi projetado para operar com uma regra bem simples:

Enquanto a tecla estiver pressionada o LED deve ligar. Caso ela não esteja pressionada o LED
deve ficar desligado. Esse LED funciona com valores nominais de 3V e 20mA. Durante o
desenvolvimento dessa lógica o projetista errou não considerando um detalhe e, por
consequência disso a regra citada não será atendida.

Observando tanto o diagrama esquemático abaixo quanto o código desenvolvido e, levando em


consideração que os parâmetros de funcionamento do microcontrolador estão devidamente
configurados (fusíveis, clock, etc.), assinale a alternativa que identifique esse erro:

A) R2 tem valor ôhmico muito alto, impedindo que o LED acenda.


B) O valor ôhmico de R1 é muito baixo. O microcontrolador não identifica a transição de nível
lógico.
C) O resultado final está invertido. Com a tecla pressionada o LED apaga.
D) A sintaxe da linha 10 do código fonte está incorreta.
E) Nesse circuito o LED consome uma corrente que o microcontrolador não é capaz de
fornecer.

You might also like