学鸣 发表于 2023-10-6 21:09:21

本主题需向作者支付 30 鱼币 才能浏览 购买主题

isdkz 发表于 2023-10-6 21:09:37

这两段代码的主要区别在于定时器中断函数的命名不同,第一个代码中定时器中断函数的命名为Timer_0(),而第二个代码中定时器中断函数的命名为tm0_isr()。在STC15系列单片机中,定时器0中断的中断号为1,如果定时器中断函数的命名不正确,就无法被正确地识别为定时器0中断函数,从而导致定时器无法正常工作。因此,建议将第一个代码中的定时器中断函数的命名改为tm0_isr(),就可以使定时器正常工作了。

陶远航 发表于 2023-10-6 21:10:02

这两段代码确实非常相似,但有一个关键区别可能导致运行速度不同。在第一个代码段中,count变量的类型是uchar,而在第二个代码段中,count变量的类型是uint。

uchar count=0;//计时




uint count=0;//时钟


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

要解决这个问题,您可以将第一个代码段中的count变量类型更改为uint,以便它与第二个代码段保持一致。这将使两个代码段的运行速度相同。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: STC15系列,代码几乎相同,但运行时显示速度不同