标题: 单片机C语言函数定义变量过多会影响定时器延迟吗?求大佬告知 [打印本页]

作者: 雲暇    时间: 2020-4-5 15:05
标题: 单片机C语言函数定义变量过多会影响定时器延迟吗?求大佬告知
尝试蜂鸣器和数码管一起工作,可是单片机工作的时候出现了数码管和蜂鸣器延迟的情况。然后想找出原因,对代码进行几天的排查,是数码管disp函数的变量定义过多导致的,





随即改成了静态显示,蜂鸣器和数码管正常。





但始终有一点不明白:为何定义变量过多会导致这种情况?还是说是其他的情况?
求大佬告知

代码在LED.rar里,可以听到work0与work1蜂鸣器的频率不同的声音。

全部资料51hei下载地址:
LED.rar (41.05 KB, 下载次数: 4)

作者: ktoto2011    时间: 2020-4-5 19:42
变量定义过多不会影响延时的,影响延时是main里面while(1)不停循环运行的程序语句。因为里面每一条语句都要时刻循环,单片机执行的每一条语句都是需要时间的。例如你上面的
void work(){} ,和void work1(){}产生的差别主要是dish(h)数码管刷新需要的时间所导致的。当然除开这个数码管刷新时间,两个函数里面语句多的自然会需要单片机执行的时间长一些,12Mhz的主晶振,每条语句执行的只需要一个指令周期(1/12 us)几乎很短的时间。
作者: 雲暇    时间: 2020-4-5 23:37
ktoto2011 发表于 2020-4-5 19:42
变量定义过多不会影响延时的,影响延时是main里面while(1)不停循环运行的程序语句。因为里面每一条语句都要 ...

听君一言,犹如醍醐灌顶,十分感谢你




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