各位大神麻烦帮小弟看看这个60秒计时为什么十位一直在闪...

2019-07-16 00:16发布

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code S[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar n1,n2,n;
sbit led=P1^0;

delay(uint i)//延时1毫秒
{
uchar t;
while(i--)
{
for(t=0;t<115;t++);
}
}

timer0()//定时器初始化
{
TMOD=0x11;
TH0 = 0xdc;
TL0 = 0x00;
TH1 = 0x4c;
TL1 = 0x00;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}

led0()//led灯闪烁
{
if(n1==20)
{
n1=0;
led=~led;
}
}

smg()//数码管显示
{

if(n2==20)
{
n2=0;
n++;

if(n==60)//60秒计时
n=0;

P2=0xbf;//个位
P0=S[n/10];
//delay(5);
P2=0x7f;//十位
P0=S[n%10];
delay(5);
}
}

main()
{
timer0();
while(1)
{
led0();
smg();
}
}

void t0() interrupt 1
{
TH0 = 0xdc;
TL0 = 0x00;
n1++;
}

t1() interrupt 3
{
TH1 = 0x4c;
TL1 = 0x00;
n2++;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
Stone_up
1楼-- · 2019-07-16 00:31
去掉  delay(5);
                 
zhengha
2楼-- · 2019-07-16 04:13
P2=0xbf;//个位
P0=S[n/10];
//delay(5);
P2=0x7f;//十位
P0=S[n%10];
delay(5);
一楼其实已经说了
iyf
3楼-- · 2019-07-16 09:49
楼主请教用for语句如何定时
爱放火的小孩
4楼-- · 2019-07-16 12:04
 精彩回答 2  元偷偷看……
爱放火的小孩
5楼-- · 2019-07-16 13:54
zhengha 发表于 2013-6-2 20:46
P2=0xbf;//个位
P0=S[n/10];
//delay(5);

去掉之后十位就不亮了
爱放火的小孩
6楼-- · 2019-07-16 18:00
iyf 发表于 2013-6-2 22:32
楼主请教用for语句如何定时

什么??????

一周热门 更多>