📄 emc单片机学习笔记(4)中断.txt
字号:
EMC的中断有软中断和硬中断,这里讨论的是硬中断,向量
在0x0001的软中断以后另文讨论。
EMC78P153有三个中断源,TCC溢出中断,输入引脚的变化
(Port6从休眠模式唤醒),外部中断。三个中断源只有一个中
断向量,那就是0x0008,也就是所有的三个中断发生后,程序都
会自动的来到这里。这就需要在中断服务程序里面做switch确认
中断标志,即判断中断源,进行散转来处理相关的中断。同时要
清除对应的标志位,避免中断的重复进入。
相关的寄存器有 中断控制寄存器、中断标志寄存器。总中断
开启指令ENI和关闭指令DISI控制总的中断开关操作。
主程序,做好初始化,就可以打开中断了。
中断服务程序的结构:
1、要先关中断的总开关
2、保护现场(比如A、STATUS等寄存器)
3、然后根据中断标志寄存器,清除相应的Bit并处理相应的中断
4、恢复现场(比如A、STATUS等寄存器)
5、最后退出中断并打开中断的总开关(RETI包括ENI的功能)。
ORG 0x0008 ;Interrupt Service Routine
DISI ;关中断
MOV A123,A
MOV A,STATUS
MOV STATUS123,A
JBC RF, TCIF
JMP SUB_TCC
JBC RF, ICIF
JMP SUB_P6
JBC RF, EXIF
JMP SUB_EXT
ISREND:
MOV A,STATUS123
MOV STATUS,A
MOV A,A123
RETI
SUB_TCC:
BC RF, TCIF 清中断标志
;Do something For TCC interrupt
JMP ISREND
SUB_P6:
BC RF, ICIF
;Do something For Port6 change
JMP ISREND
SUB_EXT:
BC RF, TCIF
;Do something For External Interrupt
JMP ISREND
EMC的中断跟PIC类似,所有的中断使用同一个中断服务程序,
需要编程者自己去做判断和散转。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -