Skip to content

Instantly share code, notes, and snippets.

@samirfor
Last active August 29, 2015 14:14
Show Gist options
  • Save samirfor/fd77fcb0de755da4a7f9 to your computer and use it in GitHub Desktop.
Save samirfor/fd77fcb0de755da4a7f9 to your computer and use it in GitHub Desktop.
Semáforo com tempo para pedestre em PIC18F2550 + SanUSB.
/**
* Ferramenta SanUSB: http://sanusb.site50.net/
* Compilar com MPLABX+C18: https://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0
*
* Este programa reproduz um semáforo de LEDs.
*
* Foto da montagem: https://drive.google.com/file/d/0BwIZj8djOAj2VTVWUWhOX0ZyeG8/view?usp=sharing
*/
#include "SanUSB48.h"
#include "SanUSB1.h"
#define v_vermelho pin_a0
#define v_amarelo pin_a1
#define v_verde pin_a2
#define p_vermelho pin_a4
#define p_verde pin_a5
short int requisicao_pedestre = 0;
#pragma interrupt interrupcao //Tem que estar aqui ou dentro do firmware.c
void interrupcao() {
}
void checar_botao(int z) {
int i = 0;
for (i = 0; i <= z; i++) {
tempo_ms(100);
if (!entrada_pin_e3) {
requisicao_pedestre = 1;
}
}
}
void main() {
clock_int_48MHz();
TRISA = 0; // saida
PORTAbits.RA0 = 0;
PORTAbits.RA1 = 0;
PORTAbits.RA2 = 1; //nivel logico
PORTAbits.RA4 = 1;
PORTAbits.RA5 = 0;
while (1) {
checar_botao(20);
nivel_baixo(v_vermelho);
nivel_alto(v_amarelo);
nivel_baixo(v_verde);
if (requisicao_pedestre == 1) {
nivel_baixo(v_vermelho);
nivel_alto(v_amarelo);
nivel_baixo(v_verde);
tempo_ms(2100);
nivel_alto(v_vermelho);
nivel_baixo(v_amarelo);
nivel_baixo(v_verde);
nivel_baixo(p_vermelho);
nivel_alto(p_verde);
tempo_ms(5000);
nivel_baixo(p_verde);
nivel_alto(p_vermelho);
nivel_baixo(v_vermelho);
nivel_baixo(v_amarelo);
nivel_alto(v_verde);
requisicao_pedestre = 0;
}
tempo_ms(2100);
nivel_alto(v_vermelho);
nivel_baixo(v_amarelo);
nivel_baixo(v_verde);
tempo_ms(2100);
nivel_baixo(v_vermelho);
nivel_baixo(v_amarelo);
nivel_alto(v_verde);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment