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:  
rocker236

Projeto semaforo

Recommended Posts

Estou fazendo um projeto de um semaforo  no proteus e digitando os codigos no Maplab, meu professor corrigiu ja o projeto no proteus, o problema que estou tendo e na programação ele vez boa parte da progração, e eu terminei mas esta faltando colocar os tempos, então gostaria da ajuda de vocês pra poder terminar

segue os codigos e o projeto no proteus, queria muito a ajuda de vocês, pra ver o que esta faltando terminar mesmo

 

 

/*
//     ==============================
//         versão: V02_1
//     ==============================
//atualizado em 20/06/2011
*/
#ZERO_RAM
#include <Include_Sinaleira.h>

//  Definicoes para Temporizacoes em geral
    int     conta_1ms;
    int     conta_10ms;
    int conta_tempo_Led_07=0;
    int conta_tempo_PWM=0;
    int     conta_100ms;

#define ESTADO_INICIAL 0           //define que representa o estado inicial
#define ESTADO_A 1   
#define ESTADO_B 2   
#define ESTADO_C 3   
#define ESTADO_D 4   
#define ESTADO_FINAL 5           //define que representa o estado inicial
//variaveis globais:
int ControleMaquinaEstado;  //variável responsável por armazenar o estado atual da máquina de estados
void ExecutaMaquinaDeEstados(void);   //função que contém o switch/case com a máquina de estados

/////////////////////////////////////////////////////////////////
// Funcão     :  main                                          //
/////////////////////////////////////////////////////////////////


void main()
{


startup();

 ControleMaquinaEstado=ESTADO_INICIAL;


//inicio do programa principal
 while (true)
 {

/*
        if(Botao_entrada_01==0)
        {
             ControleMaquinaEstado=ESTADO_INICIAL;
            ExecutaMaquinaDeEstados();
        }
        else if(Botao_entrada_02==0)
        {
             ControleMaquinaEstado= ESTADO_A;
            ExecutaMaquinaDeEstados();
        }
    
*/
#define Tempo_led 400
    //IRA ASCENDER TODOS OS LEDS, COM INTERVALO DE 200ms
    Sinaleira_01_Led_Verde     = 1;
    delay_ms(200);
    Sinaleira_01_Led_Amarela   = 1;
    delay_ms(200);
    Sinaleira_01_Led_Vermelha  = 1;
    delay_ms(200);
    Sinaleira_02_Led_Verde     = 1;
    delay_ms(200);
    Sinaleira_02_Led_Amarela   = 1;
    delay_ms(200);
    Sinaleira_02_Led_Vermelha  = 1;
    delay_ms(200);
    Sinaleira_03_Led_Verde     = 1;
    delay_ms(200);
    Sinaleira_03_Led_Amarela   = 1;
    delay_ms(200);
    Sinaleira_03_Led_Vermelha  = 1;
    delay_ms(200);
    Sinaleira_04_Led_Verde     = 1;
    delay_ms(200);
    Sinaleira_04_Led_Amarela   = 1;
    delay_ms(200);
    Sinaleira_04_Led_Vermelha  = 1;
    delay_ms(200);
    BOBINA_RELE_1               = 1;


    delay_ms(1000);

    //IRÁ APAGAR TODOS OS LEDS
    Sinaleira_01_Led_Verde     = 0;
    Sinaleira_01_Led_Amarela   = 0;
    Sinaleira_01_Led_Vermelha  = 0;
    Sinaleira_02_Led_Verde     = 0;
    Sinaleira_02_Led_Amarela   = 0;
    Sinaleira_02_Led_Vermelha  = 0;
    Sinaleira_03_Led_Verde     = 0;
    Sinaleira_03_Led_Amarela   = 0;

    Sinaleira_03_Led_Vermelha  = 0;
    Sinaleira_04_Led_Verde     = 0;
    Sinaleira_04_Led_Amarela   = 0;
    Sinaleira_04_Led_Vermelha  = 0;
    BOBINA_RELE_1               = 0;

    delay_ms(1000);


    //IRÁ ascender TODOS OS LEDS
    Sinaleira_01_Led_Verde     = 1;
    Sinaleira_01_Led_Amarela   = 1;
    Sinaleira_01_Led_Vermelha  = 1;
    Sinaleira_02_Led_Verde     = 1;
    Sinaleira_02_Led_Amarela   = 1;
    Sinaleira_02_Led_Vermelha  = 1;
    Sinaleira_03_Led_Verde     = 1;
    Sinaleira_03_Led_Amarela   = 1;

    Sinaleira_03_Led_Vermelha  = 1;
    Sinaleira_04_Led_Verde     = 1;
    Sinaleira_04_Led_Amarela   = 1;
    Sinaleira_04_Led_Vermelha  = 1;
    BOBINA_RELE_1               = 1;

    delay_ms(1000);


    //IRÁ APAGAR TODOS OS LEDS
    Sinaleira_01_Led_Verde     = 0;
    Sinaleira_01_Led_Amarela   = 0;
    Sinaleira_01_Led_Vermelha  = 0;
    Sinaleira_02_Led_Verde     = 0;
    Sinaleira_02_Led_Amarela   = 0;
    Sinaleira_02_Led_Vermelha  = 0;
    Sinaleira_03_Led_Verde     = 0;
    Sinaleira_03_Led_Amarela   = 0;

    Sinaleira_03_Led_Vermelha  = 0;
    Sinaleira_04_Led_Verde     = 0;
    Sinaleira_04_Led_Amarela   = 0;
    Sinaleira_04_Led_Vermelha  = 0;
    BOBINA_RELE_1               = 0;

    delay_ms(1000);

//  ==============================
// FINAL DO LOOP PRINCIPAL
}
} //Final da Main

