Ir ao conteúdo
  • Cadastre-se
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
/*
//     ==============================
//         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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×