// 37.7kHZ PWM IR carrier signal
#include <p18f1320.h>
#include <delays.h>
#pragma config WDT = OFF,OSC = INTIO2,LVP = OFF
void Delay10TCYx(PARAM_SCLASS unsigned char);
void Delay100TCYx(PARAM_SCLASS unsigned char);
void Delay1KTCYx(PARAM_SCLASS unsigned char);
void Delay10KTCYx(PARAM_SCLASS unsigned char);
void MyL0(void);
void MyL1(void);
void main(void) {
OSCCON=0x72; // speed up the clock to 8MHz
ADCON1 = 0;
TRISBbits.TRISB3 = 0;
PR2 = 0b00110100 ;
T2CON = 0b00000100 ;
CCPR1L = 0b00011010 ;
CCP1CON = 0b00011100 ;
while(1) {
///////////////////////////////////////
//////// Start Bit
/////////////////////////////////////////
CCPR1L = 0x1A; // Start
CCP1CON = 0x1C ; // 50%
Delay1KTCYx(4);
Delay100TCYx(8);
CCPR1L = 0x00; //Space
CCP1CON = 0x0C ; // 0%
Delay1KTCYx(1);
Delay100TCYx(2);
//////////////////////////////////////////
///////// Command Code
////////////////////////////////////////
MyL0();
MyL0();
MyL1();
MyL0();
MyL0();
MyL1();
MyL0();
////////////////////////////////////////////
///////// Below is DEVICE CODE
///////////////////////////////////////////
MyL1();
MyL0();
MyL0();
MyL0();
MyL0();
//////////////////////////////////////////////
//////// Just a wait to restart send /////////
//////////////////////////////////////////////
Delay1KTCYx(4);
}
}
void MyL0(void){
CCPR1L = 0x1A; // 0
CCP1CON = 0x1C ; // 50%
Delay1KTCYx(1);
Delay100TCYx(2);
CCPR1L = 0x00; //Space
CCP1CON = 0x0C ; // 0%
Delay1KTCYx(1);
Delay100TCYx(2);
}
void MyL1(void){
CCPR1L = 0x1A; // 1
CCP1CON = 0x1C ; // 50%
Delay1KTCYx(2);
Delay100TCYx(4);
CCPR1L = 0x00; //Space
CCP1CON = 0x0C ; // 0%
Delay1KTCYx(1);
Delay100TCYx(2);
}