找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3531|回复: 6
收起左侧

关于单片机中怎样使中断程序中的变量和主函数中的变量同步变化

[复制链接]
回帖奖励 50 黑币 回复本帖可获得 10 黑币奖励! 每人限 2 次
ID:390685 发表于 2019-9-10 20:41 | 显示全部楼层 |阅读模式
我原本是想在一个单片机定时器的中断服务处理程序中的if条件中使用一个变量m,当m是10的话就会执行这一个中断程序,if(m==10){ },m在主函数中的次数是在不断增加的。一开始显示中断程序中的m未定义,我放在了main()之前就没有问题了。但是不知道如果m的定义放在main()函数之前,m在主函数中次数增加的话,在中断程序中会不会也跟随着增加。。。。。。。
如果有大佬知道的话,请指点我一下。

回复

使用道具 举报

ID:351097 发表于 2019-9-10 21:33 | 显示全部楼层
如果中断服务程序和main()函数在同一个.C文件,就没问题
回复

使用道具 举报

ID:275826 发表于 2019-9-10 22:06 | 显示全部楼层
全局变量就没有问题,跟着变化
回复

使用道具 举报

ID:605769 发表于 2019-9-10 22:44 | 显示全部楼层
2种办法,1是你把你的程序贴出来看看,2是将m定义成一个绝对地址,并将该区域保留。希望对你有帮助。
回复

使用道具 举报

ID:235200 发表于 2019-9-10 23:17 | 显示全部楼层
定义在main函数之外的变量是全程变量,在中断函数中共用一个存储单元,会跟着变化.
回复

使用道具 举报

ID:123289 发表于 2019-9-11 21:55 | 显示全部楼层
将变量设置为全局变量。
回复

使用道具 举报

ID:610106 发表于 2019-9-12 09:52 | 显示全部楼层
是全局变量就会跟着变。但是由于main函数读取m不是原子操作,有必要的话,需要关中断保护一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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