[家电应用] SH69P21进入STOP模式后用端口中断唤醒总是溢出(在线仿真)

[复制链接]
2323|6
 楼主| 惠州市欢腾智能 发表于 2017-3-13 19:41 | 显示全部楼层 |阅读模式
刚接触SH69P21,在线仿真时 进入STOP模式后用PB.1做端口中断唤醒,每次按下按键都提示溢出,看门口狗没开,不懂什么问题,求各大神赐教!

LIST P=69P21
ROMSIZE=1024
;*****************************************************
;系统寄存器
;*****************************************************
IE        EQU        00H        ;中断允许标志寄存器
IRQ        EQU        01H        ;中断请求标志寄存器
TOM        EQU        02H        ;Timer0模式寄存器
T0L        EQU        04H        ;Timere0载入/计数器低位寄存器
T0H        EQU        05H        ;Timere0载入/计数器高位寄存器
PA        EQU        08H        ;PORTA数据寄存器
PB        EQU        09H        ;PORTB数据寄存器
PC        EQU        0AH        ;PORTC数据寄存器
TBR        EQU        0EH        ;查表寄存器
INX        EQU        0FH        ;索引寄存器
DPL        EQU        10H        ;索引地址低位寄存器(4位)
DPM        EQU        11H        ;索引地址中位寄存器(3位)
DPH        EQU        12H        ;索引地址高位寄存器(34位)
PBIEN        EQU        13H        ;PORTB中断允许标志寄存器
PBIF        EQU        14H        ;PORTB中断请求标志寄存器
PPBCR        EQU        15H        ;PORTB上拉控制寄存器
PACR        EQU        16H        ;PORTA输入/输出控制寄存器
PBCR        EQU        17H        ;PORTB输入/输出控制寄存器
PCCR        EQU        18H        ;PORTC输入/输出控制寄存器
PULLEN        EQU        19H        ;第3位: PORTA3-1和PORTC共用上拉控制寄存器
DIV        EQU        1AH        ;内建RC振荡器分频寄存器
T0        EQU        1CH        ;第0位: T0信号沿, 第1位: T0信号源,第2位: Timer0开启控制/状态标志寄存器
PPA0        EQU        1DH        ;第1-0位:PORTA.0中断沿选择寄存器,第3-2位:PORTA.0上/下拉控制寄存器
WDT        EQU        1EH        ;第2-0位: 看门狗定时器控制寄存器,第3位: 看门狗定时器溢出标志寄存器       

;*****************************************************
;用户寄存器(数据存储器)(20H--5FH)
;*****************************************************

;*****************************************************
;define
;*****************************************************

LED1_CHG        MACRO        ;PA.2 ~= PA.2
        EORIM        PA,04H
                ENDM               
               

PB0_INT_ON        MACRO
        ORIM        PBIEN,02H        ;打开PB.1中断
        ORIM        IE, 01H                ;打开PB中断
                ENDM
                                       
;END+++++++++++++++++++++++++++++++++

;*****************************************************
;程序
;*****************************************************
        ORG        0000H
        JMP        RESET
        RTNI
        RTNI
        RTNI
        JMP        PORTB_INT
       
;*****************************************************
;上电复位延时
;*****************************************************       
RESET:
        NOP

;*****************************************************
;清数据存储器空间(02H--5FH)
;*****************************************************
CLEARRAM:
        LDI        DPL,00H
        LDI        DPM,02H
        LDI        DPH,00H
CLRINX:
        LDI        INX,00H
        ADIM        DPL,01H
        BNC        CLRINX
        ADIM        DPM,01H
        ADI        DPM,0AH
        BNC        CLRINX
;*****************************************************
;寄存器初始化
;*****************************************************
SYSTEM_INITIAL:
        LDI        WDT,00H                ;清看门狗       
        LDI        IE, 00H                ;关闭所有中断
        LDI        IRQ,00H                ;清中断请求标志
        LDI        PBIEN,00H        ;关闭端口中断
        LDI        PBIF,00H        ;清端口中断标志
               
        ANDIM        PBCR,0DH        ;设置PB.1为输入(PBCR&0X0D)
        ORIM        PPBCR,02H        ;设置PB.1为上拉(PPBCR|0X02)
               
        ORIM         PACR,04H        ;设置PA.2为输出(PACR|0X04)       
;*****************************************************
;主程序
;*****************************************************       
MAIN_PROGRAM:
        PB0_INT_ON ;打开PB.0中断
        NOP
        STOP       
        JMP        MAIN_PROGRAM
       
;*****************************************************
;端口中断服务程序
;*****************************************************
PORTB_INT:
        LED1_CHG
        LDI        PBIF,00H
        LDI        IRQ,00H        ;清端口中断请求标志
        RTNI
       
        END
桃花落满山前 发表于 2025-10-30 17:00 | 显示全部楼层
SH69P21 STOP 模式下端口中断唤醒溢出,可能因:1. 中断触发方式设置不当(如边沿 / 电平未匹配);2. 唤醒后未及时清除中断标志位,导致重复触发;3. 仿真环境下 STOP 模式时序有偏差,建议实际硬件测试;4. 中断服务程序未正确处理,检查是否有死循环或栈溢出。先清标志位再优化中断服务程序。
野玫瑰 发表于 2025-11-3 14:09 | 显示全部楼层
SH69P21 进入 STOP 模式后,端口中断唤醒溢出,可能是中断配置疏漏:1. 未正确使能对应端口中断,或中断触发方式(边沿 / 电平)设置错误;2. 唤醒后未及时清除中断标志,导致重复触发;3. STOP 模式下时钟配置异常,中断响应时序错乱。需检查中断寄存器配置,确保唤醒后标志位清零,同步时钟参数。
水星限定 发表于 2025-11-12 16:15 | 显示全部楼层
SH69P21 STOP 模式下端口中断唤醒溢出,可能是中断标志未清除。进入 STOP 前需确保端口中断标志位已清零,否则唤醒后立即触发中断导致溢出。另外,检查中断使能配置是否正确,仿真时需确认 STOP 模式下中断唤醒流程,避免未处理标志位残留引发异常。
抱素 发表于 2025-11-13 16:11 | 显示全部楼层
SH69P21 进入 STOP 模式后端口中断唤醒溢出,可能是中断配置问题:中断使能位未正确设置,或中断触发方式(电平 / 边沿)选错。也可能唤醒后时钟未稳定,需加延时再操作。在线仿真时,调试器可能干扰低功耗模式,建议脱离仿真实际运行测试,检查中断服务程序是否有异常。
抱素 发表于 2025-11-14 19:12 | 显示全部楼层
SH69P21 STOP 模式下端口中断唤醒溢出,可能是中断配置时序问题:进入 STOP 前需确保中断标志位已清零,避免残留标志触发误中断;检查中断使能寄存器是否正确开启对应端口中断;仿真时可能因调试器干扰,建议脱机测试;另外确认唤醒端口电平变化是否符合边沿触发要求,调整触发方式试试。
樱花树维纳斯 发表于 2025-11-17 15:56 | 显示全部楼层
SH69P21 进入 STOP 模式后端口中断唤醒溢出,可能是中断向量配置错误,需确认中断服务程序入口地址正确;或中断标志未及时清除,唤醒后需先清标志;也可能是 STOP 模式下时钟配置不当,导致中断响应时序异常,可检查唤醒后时钟恢复逻辑,在线仿真时注意断点设置是否干扰中断响应。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部