|
#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年就出了??
|
|