打印

汇编跟C语言写的程序差距有那么大嘛?

[复制链接]
3207|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子三极管|  楼主 | 2010-2-2 08:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问诸位高手:汇编跟C语言写的程序差距有那么大嘛?我是用C语言写的一个倒计时显示程序 ,就是马路口的交通信号灯倒计时。现在的问题是我写的程序刚开始几个小时两块显示屏是很齐步的,慢慢的就开始出现不齐步,昨晚试了一个晚上 ,早上起来发现不整齐了 一前一后,相差1S或者不到1S,又有时候又齐。这是什么毛病?我都没辙了 所以在百般无奈之下,讨教各路高手来了。提醒一下是不是我定时器的缘故 还是我程序本生的问题?人家用汇编写的程序都很齐 。而且一直都很齐的

相关帖子

沙发
zhaoyu2005| | 2010-2-2 08:21 | 只看该作者
应该是程序或者定时器用法的问题,定时器计数与你使用C或者汇编无关,如果出现很大的差别那就是程序或者定时器用法的问题了,时间要求严格并且定时器的中断不是最高优先级的话,应该用自动装载模式。
除非对汇编很精通,一般人用汇编写的程序,不见得就比c写的性能好

使用特权

评论回复
板凳
电子三极管|  楼主 | 2010-2-2 08:53 | 只看该作者
我也用过8位自动装载,我用的是4.194304M晶振,8位的话时间很短只能到500us开始中断一次,所以又要2000次的累计,在累计的运算也会存在误差嘛?我试过自动装载效果也不齐一段时间之后 2# zhaoyu2005

使用特权

评论回复
地板
电子三极管|  楼主 | 2010-2-2 08:56 | 只看该作者
中断最高优先级 现在我只用了一个定时器1,是不是不需要中断优先级了呀? 2# zhaoyu2005

使用特权

评论回复
5
xuyaqi| | 2010-2-2 10:03 | 只看该作者
用“定时器”作时间基准精度不可能高,精度要高要用其他方法。

使用特权

评论回复
6
zhaoyu2005| | 2010-2-2 11:58 | 只看该作者
那应该是其他地方的问题,只有一个中断就不用定义优先级了

使用特权

评论回复
7
原野之狼| | 2010-2-2 12:09 | 只看该作者
跟使用汇编还是C没有关系 你仔细检查程序咯

使用特权

评论回复
8
李冬发| | 2010-2-2 12:54 | 只看该作者
不可能同步的,再准,时间长了也会走岔的。

使用特权

评论回复
9
程序匠人| | 2010-2-2 13:09 | 只看该作者
两块屏是同一个程序吗?
如是,则不是程序问题。
可能是晶振误差

使用特权

评论回复
10
cubasa| | 2010-2-2 17:09 | 只看该作者
本帖最后由 cubasa 于 2010-2-2 17:10 编辑

这种方案的倒计时应该只是自己做着玩或者学校的教学课题吧。
做成产品是不可能的,没有实用性。24小时连续工作,晶振再精密也没有用。
外面马路上的倒计时都是自学习型的。用红绿灯信号来做同步。
就是说,无论红绿灯信号机怎样设置,两三个周期下来就能正确显示。

使用特权

评论回复
11
古道热肠| | 2010-2-2 17:18 | 只看该作者
应该是一个主控来管理吧,如果是多个MCU控制,那要定时同步时钟的,不然肯定会有误差。

使用特权

评论回复
12
程序匠人| | 2010-2-2 18:04 | 只看该作者
可以用工频信号来同步。很精确哦

使用特权

评论回复
13
tigedtp| | 2010-2-2 19:35 | 只看该作者
跟程序没关系,没有完全一样的晶振,这个做法就有问题。

使用特权

评论回复
14
电子三极管|  楼主 | 2010-2-3 15:59 | 只看该作者
是的 你说的很对 问题是我们公司做的就是这样的产品,以前人家用汇编写的就能达到这个要求了  我们的采样信号也是靠一台控制仪输出的,显示板只是采集控制仪出来的电压时长,在进行两个周期的比较之后,显示正常 问题是我这些都出来了,就是两台显示屏显示比较一段时间会出现不整齐,(一会齐一会不齐..) 10# cubasa

使用特权

评论回复
15
电子三极管|  楼主 | 2010-2-3 16:02 | 只看该作者
工频信号?我不知道你说的是?  ...我们就是从一台控制仪出来的信号 用我的显示屏去采集他的电压时长,通过两个周期的比较在进行显示的原理。现在我的显示一段时间之后不齐 12# 程序匠人

使用特权

评论回复
16
cubasa| | 2010-2-4 13:39 | 只看该作者
14# 电子三极管
红绿灯信号一般都只有几十秒到几分钟,如果是用它们做同步的话,一定是能做到完全同步,分毫不差的。如果是同一个硬件系统,人家用汇编成功,就可以排除硬件的原因。
可以肯定不是因为用C的原因。这样的单片机系统,实时性不高,用C是首选。是你的程序有问题,我大概知道为什么,但希望你去自己考虑。自己把问题解决了成就感会更大。

使用特权

评论回复
17
pkt800| | 2010-2-4 21:12 | 只看该作者
有差别!可读性方面

使用特权

评论回复
18
zjswuyunbo| | 2010-2-5 00:52 | 只看该作者
或者楼主贴出程序电路图给大家看看(方便的话)…这个东西应该不是什么觉密吧?

使用特权

评论回复
19
joecongmin| | 2010-2-5 10:55 | 只看该作者
用市电频率同步,硬件搞个 过零检测,或两个进行通信

使用特权

评论回复
20
maaaaa| | 2010-2-5 14:55 | 只看该作者
早上起来发现不整齐了 一前一后,相差1S或者不到1S,又有时候又齐
如果真是这样应该是程序问题。楼主自己检查一下

使用特权

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

本版积分规则

个人签名:承接采集设备运行参数,如温度、速度、压力、浓度、流量、节拍、湿度、重量等。采用PIC 51 AVR等类单片机 59467837(杭州单片机开发技术交流QQ群)

116

主题

530

帖子

2

粉丝