PM+ 中断中如何快速开全局中断?
例如如下程序/* Uart接收出错中断 */
__interrupt void IntUartRxErr(void)
{
EI();
Encrypt.RxCnt = RXD1; /* 假读 */
Encrypt.RxCnt = 0xff; /* 命令出错 */
}
编译后汇编指令如下:
_IntUartRxErr C1 PUSHAX
717AFA EI
8E46 MOV A,RXD1
9F3FFC MOV !0FC3FH,A
CF3FFCFF MOV !0FC3FH,#0FFH
C0 POP AX
61FC RETI
这段代码是进入中断服务程序后的第二条指令才开中断.
如何在进入中断服务程序后的第一条指令就开中断? EI()指令可以写在主程序中呀 我想你在中断里再打开中断的目的应该就是想中断嵌套,试想一下,如果你的现场还没保存完就被新的中断打断了,它还能返回吗? 中断现场的保护是隐含进行的,无需c代码干预 回复【3楼】yf_888 海上翼
---------------------------------------------------------------------
如果什么都是隐含执行的话,中断程序开始的那些PUSH还有什么意义?
你如果写过汇编语言的话,肯定写过PUSH阿。 NEC,那一个慢哦,做通信,头痛,要想快速开中断,可以这样,你的C不是写好了嘛,PM+可以生成汇编的,然后用汇编的来编译,不过你得修改一下,顺便也把你想要做的也做了。 中断现场的保护是隐含进行的,无需c代码干预 在此我忽然又想到了在学校时老师说的一句话:如果你开始使用汇编,对你以后使用C语言会有很大帮助,对你真正理解底层也会有很大帮助。对于一个只使用过C语言的人来讲,很多问题是理解不了的。 二楼正解
页:
[1]