- UID
- 127677
- 性别
- 男
|
我正在修改清华的HC08的监牢程序,其它SWI中断处理程序一段搞不定呀:
原程序为:
BRK_SWI_INT:
SEI ;关中断
LDA #$0 ;禁止断点中断,清除断点中断标志
STA BRKSCR
PSHH
LDHX #DIS_INFO
TXA
STA 6,SP ;断点地址换为DIS_INFO
PSHH
PULA
STA 5,SP ;断点地址换为DIS_INFO
PULH
RTI ;退出中断,执行显示内容子程序想当于JMP指令
DIS_INFO: ;显示内容子程序,无返回
PSHA
LDA #$A8 ;发送引导符A8
JSR SEND_BYTE ;发送一字节
LDA U_RESET_H ;重新从头运行用户程序
PSHA
PULH
LDA U_RESET_L
TAX
LDA #$80 ;断点允许,等待激活
STA BRKSCR ;断点控制寄存器
CLI
JMP ,X ;执行用户程序
RTS ;此句实际执行不到
SEND_BYTE:
BRCLR 7,SCS1,*
STA SCDR
RTS
他是改变堆栈中PC对应值在RTI指令后跳到DIS_INFO:执行,我想改成:
BRK_SWI_INT:
SEI ;关中断
LDA #$0 ;禁止断点中断,清除断点中断标志
STA BRKSCR
PSHH
//把与串口的通信放到SWI服务程序中做了,可就是无法与串口通信,一点反应也没有
LDA #$A8 ;发送引导符A8
JSR SEND_BYTE ;发送一字节
//去除函数调用改成这样也不行,PC端就是收不到A8,好像没有发一样,难道SWI中断服务程序中有什么限制?当时清华的为什么不搞到SWI中断服务程序中去处理呢?
LDA #$A8 ;发送引导符A8
BRCLR 7,SCS1,*
STA SCDR
PULH
RTI ;退出中断,执行显示内容子程序想当于JMP指令
|
|