找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2245|回复: 2
收起左侧

单片机C语言函数定义变量过多会影响定时器延迟吗?求大佬告知

[复制链接]
ID:677928 发表于 2020-4-5 15:05 | 显示全部楼层 |阅读模式
尝试蜂鸣器和数码管一起工作,可是单片机工作的时候出现了数码管和蜂鸣器延迟的情况。然后想找出原因,对代码进行几天的排查,是数码管disp函数的变量定义过多导致的,

修改前

修改前


修改前

修改前



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

修改后

修改后


修改后

修改后



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

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

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

使用道具 举报

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

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:677928 发表于 2020-4-5 23:37 | 显示全部楼层
ktoto2011 发表于 2020-4-5 19:42
变量定义过多不会影响延时的,影响延时是main里面while(1)不停循环运行的程序语句。因为里面每一条语句都要 ...

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

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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