单片机 数码管 显示时分秒

voidt1()interrupt3//定时器1中断,中断标号计算:y=8*x+3(y是十进制中断向量地址x是中断标号){staticuint32s=0,m=0,h=0;... void t1() interrupt 3 //定时器1中断 ,中断标号计算:y=8* x+3 (y是十进制中断向量地址x是中断标号)
{
static uint32 s=0,m=0,h=0;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
counter++;
if(counter==1000)
{
counter=0;
s++;
a[0]=s%10; //个位
a[1]=s/10%10; //十位
if(s==60)
{
s=0;
m++;
a[2]=m/100%10; //百位
a[3]=m/1000%10; //千位
if(m==60)
{
m=0;
h++;
a[4]=h/10000%10; //万位
a[5]=h/100000%10; //十万位
if(h==24)
{
h=0;
}
}
}

}
refresh_led(); //对6个数码1ms刷新一次
}
为什么我用仿真软件,仿真只能显示秒位。求大侠指点
展开
 我来答
ochrise
2013-08-04 · 超过15用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:26.3万
展开全部
因为 你的 分和时 都是零啊。。。。。
改正如下:
。。。
a[2]=m%10;
a[3]=m/10%10;
。。。
a[4]=h%10;
a[5]=h/10%10; 。
。。。

因为s,m,h都相当与时两位数,不能因为m在第三,四位上就要除100,1000.
。。。
赶快试下吧。
一万光年MEGn0
2013-08-04 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1075万
展开全部
个十百千万位都算错了

例如:十万位: = h/100000;
万位: = h%100000/10000;
千位: = h%100000%10000/1000;
百位: = h%100000%10000%1000/100;

其它以此类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式