/////////////////////////////////////////////////////////////////
// Funcão     :  STARTUP                                       //
/////////////////////////////////////////////////////////////////
// Parametros :  Nenhum                                        //
// Objetivos  :  Inicializar o hardware                        //
// Escrita em :  16/01/05                                      //
// Revisada em:                                                //
/////////////////////////////////////////////////////////////////
void startup()
{


    SETUP_TIMER_1 ( T1_INTERNAL|T1_DIV_BY_1 );     // Configura o timer1 para 1:1
//    enable_interrupts(INT_TIMER1);
    disaBLE_INTERRUPTS(INT_EXT);
    disABLE_INTERRUPTS(GLOBAL);

    set_tris_A(TRIS_PORTA);
    set_tris_b(TRIS_PORTb);
    set_tris_c(TRIS_PORTC);
    set_tris_d(TRIS_PORTD);

    Sinaleira_01_Led_Verde     = 0;
    Sinaleira_01_Led_Amarela   = 0;
    Sinaleira_01_Led_Vermelha  = 0;
    Sinaleira_02_Led_Verde     = 0;
    Sinaleira_02_Led_Amarela   = 0;
    Sinaleira_02_Led_Vermelha  = 0;
    Sinaleira_03_Led_Verde     = 0;
    Sinaleira_03_Led_Amarela   = 0;

    Sinaleira_03_Led_Vermelha  = 0;
    Sinaleira_04_Led_Verde     = 0;
    Sinaleira_04_Led_Amarela   = 0;
    Sinaleira_04_Led_Vermelha  = 0;
    BOBINA_RELE_1               = 0;
    


}


 
//função de execução da máquina de estados via switch/case
void ExecutaMaquinaDeEstados()
{


  //executa a máquina de estados
  switch(ControleMaquinaEstado)
  {
    case ESTADO_INICIAL:
    {
    
        delay_ms(2000);

      break; 
    }
 

     case ESTADO_A:
    {
 
        delay_ms(2000);


      break; 
    }
     case ESTADO_B:
    {


        ControleMaquinaEstado = ESTADO_INICIAL;
      break; 
    }
  }
}

 

