| 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 这条指令什么时候执行
 |