发新帖我要提问
12
返回列表
打印

基于51定时器的时钟设计

[复制链接]
楼主: 雷影少年
手机看帖
扫描二维码
随时随地手机跟帖
21
651927693| | 2012-7-26 08:28 | 只看该作者 回帖奖励 |倒序浏览
就楼上的定时器不准的问题,可以通过反汇编的方式或者仿真来求得从中断到TH和TL重新被赋值所需的时间,相应地,修改定时器初值即可

使用特权

评论回复
22
雷影少年|  楼主 | 2012-7-26 08:38 | 只看该作者
谢谢LS,不过你那只能解决部分问题,版主说的是每次执行按键扫描程序时定时器依旧在计数二产生的误差,只要在执行按键扫描后给定时器重新再付初值就可以避免。
不过因为定时器初值不精确产生的误差会被累积,而这个程序中执行按键扫描产生的误差最大不过50ms,并且每次执行按键扫描程序是都会产生新的误差,且不会被累积

使用特权

评论回复
23
yuanyepeng| | 2012-7-26 15:40 | 只看该作者
值得探讨,.............

使用特权

评论回复
24
wukunshan| | 2012-7-26 22:06 | 只看该作者
本帖最后由 wukunshan 于 2012-7-26 22:35 编辑

你的这个矩阵键盘扫描还挺牛X的,用到递归调用。没错,在这个程序里,除了F键,其他键都是正常的。当F键按下松手后,函数递归调用,是一个死循环!所以,F键按下当然得不到你想要的结果了。
解决方法,在最后的大括号上面加一个语句,防止递归无休止调用:
             .
             .   
             .
             key_num =0;
             }
             else  return 0;//函数返回
         }

使用特权

评论回复
25
雷影少年|  楼主 | 2012-7-26 22:32 | 只看该作者
O(∩_∩)O谢谢ls
是递归调用的问题,因为若F不松开函数就一直进行递归调用,没调用一次key_num自加1,所以就出现了类似抖动的现象。
哈哈~想通了~
解决问题去

使用特权

评论回复
26
雷影少年|  楼主 | 2012-7-27 09:09 | 只看该作者
你的这个矩阵键盘扫描还挺牛X的,用到递归调用。没错,在这个程序里,除了F键,其他键都是正常的。当F键按下松手后,函数递归调用,是一个死循环!所以,F键按下当然得不到你想要的结果了。
解决方法,在最后的大括 ...
wukunshan 发表于 2012-7-26 22:06

没看到你重新编辑的帖子,我把递归调用去掉了,对递归的理解不够啊~
还要继续学C呀~

使用特权

评论回复
27
sedatefire| | 2012-8-15 17:12 | 只看该作者
递归?
在51里面玩递归
那是闲得蛋疼了

使用特权

评论回复
28
sedatefire| | 2012-8-15 17:13 | 只看该作者
reentrant
神的领域:funk:

使用特权

评论回复
29
sedatefire| | 2012-8-15 17:14 | 只看该作者
要高速51
ram够大
懂得函数传参规则
才敢涉水...
51版本的ucos就一堆reentrant

使用特权

评论回复
30
雷影少年|  楼主 | 2012-8-15 19:11 | 只看该作者
吃了亏才知道,递归果然不能乱用啊~

使用特权

评论回复
31
xiangyi0801| | 2012-8-16 15:16 | 只看该作者
路过,学习了

使用特权

评论回复
32
哒哒哒的马达| | 2013-1-13 09:57 | 只看该作者
长知识了膜拜@wukunshan。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则