#define ON 1
#define OFF 0
sbit Relay at GP1_bit;
sbit Mosfet at GP2_bit;
sbit Charged_Led at GP4_bit;
sbit Charging_led at GP5_bit;
unsigned char my_flags = 0;
unsigned char state_counter = 0, led_blink_counter = 0, led_blink_count = 2, led_blink_delay_counter = 0, led_blink_delay_count = 3;
double mains_voltage = 0.0, previous_mains_voltage = 0.0;
sbit control_relay_and_mosfet_flag at my_flags.B0;
//Timer1
//Prescaler 1:4; TMR1 Preload = 3036; Actual Interrupt Time : 250 ms
//Place/Copy this part in declaration section
void InitTimer1() {
T1CON = 0x21;
TMR1IF_bit = 0;
TMR1H = 0x0B;
TMR1L = 0xDC;
TMR1IE_bit = 1;
INTCON = 0xC0;
}
void Interrupt() {
if(([COLOR="#FF0000"]TMR1IE_bit[/COLOR]) && (TMR1IF_bit)) {
//Enter your code here
if(state_counter == 0) {
if(++led_blink_counter == led_blink_count) {
Charging_Led = ~Charging_Led;
led_blink_counter = 0;
if(++led_blink_delay_counter == led_blink_delay_count) {
state_counter = 1;
led_blink_delay_counter = 0;
[COLOR="#FF0000"]TMR1IE_bit = 0;[/COLOR]
control_relay_and_mosfet_flag = 1;
}
}
}
TMR1IF_bit = 0;
TMR1H = 0x0B;
TMR1L = 0xDC;
}
}
void main() {
asm clrwdt
OPTION_REG = 0x8F;
CMCON = 0x07;
ANSEL = 0x51;
ADCON0 = 0x80;
TRISIO = 0x01;
GPIO = 0x00;
Delay_ms(100);
state_counter = 0;
control_relay_and_mosfet_flag = 0;
InitTimer1();
while(1) {
asm clrwdt
}
}