首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

紧急求助,搞不定SWI呀,急

紧急求助,搞不定SWI呀,急

我正在修改清华的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指令
晕,输入错了,对不起,应该是:我正在修改清华的HC08的监控程序,其中SWI中断处理程序一段搞不定呀:
完整程序请参见,我也是用于GP32的:http://www.mcublog.com/blog/user1/1294/archives/2005/1356.html
那位大哥能帮忙看看呀?
不清楚你的问题到底是什么。SCI端口有没有信号?SCI发送指令是否执行?
海纳百川  有容乃大
SCI通信正常,但把SCI通信部分放到SWI中断服务程序中执行就没有反应了
有没有调试过,程序是怎么跑的?是在哪里死循环还是跑飞了?
海纳百川  有容乃大
返回列表