我在proteus中做一个60的倒计时。个人觉得应该是延时不对。请大虾帮忙看看。。

#include<reg52.h>unsignedchartable2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0... #include<reg52.h>
unsigned char table2[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};

unsigned int num=0, i=0, j=0, k=0;
unsigned int shu=59, shiwei, gewei, shuzi;
sbit wei1=P3^0;
sbit wei2=P3^1;

/*延时函数*/
void delay(unsigned int num)
{
for(i=0;i<num;i++)
{
for(j=0;j<1000;j++)
;
}
}

/*取位,个位十位*/
void quwei(unsigned int shuzi)
{
shiwei = shuzi/10;
gewei = shuzi%10;
}

/*主函数*/
void main(void)
{
while(1)
{
quwei(shu);
wei1=1;
P2=table2[gewei];
wei1=0;
delay(1);
wei2=1;
P2=table2[shiwei];
wei2=0;
delay(1);
shu--;
delay(50);
}
}
开始的时候显示55,然后个位闪烁。一段时间后两位都变成44.
展开
 我来答
第一千个幻影
2011-07-10 · TA获得超过138个赞
知道答主
回答量:121
采纳率:0%
帮助的人:42.9万
展开全部
这个程序不是这么写的

1 延时函数
2 主函数
3 显示函数
4 取位函数

然后在显示函数里面只要调用先是函数就可以了

void main(void)
{
while(1)
{
xianshi();
}
}

void xianshi ()
{
P1=0X00
P2=table2[gewei];
delay(50);
P1=0X01
P2=table2[shiwei];
delay(50);
}

你要是倒计时的精确的要求比较高的话 还要用到定时器/计时器 延时是很不稳定的

上网下载一个程序 很多的 刚才我写的也不对 有点忙 不好意思啊 不过各个模块就是那个样子的 加油兄弟
47okey
2011-07-10 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2400万
展开全部
动态显示的倒计时不能这样写的。
要用到定时器作秒计时的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灯朔4862
2011-07-10 · TA获得超过7.3万个赞
知道大有可为答主
回答量:4.7万
采纳率:0%
帮助的人:7011万
展开全部
具体遇到了什么问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式