pues nada e escrito este codigo com mis pocas esperiencias e funciona perfectamente pero ay cosas que creo que se puedem reducir por exemplo aqui
void MENU_RESTAURO ( void )
en este menu tengo que acer el mismo trabajo dos vezes e la sulucion que encontre fue duplicar el codigo pero seguro que ay otra forma de acer lo mismo ocupando menos lineas de codigo que opinais
#include <16F84a.H>
#fuses NOWDT,XT, PUT, NOPROTECT
#use delay ( clock=4000000 )
#use standard_io ( A )
#use standard_io ( B )
#define TESTE PIN_A0
#define LIMPEZA PIN_A1
#define RELE_TESTE PIN_B0
#define RELE_LIMPEZA PIN_B1
#define RELE_FILAMENTO PIN_B2
#define RESTAURO PIN_A2
#define VOLT_5 PIN_B3
#define VOLT_6 PIN_B4
#define VOLT_7 PIN_B5
#define VOLT_8 PIN_B6
void MENU_TESTE ( void );
void MENU_LIMPEZA ( void );
void MENU_RESTAURO ( void );
void MENU_RESTAURO ( void )
{
//-------------------------------4,5V-------------------------------------------
delay_ms(80);
output_HIGH (RELE_FILAMENTO);//alimentamos o filamento do crt com 4,5v
output_HIGH (VOLT_5);
delay_ms(2000); //filamento ligado durante 2 segundos
output_LOW (VOLT_5);
delay_ms(80);
//-----------------------------5,5V---------------------------------------------
output_HIGH (VOLT_6); // aumentamos de 4,5v para 5,5v
delay_ms(2000); // esperamos mais 2 segundos
output_LOW (VOLT_6);
delay_ms(80);
//------------------------------6,5V--------------------------------------------
output_HIGH (VOLT_7); // aumentamos para 6,5v funcionamento normal dos crt
delay_ms(2000); // esperamos mais 2 segundos
output_LOW (VOLT_7);
delay_ms(80);
//------------------------------7,5V--------------------------------------------
output_HIGH (VOLT_8); // ligamos ao maximo 7,5v
delay_ms(5000);// deixamos os filamentos ligados durante 5 segundos pre aquecendo
OUTPUT_LOW (VOLT_8); // desligamos a saida de 7,5v
DELAY_MS(80);
OUTPUT_LOW (RELE_FILAMENTO); //desligamos o rele de filamento fica sem alimentacao
DELAY_MS(80);
output_HIGH (RELE_LIMPEZA); // aplicamos 300v a G2
output_HIGH (RELE_TESTE ); //alpicamos 300v G1
delay_ms(7000);// esperamos 7 segundos e desligamos tudo
OUTPUT_LOW (RELE_LIMPEZA);
OUTPUT_LOW (RELE_TESTE);
//-------------------------------2 volta igual que acima --------------------
delay_ms(2000);
output_HIGH (RELE_FILAMENTO);
output_HIGH (VOLT_5);
delay_ms(2000);
output_LOW (VOLT_5);
//-----------------------------5,5V---------------------------------------------
output_HIGH (VOLT_6);
delay_ms(2000);
output_LOW (VOLT_6);
delay_ms(80);
//------------------------------6,5V--------------------------------------------
output_HIGH (VOLT_7);
delay_ms(2000);
output_LOW (VOLT_7);
delay_ms(80);
//------------------------------7,5V--------------------------------------------
output_HIGH (VOLT_8);
delay_ms(5000);
OUTPUT_LOW (VOLT_8);
DELAY_MS(80);
OUTPUT_LOW (RELE_FILAMENTO);
DELAY_MS(80);
output_HIGH (RELE_LIMPEZA);
output_HIGH (RELE_TESTE );
delay_ms(7000);
OUTPUT_LOW (RELE_LIMPEZA);
OUTPUT_LOW (RELE_TESTE);
}
//---------------------TESTE CINESCOPIO-----------------------------------------
//1ª ACTIVA FILAMENTO COM 4,5V DURANTE 2 SEGUNDOS
//2º ACTIVA FILAMENTO COM 5,5V DURANTE 2 SEGUNDOS
//3ª ACTIVA FILAMENTO COM 6,5V DURANTE 2 SEGUNDOS
//4ª ACTIVA FILAMENTO COM 7,5V DURANTE 2 SEGUNDOS
//OS FILAMENTOS ESTAO LIGADOS DURANTE 8 SEGUNDOS PRE AQUECENDO
void MENU_TESTE ( void )
{
//-------------------------------4,5V-------------------------------------------
delay_ms(80);
output_HIGH (RELE_FILAMENTO);
output_HIGH (VOLT_5);
delay_ms(2000);
output_LOW (VOLT_5);
//-----------------------------5,5V---------------------------------------------
output_HIGH (VOLT_6);
delay_ms(2000);
output_LOW (VOLT_6);
delay_ms(80);
//------------------------------6,5V--------------------------------------------
output_HIGH (VOLT_7);
delay_ms(2000);
output_LOW (VOLT_7);
delay_ms(80);
//------------------------------7,5V--------------------------------------------
output_HIGH (VOLT_8);
delay_ms(2000);
// 4ª FILAMENTOS LIGADOS A 7,5V ALIMENTA O RELE TESTE OU G2 A 300V POR 7 SEGUNDOS
// ONDE SE MEDE A INTENSIDADE NUM MILIAMPERIMETRO O RELE _TESTE NUMA SAIDA TEM 300V
// QUANDO ESTA DESLIGADO CARREGA NA ENTRADA UM CAP 400V/ 220NF QUANDO O RELE ACTIVA
// DESLIGA OS 300V E PASSA A ALIMENTAR G2 ATRAVEZ DA OUTRA SAIDA A ALIMENTACAO VEM DO CAP
output_HIGH (RELE_TESTE);
delay_ms(5000);
output_LOW (RELE_FILAMENTO);
output_low (RELE_TESTE);
output_low (VOLT_8);
delay_ms(80);
}
//-------------------------------LIMPEZA CINESCOPIO-----------------------------
void MENU_LIMPEZA ( void )
{
//-------------------------------4,5V-------------------------------------------
delay_ms(80);
output_HIGH (RELE_FILAMENTO);
output_HIGH (VOLT_5);
delay_ms(2000);
output_LOW (VOLT_5);
//-----------------------------5,5V---------------------------------------------
output_HIGH (VOLT_6);
delay_ms(2000);
output_LOW (VOLT_6);
delay_ms(80);
//------------------------------6,5V--------------------------------------------
output_HIGH (VOLT_7);
delay_ms(2000);
output_LOW (VOLT_7);
delay_ms(80);
//------------------------------7,5V--------------------------------------------
output_HIGH (VOLT_8);
delay_ms(5000);
OUTPUT_LOW (VOLT_8);
DELAY_MS(80);
OUTPUT_LOW (RELE_FILAMENTO);
DELAY_MS(80);
output_HIGH (RELE_LIMPEZA);
delay_ms(7000);
OUTPUT_LOW (RELE_LIMPEZA);
//-------------------------------4,5V-------------------------------------------
delay_ms(2000);
output_HIGH (RELE_FILAMENTO);
output_HIGH (VOLT_5);
delay_ms(2000);
output_LOW (VOLT_5);
//-----------------------------5,5V---------------------------------------------
output_HIGH (VOLT_6);
delay_ms(2000);
output_LOW (VOLT_6);
delay_ms(80);
//------------------------------6,5V--------------------------------------------
output_HIGH (VOLT_7);
delay_ms(2000);
output_LOW (VOLT_7);
delay_ms(80);
//------------------------------7,5V--------------------------------------------
output_HIGH (VOLT_8);
delay_ms(5000);
OUTPUT_LOW (VOLT_8);
DELAY_MS(80);
OUTPUT_LOW (RELE_FILAMENTO);
DELAY_MS(80);
output_HIGH (RELE_LIMPEZA);
delay_ms(7000);
OUTPUT_LOW (RELE_LIMPEZA);
}
//----------------------------------MAIN---------------------------------------
void main ( void )
{
output_LOW (RELE_TESTE);
output_LOW (RELE_LIMPEZA);
while ( TRUE )
{
if ( input (TESTE) == 1 )
{
MENU_TESTE();
}
if ( input (LIMPEZA) == 1 )
{
MENU_LIMPEZA();
delay_ms(80);
}
if ( input (RESTAURO) == 1 )
{
MENU_RESTAURO();
delay_ms(80);
}
}
}