这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » DS1302显示

共11条 1/2 1 2 跳转至

DS1302显示

菜鸟
2013-11-27 12:51:59     打赏
我的那个开发板配套的用数码管显示时间程序,最后几句是这样的

main()

{

    ds1302_init();

    while(1)

      {

         read_time();

         display();

      }

一开始我不明白为什么要用while死循环,所以我尝试把while程序改成这样

for(i=0;i<200;i++)

{

   read_time();

   display();

}

结果,数码管上秒钟从0变到1,又立即变回0,又变到1,又变到0,如此循环;当我把i<200改成i<300,数码管显示又正常了。这是什么原因呢,怎么解释??好像要有个最小起振时间似的。

另外,我的6位数码管是连接了两个HC573锁存器,程序则是采取轮流打开位选,段选的方式。

院士
2013-11-27 14:34:21     打赏
2楼
什么开发板?

高工
2013-11-27 22:36:52     打赏
3楼
因为你程序贴的不完整,也不好判断,估计你定义的是unsigned char i;这样i<300和while(1)的效果是一样了

专家
2013-11-28 08:54:36     打赏
4楼
楼上说的是,int 255哦

菜鸟
2013-11-28 10:23:03     打赏
5楼
确实,果然是高手!那这样的话如果 i 增加到255后,这个for循环会怎么执行呢??因为此时 i 的值已经到它的最大值了,i 会变成多少??

高工
2013-11-28 20:21:30     打赏
6楼
255后 i变为0,继续循环,楼主需要补补基础,变量类型unsigned char是无符号8位的

专家
2013-11-28 20:29:49     打赏
7楼
楼主可以分析下程序的汇编代码,会更深入的理解

专家
2013-11-28 20:55:25     打赏
8楼
就是应该用死循环的啊,为什么用FOR循环?

院士
2013-11-28 22:08:38     打赏
9楼

在一部分的示例程序里,的确写的是

“for(;;)”来代表while(1)的


专家
2013-11-29 08:55:13     打赏
10楼
但是他这个FOR循环,是有次数的,不是无限循环。

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]