//********************************************************************** /*   「赤外線リモコンリピータ」 */ //********************************************************************** #define LED GPIO.F1 //********************************************************************** void Pwm_Change_DutyEx(unsigned int duty_ratio) { CCPR1L = duty_ratio >> 2; CCP1CON.DC1B0 = duty_ratio & 0b00000001; CCP1CON.DC1B1 = (duty_ratio & 0b00000010) >> 1; } //********************************************************************** void main() { OSCCON = 0b01110000; // クロックを8Mhzに設定する。 CMCON0 = 0b00000111; // コンパレータは使用しない。 ANSEL = 0b00000000; // A/D変換は使用しない。 TRISIO = 0b00001001; // Pwm_Init(38000); // 38kHz duty=50% Pwm_Change_DutyEx((PR2 * 4) / 2); Pwm_Stop(); // while (1) { //赤外線リモコン受信モジュールの出力信号の立下りをチェックする。 while (GPIO.F3 == 1) ; //38kHzのキャリアを出力する。 Pwm_Start(); LED = 1; //赤外線リモコン受信モジュールの出力信号の立ち上がりをチェックする。 while (GPIO.F3 == 0) ; //38kHzのキャリアを停止する。 Pwm_Stop(); LED = 0; } } //**********************************************************************