//**********************************************// //**********NEC格式红外遥控发射程序*************// //*******************ID WR OK*******************// //***************20110315_zxq*******************// //****20s-M-1S-40EB728D-3S-ID WR(40EE6699)******// //**********************************************// #include
void Send_IR(uchar CustomCode); //void Delay_ms(uint ms); void Delay_s(uchar s);
void main(void) { Init(); Delay_s(20); Syscode_L=0xee; Send_IR(0x01); Delay_s(1); Syscode_L=0xeb; Send_IR(0x72); Delay_s(3); Syscode_L=0xee; Send_IR(0x66); Delay_s(17); while(1) { Delay_s(1); Syscode_L=0xee; Send_IR(0x67); } }
//红外发射管的状态位0,1 //红外发射端口 //延时计数器 //终止延时计数 //红外发送标志 //系统码高8位 //系统码低8位 //遥控代码存放缓冲区 //发射数据码 //ms延迟子程序 //s延迟子程序 //初始 //等待开机 //系统码设置 //发送遥控代码M //系统码设置 //发送遥控代码 //系统码设置 //发送遥控代码ID WR //系统码设置 //发送遥控代码LED提示 void timeint(void) interrupt 1 {
TH0=0xFF; TL0=0xE6; count++;
if(flag==1) {
OPT=~OPT; } else {
OPT=0; }
IR=OPT; }
void Init(void) { count=0; flag=0; OPT=0; IR=0; Syscode_H=0x40; Syscode_L=0xbf; EA=1; TMOD=0x01; ET0=1; TH0=0xFF; TL0=0xE6; TR0=1;
}
void Send_IR(uchar CustomCode) { uint i,j; IR_bufdata[0]=Syscode_H; IR_bufdata[1]=Syscode_L; IR_bufdata[2]=CustomCode; IR_bufdata[3]=~CustomCode;
endcount=223;
flag=1; count=0;
//定时器0中断处理
//26us中断一次,频率为38KHZ
//CPU开总中断
//设定时器0为16位 模式1 //定时器0中断允许
//26us中断一次 频率为38KHZ //开始计数
//Syscode数据转移到IR_bufdata[]内
//发送9ms的起始码
while(count endcount=117; //发送4.5ms的结果码 flag=0; count=0; while(count void Delay_ms(uint ms) //ms延迟子程序 { for(;ms>0;ms--) { flag=0; count=0; while(count<24); } } */ void Delay_s(uchar s) { for(;s>0;s--) { flag=0; count=0; while(count<27772); } } //1ms //s延迟子程序 //1s