刚接触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
|