|
#include<reg52.h>
sbit send=P1^0;
unsigned char flag;
unsigned int endcount,count;
sbit ka=P3^0;
void delay();
void main(){
int i;
TMOD=0x01;
TH0=0xff;
TL0=0xf3; //中断时间设置为13us
EA=1;
ET0=1;
while(1){
if(ka==0)
{
endcount=692;
count=0;
flag=1;
TR0=1;
while(endcount>count); //9ms高电平发射
TR0=0;
endcount=346;
count=0;
flag=0;
TR0=1;
while(endcount>count); //4.5ms低电平
TR0=0;
for(i=0;i<32;i++) //假设4字节全是0,一共发送32位字节
{
endcount=43;
count=0;
flag=1;
TR0=1;
while(endcount>count);//0.56ms高电平
TR0=0;
endcount=43;
count=0;
flag=0;
TR0=1;
while(endcount>count);//0.56ms低电平
TR0=0;
}
}
}
}
void Timmer0() interrupt 1
{
if(flag==1)
send=~send; ///这是疑问的地方?????
else
send=0;
count++;
}
//另外关于8位重载比16位的定时要更准确一点,,听说有16为自动重载定时方式的单片机还是在13年就出了??
|
|