51单片机中写数码管59秒循环计时的程序可以不用计时器吗?用延时函数可能实现吗?

我用的是void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
这种延时程序但是写了很久都写不好i。显示十位的数码管总是灭的,也就是说个位可以从0-9,但是不会显示十位。关键是哪个延时程序放在那个地方的问题。
求大师赐教啊!

可以实现。不过这样的定时精度比较低。既然能计数,那说明是你的数码管部分的程序没写好。
直接delay(1000)就约等于1s 了,不过你这样最好计数小一点,因为这个延时程序执行完了之后还要执行显示函数。还有一种方法就是自己估算一下显示函数需要花多长时间,然后在while里同时执行delay和显示函数,这时候就要定义一个变量,全局变量追问

能帮我写一下吗?谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-17
延时函数可以完成循环,但是有误差 , 不过你可以吧程序段拆开 这样可以有效减小误差
至于你写的程序 没看出有什么实际用处
第2个回答  2011-07-17
可以用单片机的定时器,可参看有关资料。
十位不亮与延时函数没啥关系,看看自己管脚设置。
第3个回答  2011-07-17
可以的,是你程序有问题把