标题: 请教:单片机频率计程序怪问题,被测频率没变但屏显数字无规律变化 [打印本页]

作者: 怪怪爱玩    时间: 2018-9-22 10:03
标题: 请教:单片机频率计程序怪问题,被测频率没变但屏显数字无规律变化
网上下载的频率测试程序,1S 刷新一次,现在的问题是被测频率没变,但程序清零时,显示屏会变化,数字没有规律,但也是 1S 变化
主要程序如下:



我的判断,就是  count  清零所致,导致送到显示屏的num  数也变了,显示屏也就变了



num  数也变了,显示屏也就跟变没了

请教此程序怎么解决,谢谢大家,谢谢

作者: mmssll    时间: 2018-9-22 12:08
你做个备份啊,num1传到显示屏,计数器清零时更新num值,计数器不清零时用num更新num1
作者: 怪怪爱玩    时间: 2018-9-22 14:06
mmssll 发表于 2018-9-22 12:08
你做个备份啊,num1传到显示屏,计数器清零时更新num值,计数器不清零时用num更新num1

谢谢回答,能提示一下具体怎么操作吗?
作者: zl2168    时间: 2018-9-23 22:01
本帖最后由 zl2168 于 2018-9-24 21:44 编辑

实例73  测量脉冲频率
实例73  测量脉冲频率

Proteus仿真一下,确认有效 实例73 测量脉冲频率.rar (52.74 KB, 下载次数: 11)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,程序语句条条有注解。

作者: sxhwdz    时间: 2018-9-24 08:38
本帖最后由 sxhwdz 于 2018-9-24 09:48 编辑

你的变量count是16位还是8位的?如果是16位的那就是双字节,双字节变量加1、读取等操作都是1条指令完成不了的,所以在中断外部程序,或低优先级中断程序操作双字节变量时,要关断高优先级的中断,以防正在执行双字节操作指令一半时,发生高优先级中断对该变量修改,返回后另一半已经发生变化。
具体就是:

  EX0=0;
  num=count;
  count=0;
  EX0=1;
  a=0;
作者: sxhwdz    时间: 2018-9-24 09:47
本帖最后由 sxhwdz 于 2018-9-24 10:48 编辑
sxhwdz 发表于 2018-9-24 08:38
你的变量count是16位还是8位的?如果是16位的那就是双字节,双字节变量加1、读取等操作都是1条指令完成不了 ...

打错了,应该是:

  EX0=0;
  num=count;
  count=0;
  EX0=1;
  a=0;
作者: yousunny    时间: 2018-9-24 11:10
怪怪爱玩 发表于 2018-9-22 14:06
谢谢回答,能提示一下具体怎么操作吗?

就是说,在弄一个中间变量,把num的值保存下来,然后再更新
作者: 怪怪爱玩    时间: 2018-9-25 09:40
zl2168 发表于 2018-9-23 22:01
实例73  测量脉冲频率
实例73  测量脉冲频率

不好意思,你那个我打不开,不知道什么文件
作者: zl2168    时间: 2018-9-25 14:04
怪怪爱玩 发表于 2018-9-25 09:40
不好意思,你那个我打不开,不知道什么文件

zai在proteus仿真中打开,可仿真运行,观看是否有效?若感兴趣,再去阅读程序。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1