编辑: 颜大大i2 | 2014-10-09 |
11 Version1.0 2.1.2 中断向量(0008H) 中断向量地址为 0008H.一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0008H 开始执行 中断服务程序.用户必须定义中断向量,下面的示例程序说明了如何编写中断服务程序. ? 注: PUSH , POP 指令用于存储和恢复 ACC/PFLAG,NT
0、NTD 不受影响.PUSH/POP 缓存器是唯一的,且仅有一层. ? 例:定义中断向量,中断服务程序紧随 ORG 8H 之后. .CODE ORG
0 JMP START ;
跳至用户程序. … ORG 8H ;
中断向量. PUSH ;
保存 ACC 和PFLAG. … POP ;
恢复 ACC 和PFLAG. RETI ;
中断结束. … START: ;
用户程序开始. … ;
JMP START ;
用户程序结束. … ENDP ;
程序结束. ? 例:定义中断向量,中断程序在用户程序之后. .CODE ORG
0 JMP START ;
跳至用户程序. … ORG 8H ;
中断向量. JMP MY_IRQ ;
跳至中断程序. ORG 10H START: ;
用户程序开始. … JMP START ;
用户程序结束. … MY_IRQ: ;
中断程序开始. PUSH ;
保存 ACC 和PFLAG. … POP ;
恢复 ACC 和PFLAG. RETI ;
中断程序结束. … ENDP ;
程序结束. ? 注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点:
1、地址 0000H 的 JMP 指令使程序从头开始执行;
2、地址 0008H 是中断向量;
3、用户的程序应该是一个循环. SN8P2511 8-Bit Micro-Controller SONiX TECHNOLOGY CO., LTD Page
12 Version1.0 2.1.3 查表 在SONiX 单片机中,对ROM 区中的数据进行查找,寄存器 Y........