SISTEMAS DIGITAIS MICROCONTROLADOS


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


cronometro.jpg

//==================== 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:




  • 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.

  • 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.

  • 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.

  • 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.

  • 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.