#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 x;
uint j=0;
delay1ms(uint i)//延时1毫秒
{
uchar t;
while(i--)
{
for(t=0;t<115;t++);
}
}
display(uchar x)//数码管显示
{
P2=0xef;
P0=S[x/10];
delay1ms(5);
P2=0xdf;
P0=S[x%10];
delay1ms(5);
P2=0xff;
}
void main()
{
TMOD=0x01;
EA=1;
IT0=0;
ET0=1;
TR0=1;
TH0=0x4c;
TL0=0x00;
while(1) //20个50毫秒
{
do
{
TH0=0x4c;
TL0=0x00;
j=j+1;
}while(j<20);
j=0;
display(x);
x++;
}
}
void T0zhongduan() interrupt 1
{
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
..... //以上是你原来的程序
bit _1_second_flag = 0;
main()
{
....
.... //这几句是你原来的
while(1)
{
if(_1_second_flag)
{
_1_second_flag = 0;
display(x++);
}
}
}
void T0zhongduan() interrupt 1
{
if(++j == 20)
{
j = 0;
_1_second_flag = 1; //1秒
}
TH0=0x4c;
TL0=0x00;
}
基本上行了,但是为什么两个数码管亮了1秒又灭1秒啊???哪里出错了?
..... //以上是你原来的程序
bit _1_second_flag = 0;
main()
{
....
.... //这几句是你原来的
while(1)
{
display(x);
if(_1_second_flag)
{
_1_second_flag = 0;
if(++x >= 100)
x = 0;
}
}
}
void T0zhongduan() interrupt 1
{
if(++j == 20)
{
j = 0;
_1_second_flag = 1; //1秒
}
TH0=0x4c;
TL0=0x00;
}
OK了非常感谢。。。。。。
一周热门 更多>