Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Smith Smith

C Micro controlador não estou conseguindo resolver

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×