NEC格式红外发射C程序 C51 下载本文

//**********************************************// //**********NEC格式红外遥控发射程序*************// //*******************ID WR OK*******************// //***************20110315_zxq*******************// //****20s-M-1S-40EB728D-3S-ID WR(40EE6699)******// //**********************************************// #include #define uint unsigned int #define uchar unsigned char static bit OPT; sbit IR=P3^4; //sbit key=P1^7; static uint count; static uint endcount; static uchar flag; static uchar Syscode_H; static uchar Syscode_L; uchar IR_bufdata[4]; void Init(void);

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>1; } } endcount=10; //每个代码发送完毕后的延时 flag=1; 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