请问基于单片机红外发射与接收的C程序?

单片机用的是8位的P89LPC916,红外接收器是TSOP32238,通信协议如下:
遥控器通信协议
一、 厂用遥控器
1、 取址(Addr)键:
发送数据格式为:0x5A;0xFF;0xFF;0xFF;0xFF; 0xYY;0x20;0x55;
接收数据格式为:0xBB;addr[0]; addr[1]; addr[2]; addr[3]; 0xYY; 0x10;0x55;
注:addr[ ] 为地址数组。
2、 切换(Switch)键:
发送数据格式为:0x5A;addr[0]; addr[1]; addr[2]; addr[3]; 0xYY; 0x21;0x55;
注:addr[ ] 为地址数组。
3、 取消(Esc)键:
发送数据格式为:0x5A;addr[0]; addr[1]; addr[2]; addr[3]; 0xYY; 0x22;0x55;
注:addr[ ] 为地址数组。
4、 开向(Open)键:
发送数据格式为:0x5A;addr[0]; addr[1]; addr[2]; addr[3]; 0xYY; 0x23;0x55;
注:addr[ ] 为地址数组。
5、 停止(Stop)键:
发送数据格式为:0x5A;addr[0]; addr[1]; addr[2]; addr[3];0xYY; 0x24;0x55;
注:addr[ ] 为地址数组。
6、 关向(Close)键:
发送数据格式为:0x5A;addr[0]; addr[1]; addr[2]; addr[3]; 0xYY; 0x25;0x55;
注:addr[ ] 为地址数组。

二、 用户遥控器
1、取址(Addr)键:
发送数据格式为:0x5C;0xFF;0xFF;0xFF;0xFF; 0xYY;0x20;0x55;
接受数据格式为:0xBB;addr[0]; addr[1]; addr[2]; addr[3]; 0xYY; 0x55;
注:addr[ ] 为地址数组。
2、切换(Switch)键:
发送数据格式为:0x5C;addr[0]; addr[1]; addr[2]; addr[3];0xYY; 0x21;0x55;
注:addr[ ] 为地址数组。
3、取消(Esc)键:
发送数据格式为:0x5C;addr[0]; addr[1]; addr[2]; addr[3];0xYY; 0x22;0x55;
注:addr[ ] 为地址数组。
4、开向(Open)键:
发送数据格式为:0x5C;addr[0]; addr[1]; addr[2]; addr[3];0xYY; 0x23;0x55;
注:addr[ ] 为地址数组。
5、停止(Stop)键:
发送数据格式为:0x5C;addr[0]; addr[1]; addr[2]; addr[3];0xYY; 0x24;0x55;
注:addr[ ] 为地址数组。
6、关向(Close)键:
发送数据格式为:0x5C;addr[0]; addr[1]; addr[2]; addr[3];0xYY; 0x25;0x55;
注:addr[ ] 为地址数组。

三、备注
addr[0]、 addr[1]、addr[2]、addr[3],分别对应4位出厂编号的第一位、第二位、第三位、第四位。
0xYY代表除自身以外的所有数据之和,用于校验。
即0xYY =0x5A+ addr[0]+ addr[1]+addr[2]+addr[3]+0xxx+0x55
或0xYY =0x5C+ addr[0]+ addr[1]+addr[2]+addr[3]+0xxx+0x55
或0xYY =0xBB+ addr[0]+ addr[1]+addr[2]+addr[3]+0xxx+0x55

0xxx为 0x20, 0x21, 0x22, 0x23, 0x24, 0x25
/////////////////////////////////////////////////////////////////////////////////////////////////////
C程序怎么写?
谢谢啊,你啥时候写好?

加我,百度,我写好了,过来拿
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-21
写得好乱超乱,我来帮帮你写写啦!
第2个回答  2011-02-22
唉!真乱
相似回答