ORG 0000H 
JMP RESET 
RTNI 
RTNI 
RTNI 
JMP PORT_ISP ORT 中断服务程序入口地址 
;******************************************* 
; 子程序: PORT 中断服务程序 
;******************************************* 
PORT_ISP: 
STA AC_BAK,00H ;备份AC 值 
LDI IRQ,00H ;清中断请求标志 
PORT_ISP_END: 
LDA AC_BAK,00H ;取出AC 值 
RTNI ;返回 
;******************************************* 
; 上电程序 
;******************************************* 
RESET: 
NOP 
;-------------------------------------- 
; 清用户寄存器 
POWER_RESET: 
LDI DPL,00H 
LDI DPM,02H 
LDI DPH,00H ;从$20 开始 
POWER_RESET_1: 
LDI INX,00H 
ADIM DPL,01H 
LDI TMP,00H 
ADCM DPM,00H 
BA3 POWER_RESET_2 
JMP POWER_RESET_3 
POWER_RESET_2: 
ADIM DPH,01H 
POWER_RESET_3: 
SBI DPH,02H ;到$16F 结束 
BNZ POWER_RESET_1 
SBI DPM,07H 
BNZ POWER_RESET_1 
;-------------------------------------- 
; 初始化系统寄存器 
SYSTEM_INITIAL: 
;初始化I/O 口 
78 
LDI PORTB,00H 
LDI PBCR,00H ;设置PORTB 口作为输入口 
LDI PORTD,00H 
LDI PDCR,0FH ;设置PORTD 口作为输出口, 输出低电平 
;************************************************ 
; 主程序 
MAIN: 
;************************************** 
; 模块: PORT 中断设置 
;************************************** 
PORT_INT_SET: 
LDI SETTING,1100B ;端口上拉电阻使能, PORT 中断设置为下降沿中断 
LDI PORTB,0FH ;打开PORTB 口上拉电阻 
LDI PORTC,0FH ;打开PORTC 口上拉电阻 
NOP ;等待稳定 
NOP 
NOP 
LDI IRQ,00H ;清中断请求标志 
LDI IE,0001B ;打开PORT 中断 
HALT ;进入HALT 模式 
NOP ;单片机从HALT 模式被PORT 中断唤醒 
NOP 
;************************************** 
; 检测按键状态 
KEY_CK: 
LDA PORTB,00H ;读PORTB 口状态 
STA TMP,00H ;暂存于临时寄存器 
SBI TMP,0FH 
BAZ PORT_INT_SET ;全为高电平, 则为干扰, 回到HALT 模式 
CALL DELAY ;调用延时子程序延时40ms 以去抖动 
LDA PORTB,00H ;再读PORTB 口 
SUB TMP,00H ;比较前后两次电平状态 
BNZ PORT_INT_SET ;不相等则为按键抖动, 回到HALT 模式 
;确认有按键按下 
EORIM TMP,0FH ;将读到的值取反, 得到正逻辑的键值 
STA KEY_ST,00H ;把键值送给按键状态寄存器 
KEY_CK_END: 
;--------------------------------- 
; 显示按键状态 
DISP: 
LDA KEY_ST,00H 
STA PORTD,00H ;将按键状态送到PORTD 口, 通过LED 进行显示 
DISP_END: 
;************************************** 
JMP MAIN ;返回主程序 
;************************************** 
; 子程序: 延时大约40ms 
;************************************** 
DELAY: 
LDI CT1,09H 
LDI CT0,0EH 
SBIM CT0,01H 
BC $-1 
SBIM CT1,01H 
BC $-4 
RTNI 
79 
;************************************************ 
END 
上面那个程序中JMP PORT_ISP 这条指令什么时候执行 |