找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1792|回复: 1
收起左侧

51单片机中断函数调用子函数,子函数的局部变量无法控制

[复制链接]
ID:886945 发表于 2021-2-27 22:54 | 显示全部楼层 |阅读模式
如果将显示函数放在主函数的while里,里边的5个变量全是局部变量,但是其功能也正常使用。
但当我将显示函数放在中断里进行扫描时,发现显示函数里边的5个局部变量只有第一个调用的变量是正常的,其他几个局部变量一直保持0x00无法操作,功能不正常。
然后我试着将局部变量都定义程序全局变量或者静态变量,功能又正常了...最后又按上图中的样子,将digit定义单独定义成静态,其他保持局部变量,功能也是正常的.....其他几个uchar的变量没有飞...
然后当我直接用行参来进行算数操作时,功能也是不对的..只有把行参放到静态变量里,再计算才正确.
还有我软件调试的时候发现,digit的值和实参是一致的,但是行参的值一直在乱跳,是调用并结束函数之后释放了吗
求各位大佬解惑....为啥用定时器调用这显示函数就必须将其内部变量设置为静态或者全局,而在主函数的while中就没遇到过这种问题.为什么不能直接调用行参,而需要先赋值...
1.png 51hei.png
回复

使用道具 举报

ID:886945 发表于 2021-2-27 23:00 | 显示全部楼层
51hei.png
大概找打答案了?.233....我把定时中断的工作寄存器组改回去默认就正常了

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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