semaforo 2.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • /*
    //     ==============================
    //         versão: V02_1
    //     ==============================
    //atualizado em 20/06/2011
    */
    #ZERO_RAM
    #include <Include_Sinaleira.h>
    //  Definicoes para Temporizacoes em geral
        int     conta_1ms;
        int     conta_10ms;
        int conta_tempo_Led_07=0;
        int conta_tempo_PWM=0;
        int     conta_100ms;
    #define ESTADO_INICIAL 0           //define que representa o estado inicial
    #define ESTADO_A 1   
    #define ESTADO_B 2   
    #define ESTADO_C 3   
    #define ESTADO_D 4   
    #define ESTADO_FINAL 5           //define que representa o estado inicial
    //variaveis globais:
    int ControleMaquinaEstado;  //variável responsável por armazenar o estado atual da máquina de estados
    void ExecutaMaquinaDeEstados(void);   //função que contém o switch/case com a máquina de estados
    /////////////////////////////////////////////////////////////////
    // Funcão     :  main                                          //
    /////////////////////////////////////////////////////////////////
    
    void main()
    {
    
    startup();
     ControleMaquinaEstado=ESTADO_INICIAL;
    
    //inicio do programa principal
     while (true)
     {
    /*
            if(Botao_entrada_01==0)
            {
                 ControleMaquinaEstado=ESTADO_INICIAL;
                ExecutaMaquinaDeEstados();
            }
            else if(Botao_entrada_02==0)
            {
                 ControleMaquinaEstado= ESTADO_A;
                ExecutaMaquinaDeEstados();
            }
        
    */
    #define Tempo_led 400
        //IRA ASCENDER TODOS OS LEDS, COM INTERVALO DE 200ms
        Sinaleira_01_Led_Verde     = 1;
        delay_ms(200);
        Sinaleira_01_Led_Amarela   = 1;
        delay_ms(200);
        Sinaleira_01_Led_Vermelha  = 1;
        delay_ms(200);
        Sinaleira_02_Led_Verde     = 1;
        delay_ms(200);
        Sinaleira_02_Led_Amarela   = 1;
        delay_ms(200);
        Sinaleira_02_Led_Vermelha  = 1;
        delay_ms(200);
        Sinaleira_03_Led_Verde     = 1;
        delay_ms(200);
        Sinaleira_03_Led_Amarela   = 1;
        delay_ms(200);
        Sinaleira_03_Led_Vermelha  = 1;
        delay_ms(200);
        Sinaleira_04_Led_Verde     = 1;
        delay_ms(200);
        Sinaleira_04_Led_Amarela   = 1;
        delay_ms(200);
        Sinaleira_04_Led_Vermelha  = 1;
        delay_ms(200);
        BOBINA_RELE_1               = 1;
    
        delay_ms(1000);
        //IRA APAGAR TODOS OS LEDS
        Sinaleira_01_Led_Verde     = 0;
        Sinaleira_01_Led_Amarela   = 0;
        Sinaleira_01_Led_Vermelha  = 0;
        Sinaleira_02_Led_Verde     = 0;
        Sinaleira_02_Led_Amarela   = 0;
        Sinaleira_02_Led_Vermelha  = 0;
        Sinaleira_03_Led_Verde     = 0;
        Sinaleira_03_Led_Amarela   = 0;
        Sinaleira_03_Led_Vermelha  = 0;
        Sinaleira_04_Led_Verde     = 0;
        Sinaleira_04_Led_Amarela   = 0;
        Sinaleira_04_Led_Vermelha  = 0;
        BOBINA_RELE_1               = 0;
        delay_ms(1000);
    
        //IRÁ ascender TODOS OS LEDS
        Sinaleira_01_Led_Verde     = 1;
        Sinaleira_01_Led_Amarela   = 1;
        Sinaleira_01_Led_Vermelha  = 1;
        Sinaleira_02_Led_Verde     = 1;
        Sinaleira_02_Led_Amarela   = 1;
        Sinaleira_02_Led_Vermelha  = 1;
        Sinaleira_03_Led_Verde     = 1;
        Sinaleira_03_Led_Amarela   = 1;
        Sinaleira_03_Led_Vermelha  = 1;
        Sinaleira_04_Led_Verde     = 1;
        Sinaleira_04_Led_Amarela   = 1;
        Sinaleira_04_Led_Vermelha  = 1;
        BOBINA_RELE_1               = 1;
        delay_ms(1000);
    
        //IRÁ APAGAR TODOS OS LEDS
        Sinaleira_01_Led_Verde     = 0;
        Sinaleira_01_Led_Amarela   = 0;
        Sinaleira_01_Led_Vermelha  = 0;
        Sinaleira_02_Led_Verde     = 0;
        Sinaleira_02_Led_Amarela   = 0;
        Sinaleira_02_Led_Vermelha  = 0;
        Sinaleira_03_Led_Verde     = 0;
        Sinaleira_03_Led_Amarela   = 0;
        Sinaleira_03_Led_Vermelha  = 0;
        Sinaleira_04_Led_Verde     = 0;
        Sinaleira_04_Led_Amarela   = 0;
        Sinaleira_04_Led_Vermelha  = 0;
        BOBINA_RELE_1               = 0;
        delay_ms(1000);
    //  ==============================
    // FINAL DO LOOP PRINCIPAL
    }
    } //Final da Main
    /////////////////////////////////////////////////////////////////
    // Funcão     :  STARTUP                                       //
    /////////////////////////////////////////////////////////////////
    // Parametros :  Nenhum                                        //
    // Objetivos  :  Inicializar o hardware                        //
    // Escrita em :  16/01/05                                      //
    // Revisada em:                                                //
    /////////////////////////////////////////////////////////////////
    void startup()
    {
    
        SETUP_TIMER_1 ( T1_INTERNAL|T1_DIV_BY_1 );     // Configura o timer1 para 1:1
    //    enable_interrupts(INT_TIMER1);
        disaBLE_INTERRUPTS(INT_EXT);
        disABLE_INTERRUPTS(GLOBAL);
        set_tris_A(TRIS_PORTA);
        set_tris_b(TRIS_PORTb);
        set_tris_c(TRIS_PORTC);
        set_tris_d(TRIS_PORTD);
        Sinaleira_01_Led_Verde     = 0;
        Sinaleira_01_Led_Amarela   = 0;
        Sinaleira_01_Led_Vermelha  = 0;
        Sinaleira_02_Led_Verde     = 0;
        Sinaleira_02_Led_Amarela   = 0;
        Sinaleira_02_Led_Vermelha  = 0;
        Sinaleira_03_Led_Verde     = 0;
        Sinaleira_03_Led_Amarela   = 0;
        Sinaleira_03_Led_Vermelha  = 0;
        Sinaleira_04_Led_Verde     = 0;
        Sinaleira_04_Led_Amarela   = 0;
        Sinaleira_04_Led_Vermelha  = 0;
        BOBINA_RELE_1               = 0;
        
    
    }
    
     
    //função de execução da máquina de estados via switch/case
    void ExecutaMaquinaDeEstados()
    {
    
      //executa a máquina de estados
      switch(ControleMaquinaEstado)
      {
        case ESTADO_INICIAL:
        {
        
            delay_ms(2000);
          break; 
        }
     
         case ESTADO_A:
        {
     
            delay_ms(2000);
    
          break; 
        }
         case ESTADO_B:
        {
    
            ControleMaquinaEstado = ESTADO_INICIAL;
          break; 
        }
      }
    }

    Corrigindo o envio

    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

    ×