#include <16F818.h>
#device ADC=10
#fuses NOWDT,INTRC_IO,PUT,NOPROTECT,BROWNOUT,NOLVP,NOCPD,NOMCLR
#use delay(clock=8000000)

#define Phase1 PIN_B0
#define Phase2 PIN_B1
#define Enable PIN_B3

 void
 szinusz(void)
 {
    set_pwm1_duty(0);
    delay_us(100);
    set_pwm1_duty(10);
    delay_us(100);
    set_pwm1_duty(17);
    delay_us(100);
    set_pwm1_duty(25);
    delay_us(100);
    set_pwm1_duty(33);
    delay_us(100);
    set_pwm1_duty(40);
    delay_us(100);
    set_pwm1_duty(48);
    delay_us(100);
    set_pwm1_duty(56);
    delay_us(100);
    set_pwm1_duty(63);
    delay_us(100);
    set_pwm1_duty(71);
    delay_us(100);
    set_pwm1_duty(79);
    delay_us(100);
    set_pwm1_duty(86);
    delay_us(100);
    set_pwm1_duty(94);
    delay_us(100);
    set_pwm1_duty(102);
    delay_us(100);
    set_pwm1_duty(109);
    delay_us(100);
    set_pwm1_duty(117);
    delay_us(100);
    set_pwm1_duty(124);
    delay_us(100);
    set_pwm1_duty(130);
    delay_us(100);
    set_pwm1_duty(137);
    delay_us(100);
    set_pwm1_duty(145);
    delay_us(100);
    set_pwm1_duty(150);
    delay_us(100);
    set_pwm1_duty(158);
    delay_us(100);
    set_pwm1_duty(163);
    delay_us(100);
    set_pwm1_duty(170);
    delay_us(100);
    set_pwm1_duty(175);
    delay_us(100);
    set_pwm1_duty(181);
    delay_us(100);
    set_pwm1_duty(186);
    delay_us(100);
    set_pwm1_duty(191);
    delay_us(100);
    set_pwm1_duty(196);
    delay_us(100);
    set_pwm1_duty(201);
    delay_us(100);
    set_pwm1_duty(206);
    delay_us(100);
    set_pwm1_duty(211);
    delay_us(100);
    set_pwm1_duty(216);
    delay_us(100);
    set_pwm1_duty(219);
    delay_us(100);
    set_pwm1_duty(224);
    delay_us(100);
    set_pwm1_duty(227);
    delay_us(100);
    set_pwm1_duty(232);
    delay_us(100);
    set_pwm1_duty(234);
    delay_us(100);
    set_pwm1_duty(237);
    delay_us(100);
    set_pwm1_duty(239);
    delay_us(100);
    set_pwm1_duty(242);
    delay_us(100);
    set_pwm1_duty(244);
    delay_us(100);
    set_pwm1_duty(247);
    delay_us(200);
    set_pwm1_duty(249);
    delay_us(100);
    set_pwm1_duty(252);
    delay_us(500);
    set_pwm1_duty(255);
    delay_us(100);
    set_pwm1_duty(252);
    delay_us(300);
    set_pwm1_duty(249);
    delay_us(200);
    set_pwm1_duty(247);
    delay_us(100);
    set_pwm1_duty(244);
    delay_us(200);
    set_pwm1_duty(242);
    delay_us(100);
    set_pwm1_duty(239);
    delay_us(100);
    set_pwm1_duty(237);
    delay_us(100);
    set_pwm1_duty(232);
    delay_us(100);
    set_pwm1_duty(229);
    delay_us(100);
    set_pwm1_duty(227);
    delay_us(100);
    set_pwm1_duty(221);
    delay_us(100);
    set_pwm1_duty(219);
    delay_us(100);
    set_pwm1_duty(214);
    delay_us(100);
    set_pwm1_duty(209);
    delay_us(100);
    set_pwm1_duty(206);
    delay_us(100);
    set_pwm1_duty(201);
    delay_us(100);
    set_pwm1_duty(196);
    delay_us(100);
    set_pwm1_duty(191);
    delay_us(100);
    set_pwm1_duty(186);
    delay_us(100);
    set_pwm1_duty(178);
    delay_us(100);
    set_pwm1_duty(173);
    delay_us(100);
    set_pwm1_duty(168);
    delay_us(100);
    set_pwm1_duty(160);
    delay_us(100);
    set_pwm1_duty(155);
    delay_us(100);
    set_pwm1_duty(147);
    delay_us(100);
    set_pwm1_duty(142);
    delay_us(100);
    set_pwm1_duty(135);
    delay_us(100);
    set_pwm1_duty(127);
    delay_us(100);
    set_pwm1_duty(122);
    delay_us(100);
    set_pwm1_duty(114);
    delay_us(100);
    set_pwm1_duty(107);
    delay_us(100);
    set_pwm1_duty(99);
    delay_us(100);
    set_pwm1_duty(91);
    delay_us(100);
    set_pwm1_duty(84);
    delay_us(100);
    set_pwm1_duty(76);
    delay_us(100);
    set_pwm1_duty(68);
    delay_us(100);
    set_pwm1_duty(61);
    delay_us(100);
    set_pwm1_duty(53);
    delay_us(100);
    set_pwm1_duty(45);
    delay_us(100);
    set_pwm1_duty(38);
    delay_us(100);
    set_pwm1_duty(30);
    delay_us(100);
    set_pwm1_duty(20);
    delay_us(100);
    set_pwm1_duty(12);
    delay_us(100);
    set_pwm1_duty(5);
    delay_us(100);
    set_pwm1_duty(2);
    delay_us(100);
    set_pwm1_duty(0);
    delay_us(100);
 }
void main()
{
    set_tris_a(0b00000000);
    set_tris_b(0b00000100);
    output_b(0x00);
    setup_ccp1(CCP_PWM);
    setup_timer_2(T2_DIV_BY_1, 255, 1);
    setup_adc(ADC_CLOCK_INTERNAL);
    
  cimke:
    if(input(Enable)){
    output_high(Phase1);
    szinusz();
    output_low(Phase1);
    output_high(Phase2);
    szinusz();
    output_low(Phase2);
       goto cimke;
    }
    
    else
       output_b(0x00);
       set_pwm1_duty(0);
       goto cimke;

}
       
    
