| 
 
| #include<reg52.h> sbit data=P3^6;//发射端口
 unsigned int delay;
 send0()//发送0程序
 {data=0;
 delay=282;
 while(--delay);//0.565ms的低电平
 data=1;
 delay=280;
 while(--delay);//0.56ms的高电平
 }//0是由0.56ms的低电平和0.56ms的高电平组成
 send1()
 {data=0;
 delay=282;
 while(--delay);//0.565ms的低电平
 data=1;
 delay=842;
 while(--delay);//1.685ms
 }//1是由0.565的低电平和1.685的高电平组成
 sendbyte(num)//发送一个字节
 {unsigned char k;
 for(k=0;k<8;k++)
 {if(num&0x01) send1();//取出该字节的末位,如果是1则发送1
 else send0();
 num>>=1;//循环该字节
 }
 }
 T0chu()//T0的初始化
 {GATE=0x02;//T0工作在方式2
 EA=1;
 ET0=1;
 TL0=0xf3;//每13US产生中断
 TR0=1;
 }
 duanT0()interrupt 1
 {data=0;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();//把发射端拉低,并持续13US
 }
 void main()
 {
 T0chu();
 sendbyte(0);//开始
 sendbyte(num);
 sendbyte(~num);
 sendbyte(0xff);//结束
 }
 //可能格式不对,开始和结束用一个字节0和FF好像没有什么用....
 谢谢大家能给点意见,我没有仿真工具,麻烦大家了......
 
 
 
 
 
 | 
 |