📄 000.asm
字号:
;倒计时器程序:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP NT0 ;外中断0
ORG 000BH
AJMP TCT0 ;定时器0
ORG 0030H
;**************************************************
MAIN: MOV SP,#60H
CLR 00H ;工作状态标志位,0为设置,1为工作
CLR 20H ;指示灯状态标志位,0为LED不亮,1为亮
CLR 21H ;控制信号标志位,0为P3.6底,1为P3.6高
MOV 22H,#00H ;100ms计数器清0
MOV 23H,#00H ;秒计数器清0
MOV 25H,#10 ;分计数器预置100min
MOV TH0,#3CH ;100ms预置初值
MOV TL0,#0B0H
SETB EA
SETB ET0 ;T0中断允许
SETB EX0 ;外中断0允许
SETB IT0 ;T0优先中断
CLR TR0
MOV 34H,#2 ;显示缓冲器置数(十位)
MOV 35H,#4;显示缓冲器置数(个位)
L: ACALL LED ;调指示灯状态控制
JNB 00H,L ;查询工作状态指示
ACALL BINBCD
ACALL DIS ;显示倒计时器中的值
JB 02H,OUT ;查询控制输出位,1为P3.6高
AJMP L
;*****************************************************
OUT: CLR EX0
CLR TR0
SETB P3.6
JNB P3.4,OUT1 ;按P3.4清除输出
AJMP OUT
OUT1: JNB P3.4,$ ;消抖
CLR P3.6
CLR 02H
SETB EX0
CLR 00H ;设置状态
AJMP L
;*****************************************************
;状态灯指示:
LED: JB 01H,LED0
CLR P3.5
RET
LED0: SETB P3.5
RET
;*****************************************************
;二进制转换为十进制:
;入口:24H单元内容
;出口:30H单元BCD码十位数
; 31H单元BCD码个位数
BINBCD: MOV A,24H
MOV B,#10
DIV AB
MOV 30H,A
MOV 31H,B
RET
;*****************************************************
;显示倒计时器:
;入口:30H单元BCD码十位数
; 31H单元BCD码个位数
DIS: MOV R0,#30H
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A ;显示十位
CLR P2.6
ACALL DELAY10
INC R0
SETB P2.6
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A ;显示个位
CLR P2.7
ACALL DELAY10
SETB P2.7
RET
;***************************************************
;外部中断0:
NT0: CLR EX0 ;关中断
PUSH ACC
PUSH PSW
CLR P3.5 ;工作状态LED灭
ACALL DIS1 ;调设定值显示
KEY: JB P3.2,RETURN
KEY0: ACALL DIS1
JNB P3.2,KEY0 ;等待键放
KEY2: JB P3.3,KEY3 ;判K2按下?未按转判K3
ACALL DIS1
INC 34H ;K2按下,十位加1
MOV A,34H
CJNE A,#0AH,KEY22
MOV 34H,#00H
KEY22: ACALL DIS1
JNB P3.3,KEY22
AJMP KEY2
KEY3: ACALL DIS1
JB P3.4,KEY1 ;判K3按下?未按,转判K1
INC 35H ;K3按下,个位加1
MOV A,35H
CJNE A,#0AH,KEY33
MOV 35H,#00H
KEY33: ACALL DIS1
JNB P3.4,KEY33
AJMP KEY3
KEY1: ACALL DIS1
JB P3.2,KEY2 ;K1未按,转判K2、K3
KEY10: ACALL DIS1 ;等待键放
JNB P3.2,KEY10;K1未按,进入工作状态
ACALL BCDBIN ;调十进制转换为二进制
SETB 00H ;置位进入“工作状态”标志
RETURN: SETB EX0
SETB TR0
POP PSW
POP ACC
RETI
;******************************************************
;十进制转换为二进制:
;入口:34H单元BCD码十位数
; 35H单元BCD码个位数
;出口:24H单元二进制
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -