搜索
bottom↓
回复: 8

PM+ 中断中如何快速开全局中断?

[复制链接]

出0入0汤圆

发表于 2010-7-11 15:11:31 | 显示全部楼层 |阅读模式
例如如下程序
/* Uart接收出错中断 */
__interrupt void IntUartRxErr(void)
{
  EI();
  Encrypt.RxCnt = RXD1;                                   /* 假读 */
  Encrypt.RxCnt = 0xff;                                   /* 命令出错 */
}
编译后汇编指令如下:
_IntUartRxErr   C1         PUSH  AX
                717AFA     EI
                8E46       MOV   A,RXD1
                9F3FFC     MOV   !0FC3FH,A
                CF3FFCFF   MOV   !0FC3FH,#0FFH
                C0         POP   AX
                61FC       RETI
这段代码是进入中断服务程序后的第二条指令才开中断.
如何在进入中断服务程序后的第一条指令就开中断?

出0入0汤圆

发表于 2010-7-25 15:39:10 | 显示全部楼层
EI()指令可以写在主程序中呀

出0入0汤圆

发表于 2010-7-27 17:39:53 | 显示全部楼层
我想你在中断里再打开中断的目的应该就是想中断嵌套,试想一下,如果你的现场还没保存完就被新的中断打断了,它还能返回吗?

出0入0汤圆

发表于 2010-9-16 21:27:33 | 显示全部楼层
中断现场的保护是隐含进行的,无需c代码干预

出0入0汤圆

发表于 2010-9-17 16:17:50 | 显示全部楼层
回复【3楼】yf_888 海上翼
---------------------------------------------------------------------

如果什么都是隐含执行的话,中断程序开始的那些PUSH还有什么意义?
你如果写过汇编语言的话,肯定写过PUSH阿。

出0入0汤圆

发表于 2010-9-17 17:00:50 | 显示全部楼层
NEC,那一个慢哦,做通信,头痛,要想快速开中断,可以这样,你的C不是写好了嘛,PM+可以生成汇编的,然后用汇编的来编译,不过你得修改一下,顺便也把你想要做的也做了。

出0入0汤圆

发表于 2010-9-20 17:35:05 | 显示全部楼层
中断现场的保护是隐含进行的,无需c代码干预

出0入0汤圆

发表于 2010-9-21 10:47:30 | 显示全部楼层
在此我忽然又想到了在学校时老师说的一句话:如果你开始使用汇编,对你以后使用C语言会有很大帮助,对你真正理解底层也会有很大帮助。对于一个只使用过C语言的人来讲,很多问题是理解不了的。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-29 06:34

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

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