鱼C论坛

 找回密码
 立即注册
查看: 318|回复: 2

[已解决]STC15系列,代码几乎相同,但运行时显示速度不同

[复制链接]
发表于 2023-10-6 21:09:21 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 30 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-6 21:09:37 | 显示全部楼层
这两段代码的主要区别在于定时器中断函数的命名不同,第一个代码中定时器中断函数的命名为Timer_0(),而第二个代码中定时器中断函数的命名为tm0_isr()。在STC15系列单片机中,定时器0中断的中断号为1,如果定时器中断函数的命名不正确,就无法被正确地识别为定时器0中断函数,从而导致定时器无法正常工作。因此,建议将第一个代码中的定时器中断函数的命名改为tm0_isr(),就可以使定时器正常工作了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-6 21:10:02 | 显示全部楼层    本楼为最佳答案   
这两段代码确实非常相似,但有一个关键区别可能导致运行速度不同。在第一个代码段中,count变量的类型是uchar,而在第二个代码段中,count变量的类型是uint

  1. uchar count=0;//计时
复制代码




  1. uint count=0;//时钟
复制代码


uchar(无符号字符)类型的变量范围是0到255,而uint(无符号整数)类型的变量范围是0到65535。在第一个代码段中,count变量的类型是uchar,当它达到255时,它会溢出并回到0。这意味着第一个代码段的计时器实际上每256毫秒就会触发一次,而不是每1000毫秒。这就是为什么第一个代码段的运行速度比第二个代码段快的原因。

要解决这个问题,您可以将第一个代码段中的count变量类型更改为uint,以便它与第二个代码段保持一致。这将使两个代码段的运行速度相同。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 13:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表