Ir ao conteúdo
  • Cadastre-se

Uélinton Nunes de Macêdo

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por Uélinton Nunes de Macêdo

  1. Alguém pode me ajudar com a questão abaixo: A questão está em anexo também! 

     

    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 freqüê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.

     

    SISTEMAS DIGITAIS MICROCONTROLADOS.pdf

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!