📄 ex10-4.asm
字号:
$INCLUDE (STC12C5A.INC) ;包含STC12C5A60S2单片机寄存器定义文件
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0_ISR
ORG 0013H
LJMP INT1_ISR
ORG 0100H
MAIN:
MOV SP,#70H
MOV R3, #0 ;P1 LED递增方式变化, 表示程序开始运行
MAIN_LOOP:
MOV A, R3
CPL A
MOV P1, A
LCALL DELAY
INC R3
MOV A, R3
SUBB A, #18H
JC MAIN_LOOP
MOV P1, #0FFH ;全部指示灯熄灭,表示进入掉电模式状态
CLR IT0 ;设置低电平激活外部中断
SETB EX0 ;允许外部中断0
CLR IT1 ;设置低电平激活外部中断
SETB EX1 ;允许外部中断1
SETB EA ;开中断, 若不开中断,则不能从掉电模式中唤醒
;下条语句将使CPU进入空闲状态或掉电状态
;低电平激活外部中断可以将CPU从掉电状态中唤醒,方法为:将外部中断脚拉低
MOV PCON, #00000010B ;令PD=1, 进入掉电状态
;如果要进入空闲状态, 则令IDL=1
MOV P1, #0DFH ;1101,1111B 请注意:
; 1.外部中断使MCU退出 Power Down 状态,执行本条指令后响应中断
; 表现为P1.5与P1.7 的LED 同时亮(INT0唤醒)
; 2.外部中断使MCU退出 idle 状态,先响应中断然后再执行本条指令,
; 表现为P1.7 的LED先亮(INT0唤醒),P1.5 的LED后亮
; 3.实际使用掉电模式时,本语句应用NOP代替
NOP ;实际使用掉电模式时,应在MOV PCON, #00000010B语句后多加几个NOP
NOP
NOP
SJMP $ ;循环, 停机
INT0_ISR: ;外部中断0服务程序
CLR P1.7 ;点亮 P1.7 LED 表示已响应INT0 中断
LCALL DELAY ;延时是为了便于观察, 实际应用不需延时
RETI
INT1_ISR: ;外部中断1服务程序
CLR P1.6 ;点亮 P1.6 LED 表示已响应INT1中断
ACALL DELAY ;延时是为了便于观察, 实际应用不需延时
RETI
DELAY:
CLR A
MOV R0, A
MOV R1, A
MOV R2, #02
DELAY_LOOP:
DJNZ R0, DELAY_LOOP
DJNZ R1, DELAY_LOOP
DJNZ R2, DELAY_LOOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -