如何在68HC11 THRSim11模拟器中模拟RTI(实时中断)
在THRSim11中模拟68H711E9的RTI中断并调试ADC读取程序
一、修正RTI中断向量配置
68H711E9的硬件RTI中断向量固定为**$FFF0-$FFF1**,$00EB是Buffalo监控程序的临时跳转向量,模拟器无需依赖这个。直接将RTI中断服务程序(ISR)的入口地址写入硬件向量地址:
ORG $FFF0 FDB RTI_ISR ; 将RTI服务程序入口地址写入向量
二、开启THRSim11的RTI触发功能
模拟器默认不会自动启用RTI,需手动配置外设:
- 点击顶部菜单Peripherals > Timer,打开定时器配置窗口
- 勾选RTI Enable选项,同时设置与硬件一致的分频系数(需匹配程序中RTICTL的配置值)
- 确认CRG时钟设置与硬件同步,RTI触发依赖CRG模块的时钟源
三、程序中正确配置RTI使能寄存器
必须通过代码开启RTI中断,确保与硬件配置完全一致:
; RTI初始化子程序 INIT_RTI: LDAA #$30 ; 设置RTI分频系数(示例为1024分频,根据硬件实际值调整) STAA $103B ; 写入RTICTL寄存器($103B) LDAA $103D ; 读取CRGFLG寄存器($103D) ORAA #$80 ; 置位RTIF位,清除挂起的中断标志 STAA $103D LDAA #$80 ; 置位RTIEN位,使能RTI中断 STAA $103E ; 写入CRGINT寄存器($103E) CLI ; 开启全局中断(总开关) RTS
四、适配模拟器的ADC配置
硬件ADC在模拟器中需手动启用:
- 点击Peripherals > ADC,打开ADC配置窗口
- 启用程序中使用的ADC通道,可手动设置输入模拟值或选择自动生成测试数据
- 确保ADCTL寄存器的配置与硬件一致,比如单通道单次转换模式:
; ADC初始化 INIT_ADC: LDAA #$00 ; 配置ADC为单通道单次转换(通道0) STAA $1030 ; 写入ADCTL寄存器($1030) RTS
五、调试排查步骤
- 在RTI_ISR的第一条指令处设置断点,验证中断是否触发
- 打开模拟器的Interrupt Log窗口,查看RTI中断的触发记录
- 实时监控CRGFLG、CRGINT、RTICTL寄存器的值,确认配置生效
- 检查串口输出配置,模拟器需开启Serial Port外设并设置正确的波特率
内容的提问来源于stack exchange,提问作者Jtl
相关产品推荐
相关产品推荐

