proteus我用的是定时器1进行1us的定时输出 但是最后的出的是40us的输出 这让我很苦恼。
以下是我的程序
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit out=P1^3;
uint num,N;
uchar FT;
void main(viod)
{
EA=1;//全开
ET1=1;
TMOD=0x01;
TH1=(65536-1)/256;
TL1=(65536-1)%256;
//EX0=1;
//IT0=1;
// ET0=1;
// TR0=1;
TR1=1;
while(1);
}
/*void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void INchack()interrupt 0
{
num=65536-TH0*256;
if(num>=30)
{
N=N-15;
}
else
{
N=N+15;
}
FT=1;
}
void T0_
timer() interrupt 1
{
if(FT==1)
{
TH0=(65536-N)/256;
TL0=(65536-N)%256;
FT=0;
}
else
{
TH0=(65536-30)/256;
TL0=(65536-30)%256;
}
TR1=1;
}
*/
void T1_timer() interrupt 3
{
TH1=(65536-1)/256;
TL1=(65536-1)%256;
out=~out;
// delay(1);
// TR1=0;
}
一周热门 更多>