📄 lowtest1.inc
字号:
; File:LOWTEST1.ASM
; 功能:由KEY1键使系统进入空闲状态,由定时器0中断唤醒;
; 由KEY2键使系统进入掉电状态,由KEY3键盘中断唤醒。
; 说明:将跳线器J27短接到OCA端,J28短接到BEEP端。
; 将跳线器J4、J25、J26分别短接到KEY1、KEY3、KEY2端。
; 将跳线器J8、J9短接到HXTAL1、HXTAL2端。
$NOMOD51
$INCLUDE (REG932.INC)
KEY1 BIT P0.0
KEY2 BIT P0.1
KEY3 BIT P0.2
LEDCON BIT P2.6 ; 定义LED控制端口
BEEP BIT P2.7
; 6M高频晶振,510分频,即CCLK=6M/(255*2)=11764.7Hz,定时0.5S
TH0_DATA EQU 0F4H
TL0_DATA EQU 82H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0_INT ; 定时器0中断
ORG 003BH
PUSH 07H
JNB KEY3,$ ; 等待按键放开
MOV R7,#20H
DJNZ R7,$
JNB KEY3,$
MOV KBCON,#00H ; 清除键盘中断标志
POP 07H
RETI
ORG 0100H
MAIN: MOV P2M1,#0C0H ; 设置端口输出方式
MOV P2M2,#0C0H
MOV P0M1,#00H
MOV P0M2,#00H
SYS_INI: ORL AUXR1,#80H ; 置位CLKLP,以降低功耗
MOV DIVM,#255 ; 进行CPU时钟分频
MOV TMOD,#01H ; 设置定时器0及中断允许
MOV TH0,#TH0_DATA
MOV TL0,#TL0_DATA
SETB TR0
SETB ET0
SETB EA
MOV KBCON,#00H ; 设置键盘中断
MOV KBMASK,#04H ; 设置P0.2键盘中断有效
MOV IEN1,#02H ; 开放外键盘中断
MOV PCONA,#11101111B ; LPC932A1功能部件掉电
WAIT_KEY1: JB KEY1,WAIT_KEY2
JNB KEY1,$
ACALL RUNBEEP ; 蜂鸣器
MOV PCON,#00100001B ; CPU进行空闲模式
WAIT_KEY2: JB KEY2,WAIT_KEY1
JB KEY2,$
ACALL RUNBEEP
MOV PCON,#00100011B ; CPU完全掉电
SJMP WAIT_KEY1
; 名称:RUNBEEP
; 功能:蜂鸣器响一声
; 占用资源:R6,R7
RUNBEEP:
CLR BEEP
MOV R7,#5
RUNBEEP_L1: MOV R6,#200
DJNZ R6,$
DJNZ R7,RUNBEEP_L1
SETB BEEP
RET
; 定时器0中断服务
; 取反LEDCON,以控制LED闪动。
T0_INT:
MOV TH0,#TH0_DATA
MOV TL0,#TL0_DATA
CPL LEDCON
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -