|
#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; //中斷時(shí)間設(shè)置為13us
EA=1;
ET0=1;
while(1){
if(ka==0)
{
endcount=692;
count=0;
flag=1;
TR0=1;
while(endcount>count); //9ms高電平發(fā)射
TR0=0;
endcount=346;
count=0;
flag=0;
TR0=1;
while(endcount>count); //4.5ms低電平
TR0=0;
for(i=0;i<32;i++) //假設(shè)4字節(jié)全是0,一共發(fā)送32位字節(jié)
{
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++;
}
//另外關(guān)于8位重載比16位的定時(shí)要更準(zhǔn)確一點(diǎn),,聽說有16為自動(dòng)重載定時(shí)方式的單片機(jī)還是在13年就出了??
|
|