#include "emisorNEC.h"

#define IR_CODE_TV_ON   0x20DF10EFL

void ir_send(int32 code);


void main()
{
   //setup_oscillator(OSC_4MHZ);
   //port_a_pullups(TRUE);
   //setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   
   
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(0);
   setup_timer_2(T2_DIV_BY_1,26,1);


   for (;;) {
         delay_ms(2000);
         ir_send(IR_CODE_TV_ON);
   }
}



void ir_send(unsigned int32 code)
{
   unsigned char i = 0;
   disable_interrupts(GLOBAL); 
   
   // Envío el START
   set_pwm1_duty(13);
   delay_us(9000);
   
   set_pwm1_duty(0);
   delay_us(4500);

   // Voy desgranando el código
   while (i < 32) {
      #bit first = code.31
      
      // Transmitimos un 1
      if (first) {
         set_pwm1_duty(13);
         delay_us(560);
         set_pwm1_duty(0);
         delay_us(1690);   
      }
      
      // Transmitimos un 0
      else {
         set_pwm1_duty(13);
         delay_us(560);   
         set_pwm1_duty(0);
         delay_us(560);   
      }
      
      code <<= 1;
      i++;
   }
   
   // Bit de parada
   set_pwm1_duty(13);
   delay_us(560);   
   set_pwm1_duty(0);
   
   enable_interrupts(GLOBAL);
}
