打印
[技术问答]

在KEIL C51中1秒定时,下载到新唐MS51芯片中,变小了7倍

[复制链接]
1091|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
btzm|  楼主 | 2023-11-4 15:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 btzm 于 2023-11-5 00:44 编辑




用Keil C51编写一段通过循环产生定时程序,时钟16MHz。    用Keil C51调试成刚好1秒,但下载到新唐MS51FB9A中运行,定时小了7倍,成为141毫秒。而同一程序下载到89S52中,时间为1秒正常;用proteus仿真也是1秒正常。用新唐给的定时器延时1秒程序,下载到新唐MS51FB9A也是正常。所有都是16MHz时钟,MS51输出时钟引脚测得为正常的16MHz。新唐芯片比普通51定时减小了这么多,不知道什么原因。我是新唐芯片初学者,恳请有经验的网友帮忙解释原因,先谢过了。

IMG_20231104_081802.jpg (305.03 KB )

IMG_20231104_081802.jpg

IMG_20231104_081017.jpg (379.91 KB )

IMG_20231104_081017.jpg

IMG_20231104_081522.jpg (343.12 KB )

IMG_20231104_081522.jpg

使用特权

评论回复
沙发
elephant00| | 2023-11-7 10:26 | 只看该作者
可能是编译器和编译设置问题,你可以尝试禁用编译器优化,或者尝试在不同的编译器中编译代码,看看结果是否一致。另外,确保你的编译设置正确,例如时钟频率和编译目标器件等。

使用特权

评论回复
板凳
两只袜子| | 2023-11-7 10:26 | 只看该作者
你的开发环境和目标环境可能存在差异。例如,开发环境中的仿真器可能会比目标硬件运行得快,这可能会导致定时器的计时出现问题。你应该确保你的开发环境和目标环境一致,或者尝试在不同的环境中运行程序,看看结果是否一致。

使用特权

评论回复
地板
jcky001| | 2023-11-7 10:27 | 只看该作者
新唐芯片的定时器可能与传统的8051芯片的定时器不同。你需要仔细检查新唐芯片的定时器设置,确保你正确地配置了定时器参数。你可以参考新唐芯片的官方文档或者示例代码来了解如何正确地设置定时器。

使用特权

评论回复
5
cr315| | 2023-11-7 10:27 | 只看该作者
如果你的程序中使用了中断处理,那么中断的处理方式可能会影响定时器的计时。你需要检查中断处理程序的代码,确保它不会干扰定时器的正常计时。

使用特权

评论回复
6
cr315| | 2023-11-7 10:28 | 只看该作者
可能还有一些外部因素可能会导致定时器的计时出现问题。例如,电源稳定性、外部干扰等。

使用特权

评论回复
7
jasontu| | 2023-11-7 16:32 | 只看该作者
ms51 内振24Mhz ,及指令集是1t,建议写组语,或用timer作计时

使用特权

评论回复
8
btzm|  楼主 | 2023-11-10 15:55 | 只看该作者
感谢各位的帮助,我将按大家的提示继续查找问题所在。

使用特权

评论回复
9
btzm|  楼主 | 2023-11-13 05:28 | 只看该作者
问题解决!
才注意到新唐MS51是1T  8051。
因为新唐MS51是1T单片机,而经典8051为12T单片机。所以执行速度两者差很多,因此软件延时不能通用。

使用特权

评论回复
10
btzm|  楼主 | 2023-11-13 05:35 | 只看该作者
问题找到。

新唐MS51单片机是1T单片机,而经典8051是12T单片机,所以两者执行速度差很多,因此软件延时程序不能直接引用。

使用特权

评论回复
11
btzm|  楼主 | 2023-11-13 05:38 | 只看该作者
问题解决,是新唐MS51为1T 8051所致。

使用特权

评论回复
12
lix1yr| | 2023-12-17 22:42 | 只看该作者
那说明你的时钟还是没配置对呗

使用特权

评论回复
13
cen9ce| | 2023-12-17 23:23 | 只看该作者
可能是你的MS51的晶振不对劲?

使用特权

评论回复
14
b5z1giu| | 2023-12-18 08:10 | 只看该作者
你看看晶振起来了没?

使用特权

评论回复
15
d1ng2x| | 2023-12-18 09:33 | 只看该作者
看看你的时钟配置部分,也是能改的吧,改成与原来一致

使用特权

评论回复
16
g0d5xs| | 2023-12-18 10:13 | 只看该作者
你的demo是按照多少主频配置的delay啊?

使用特权

评论回复
17
l1uyn9b| | 2023-12-18 11:22 | 只看该作者
小七倍的话,一般就是时钟和程序里的时钟配置不一样导致的了

使用特权

评论回复
18
lamanius| | 2023-12-18 12:33 | 只看该作者
比如说,你要是板载12M的晶振,你要程序里也要配置12M晶振的函数才行

使用特权

评论回复
19
t1ngus4| | 2023-12-18 14:15 | 只看该作者
你用keil调试,keil那个不是有主频设置么,频率设置的对不对?

使用特权

评论回复
20
tax2r6c| | 2023-12-18 17:17 | 只看该作者
仿真和实际硬件调试不一样也是正常的

使用特权

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

本版积分规则

13

主题

38

帖子

0

粉丝