
- Código: Selecionar todos
/* Rotina para teste de software apertando qualquer chave
aciona a sequencia desejada e seguindo uma regra de acionamento*/
//Informa ao compilador qual PIC escolhido para biblioteca PIC16F628A
#include <16F628a.h>
//Informa ao compilador as configurações escolhidas para o PIC16F628A
#fuses INTRC_IO // uso de oscilador interno e pinos de clock como I/O
#fuses NOWDT //Sem Cão de Guarda (Watchdog)
#fuses NOPROTECT //Sem proteção para o código
#fuses NOLVP //Não habilitado gravação combaixo nível de tensão
#fuses NOMCLR // MCLR não habilitado
//Informa ao compilador a velocidade do clock escolhido (4Mhz)
#use delay(clock=4000000)
//DEFINIÇÃO DAS SAIDAS E ASSOCIAÇÃO DE (NOME AOS PINOS)
#define sobe1 PIN_B0 //Definido pino RB.0 como Saída nome sobe
#define alerta1 PIN_B1 //Definido pino RB.1 como Saída nome cancela
#define desce1 PIN_B2 //Definido pino RB.2 como Saída nome desce
#define sirene PIN_B3 //Definido pino RB.3 como Saída nome desce
//DEFINIÇÃO DAS ENTRADAS E ASSOCIAÇÃO DE (NOME AOS PINOS)
#define desce PIN_A0 //Definido pino RA.0 como Entrada nome desce
#define sobe PIN_A6 //Definido pino RA.1 como Entrada nome sobe
#define alerta PIN_A7 //Definido pino RA.2 como Entrada nome cancela
void main()
{
disable_interrupts (global); //desabilita todas interrupcoes
WHILE (true) // Início da condição WHILE (condição verdadeira)
{
// Condição do (*Rampa Sobe1*)
//No sentido Sobe quando carrinho entrar no bloco _Rampa Sobe1_deve ligar
//(Rampa Sobe1) e (Alerta 1) e quando o carrinho sair do Bloco (Alerta 1)
// deve desligar o (Alerta 1)
if (!input (sobe)){
output_high (sobe1); //coloca nivel_1 no pinoPIN_B0
//output_high (sirene); //coloca nivel_1 no pinoPIN_B3
// output_high (alerta1); //coloca nivel_1 no pinoPIN_B0
}
else {
output_low (sobe1); //coloca nivel_0 no pinoPIN_B0
//output_low (sirene); //coloca nivel_0 no pinoPIN_B3
// output_low (alerta1); //coloca nivel_0 no pinoPIN_B0
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Condição do (*ALERTA1*)*-Quando o carrinho entra na Rampa Sobe1
//tambem entra em Alerta1 devido ao comprimento do mesmo
//Porém quando o carrinho sair do bloco ( Alerta1) desliga o bloco ( Alerta1)
//e entra em (Rampa Desce 1) sem ligar o bloco
//Desta forma ele deve proceder em ambos os sentidos independente
//quem entrar primeiro sempre ligar o (Alerta1)
//e desligar o Alerta1) quando o carrinho terminar de passar
//pelo bloco independente quem entrou primeiro.
if (!input (alerta)){
output_high (alerta1); //coloca nivel_1 no pinoPIN_B0
//output_high (sirene); //coloca nivel_1 no pinoPIN_B3
// output_high (sobe1); //coloca nivel_1 no pinoPIN_B0
}
else {
output_low (alerta1); //coloca nivel_0 no pinoPIN_B0
//output_low (sirene); //coloca nivel_0 no pinoPIN_B3
// output_low (sobe1); //coloca nivel_0 no pinoPIN_B0
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Condição do (Desce1)
if (!input (desce)){
output_high (desce1); //coloca nivel_1 no pinoPIN_B0
//output_high (sirene); //coloca nivel_1 no pinoPIN_B3
//output_high (alerta1); //coloca nivel_1 no pinoPIN_B0
}
else {
output_low (desce1); //coloca nivel_0 no pinoPIN_B0
//output_low (sirene); //coloca nivel_0 no pinoPIN_B3
//output_low (alerta1); //coloca nivel_0 no pinoPIN_B0
}
} // Fim da condição WHILE (condição verdadeira)
}

o que vou fazer é uma melhora no meu sistema de rampa de chegada pois fico ao lado de uma rodovia e preciso sinalizar melhor. porque o antigo foi feito de modo analógico e quero fazer melhorias.
desde já agradeço a todos que puderem me ajudar pois minha idade já não ajuda muito mais a vontade é bem grande de fazer o equipamento funcionar.
vou postar o link abaixo do processo e o simulador já descrito.
Abraços a todos e parabéns pelo forum.
Antony Helmes