51单片机的计数器程序

跪求51单片机的计数器程序啊,自己编了一个,可是不知道为什么不行。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0;
sbit d2=P1^1;
sbit d3=P1^2;
sbit d4=P1^3;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
P1=0xFF;
EA=1;
TMOD=0x50;//T1方式,计数模式
TH1=0;
TL1=0;
TR1=1;
}
void main ()
{
init();
d1=0;

while(1)
{
d2=0;
TR1=1;
if((TL1==1)&&(TH1==0))
{
TR1=0;
d3=0;
TH1=0;
TL1=0;

}
}

}
为什么执行不了呢?总是进不了if语句

你得在P3.5引脚外部加计数脉冲信号呀,T1才能计数的。就用你的程序,仿真的结果如下图,并用数码管显示了TL1=1的状态了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-22
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0;
sbit d2=P1^1;
sbit d3=P1^2;
sbit d4=P1^3;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
P1=0xFF;
EA=1;
TMOD=0x60;//T1方式,计数模式
TH1=0xff;
TL1=0xff;
ET1=1;
TR1=1;
}
void t0isr()
{
d2=~d2;
d3=~d3;
d4=~d4;
}
void main ()
{
init();
d1=0;
while(1);
}
//试试,来一个脉冲中断一次,d2,d3,d4取反一次,
第2个回答  2014-04-22
表示完全看不懂你要干什么,我太笨
相似回答