Ir ao conteúdo
  • Cadastre-se

Projeto semaforo


Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!