Ir ao conteúdo
  • Cadastre-se

rocker236

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. /* // ============================== // 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
  2. 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; } } }

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