Buscar

Analise o programa e a figura com o diagrama esquemático abaixo. O programa é basicamente um pisca-pisca,

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.

b) O intervalo de interrupção do TIMER0.

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.

d) O menor degrau de tensão detectado pelo conversor analógico do PIC.




 

 

 

 

 

 

 

 

 

 

 

 


💡 3 Respostas

User badge image

Gilmar Filho

Boa Noite Elias, voce conseguiu realizar esta atividade, estou com a mesma questao, se realizou e poder me enviar agradeço.
1
Dislike0
User badge image

Luciano Miranda Cerqueira

Também estou com dificuldade, tem a resposta?

1
Dislike0
User badge image

Odiran Paiva Ariane Camargo

Alguém conseguiu responder essa???

0
Dislike0

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

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais