搜索
bottom↓
回复: 11

突然有一个疑问

[复制链接]

出0入0汤圆

发表于 2013-10-21 10:26:57 | 显示全部楼层 |阅读模式
8位单片机定义一个32位的数据,如果在主程序里读取这个32位数据的时候出现了中断,而中断里又将这个数据的值改变了,那么返回后会不会造成这个数据的字节读取错误。
举个例子:比如一个32位的数据 0x11223344,主程序中读取了0x1122的时候中断来了,中断将数据改变成0xAABBCCDD了,那么主程序返回后会不会读取成0x1122CCDD?
1,4字节的变量,没有完全读取的时候会不会进入中断?
2,如果会进入中断,那么会不会造成上面说的情况?
3,如果不会进入中断,请问单片机是怎么防止这种情况的?
谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-10-21 10:29:26 | 显示全部楼层
关键是读哪地方的数据

出0入0汤圆

 楼主| 发表于 2013-10-21 10:34:24 | 显示全部楼层
内存中的,或者寄存器中的,或者其他的地方

出0入0汤圆

发表于 2013-10-21 10:38:44 | 显示全部楼层
楼主的题目最好改一改,改成别人一看题目就知道你要问什么 ...... 发这种跟内容不相干的题目小心被封ID!

出0入0汤圆

发表于 2013-10-21 10:38:49 | 显示全部楼层
是你说的第二种情况,可以在读写变量的时候禁止中断。

出0入0汤圆

发表于 2013-10-22 13:44:07 | 显示全部楼层
1.要看单片机的指令能处理几位,单片机在执行一条指令的过程中是不会被打断的.
2.会
3.为了防止这种情况,可以如5楼一样,操作前关中断(CLI),操作后开中断(SEI).

出0入0汤圆

发表于 2013-10-22 13:52:33 | 显示全部楼层
用C开发单片机的肯定有这样的疑问。用汇编的不会。。

出0入4汤圆

发表于 2013-10-22 13:55:34 | 显示全部楼层
1.因为是8位单片机,读取4字节数据,肯定是多条指令读取.所以读取一半的时候,是可以进入中断的.

2.会,而且即使是一个1个字节变量,当读取后还没有来得及运算,进入中断后这个值改变,再回来计算时,也是得出错误的结果的.

3.  方法1,让这个变量的值在中断时不会改变,即中断中不改变这个变量 .
     方法2,在读取的时候禁止中断.

出0入0汤圆

发表于 2013-10-22 14:08:32 | 显示全部楼层
楼上说的全面
顶下

出0入0汤圆

发表于 2013-10-22 14:13:18 | 显示全部楼层
本帖最后由 MarkTylor 于 2013-10-22 14:29 编辑

俺刚看了点汇编的基础,不知道这么理解对不对:
单片机CPU在执行中断程序前有个“中断过程”的概念,在这部分cpu有保存当前运行现场的机制(其中包括
标志寄存器入栈和CS IP入栈等等),最后中断返回时要用这些恢复,而中断处理程序的结构一般有下面部分组成:
(1)保存用到的寄存器
(2)处理中断(ps,个人理解:这部分应该是开发者用C语言或其他语言写的真正处理代码)
(3)恢复用到的寄存器
(4)用iret指令返回
楼主的疑惑,可以用过程(1)和(3)解决。楼主如果在(2)中将某值改变了,在过程(3)中还要用(1)中保存的数据恢复,即相当于没有改变。

这么理解不知道对不对,期待高手指点。



这么理解貌似不对。因为实际上有很多被中断更改数据的情况。
上面这样的中断是标准的中断,一般用户自己的中断貌似没有涉及到保存用到的寄存器吧。

关注。。。

出0入0汤圆

发表于 2013-10-30 15:00:15 | 显示全部楼层
是要注意发帖规范。加油!!!
头像被屏蔽

出0入0汤圆

发表于 2013-10-30 16:03:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 16:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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