Escolar Documentos
Profissional Documentos
Cultura Documentos
*/
#include <16hv616.h>
#DEVICE adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal Clock Enabled
#FUSES NOMCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#use delay(clock=4000000) // High speed Osc (> 4mhz)
int bat_voltage,ct_sense,mains;
void InitHW()
{ //INTAULIZE HARDWARE SETTINGS
output_A(0b00000111);//0x07 0x31
output_C(0b00000001);//0x01
}
adc_setup()
{ setup_adc_ports(0x0C); //RA0,RA1,RA2 ADC INPUTS
setup_adc( ADC_CLOCK_INTERNAL );return(0);
}
void buzzer_on()
{ output_high(Buzzer);delay_ms(10);output_low(pin_C1);}
set_adc_channel(0);
bat_voltage=read_adc();
set_adc_channel(2);
ct_sense=read_adc();
}
else if(bat_voltage<3) // battery
Low
{
output_low(chg_Rly);
}
}
else if(main_sense==0)
{
if(bat_voltage>3){
output_low(by_rly);
buzzer_on();
buzzer_on();
RED_led_on; // inverter mode Bat is in
Use
set_adc_channel(0); // read bat voltage
bat_voltage=read_adc();
set_adc_channel(2); // read current sense for over load
ct_sense=read_adc();
}
else if(ct_sense==1) // over load
{
output_low(chg_Rly);
}
}
}