#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好像没有什么用.... 谢谢大家能给点意见,我没有仿真工具,麻烦大家了......
|