📄 changhui.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP ZANTING
ORG 000BH
LJMP DINGSHI
ORG 0013H
LJMP TINGZHI
ORG 0030H
MAIN:
;开机初始化
MOV P0,#0C0H
MOV P2,#0C0H ;使显示时间数码管为0
MOV DPTR,#TABLE ;指定查表启始地址
SETB EA ;开中断
SETB EX0
SETB EX1
SETB PX0
SETB PX1
SETB ET0
MOV TMOD,#01H
START: MOV R0,#40H ;设定初始值
MOV R1,#44H
MOV R2,#00H
CLR P1.0
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV R3,#00H
MOV R4,#00H
MOV R5,#00h
MOV R6,#00H
MOV R7,#64H
MOV SP,#30H
;等待按键输入,根据按键的输入判断执行什么功能
;循环判断开始按钮是否按下
XUNHUAN:
JB P1.7,START1
LCALL DELAY10 ;延时10毫秒触点消抖
JB P1.7,XUNHUAN ;如果是干扰就返回
JNB P1.7,$
JB P1.0,GN2 ;等待按键松开
LJMP GN1
;判断设置按钮是否按下
START1:
JB P1.6,START2
LCALL DELAY10 ;延时10毫秒触点消抖
JB P1.6,XUNHUAN ;如果是干扰就返回
JNB P1.6,$
CPL P1.0
LJMP XUNHUAN
START2:
JB P1.5,xunhuan ;循环判断开始按钮K2是否按下?
LCALL DELAY10 ;延时10毫秒触点消抖
JB P1.5,START1 ;如果是干扰就返回
JB P1.0,KUAIJIA
JNB P1.5,$
LCALL FANYE
LJMP XUNHUAN
;快加功能
KUAIJIA:
F:LCALL DELAY10
LCALL XIANSHI
INC R3
CJNE R3,#0AH,MAN
MOV R3,#00H
INC R4
CJNE R4,#0AH,MAN
MOV R4,#00H
LCALL XIANSHI
MAN:
JB P1.5 ,STOP
LJMP F
STOP: LJMP XUNHUAN
;翻页功能
FANYE:
MOV A,@R0
MOV R3,A
MOV A,@R1
MOV R4,A
INC R0
INC R1
INC R2
CJNE R2,#4H,QQ
LCALL XIANSHI
MOV R0,#40H
MOV R1,#44H
MOV R2,#00H
LJMP XUNHUAN
QQ: LCALL XIANSHI
RET
;数码管显示秒表时间的程序
GN1:
CLR P1.4
SETB TR0
T1:CJNE R2,#4,T2
MOV R0,#40H
MOV R1,#44H
MOV R2,#00H
CLR EA
LJMP XUNHUAN
T2:LJMP T1
;倒计时
GN2:
SETB TR0
DEC R3
sjmp $
;结束定时
OVER: AJMP START;退到开机初始化状态
;1毫秒延时子程序
DELY1: MOV R6,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R6,D1
RET
;10毫秒延时子程序
DELAY10: MOV R6,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R6,D2
RET
;实验板上的两位一体的数码管0~9各数字的显示代码
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;外部中断0中断程序
ZANTING:
LCALL DELAY10 ;延时10毫秒消抖
JB P3.2,FAN
JNB P3.2,$ ;等待按键松开
ZT1:
JB P3.2,$ ;循环判断开始按钮K1是否按下?
LCALL DELAY10 ;延时10毫秒触点消抖
JB P3.2,ZT1 ;如果是干扰就返回
JNB P3.2,$ ;等待按键松开
FAN:
RETI
;外部中断1中断程序
TINGZHI:
LCALL DELAY10 ;延时10毫秒消抖
JB P3.3,FANHUI
JNB P3.3,$ ;等待按键松开
MOV A,R3
MOV @R0,A
MOV A,R4
MOV @R1,A
INC R0
INC R1
INC R2
FANHUI :
RETI
;显示子程序
XIANSHI:
MOV A ,R3 ;扫描个位上的数字
MOV DPTR ,#TABLE
MOVC A ,@A+DPTR
MOV P2 ,A
MOV A ,R4 ;扫描十位上的数字
MOV DPTR ,#TABLE
MOVC A ,@A+DPTR
MOV P0 ,A
RET
;定时器0中断程序
DINGSHI:PUSH ACC
PUSH PSW
DJNZ R7,PPP
MOV R7,#64H
JB P1.4 , JIAN
AJMP COUNT
COUNT: INC R3
CJNE R3,#0AH,RETURN
MOV R3,#00H
INC R4
CJNE R4,#0AH,RETURN
MOV R4,#00H
BBB: MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
LJMP RETURN
PPP:MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
LJMP RETURN
JIAN: CJNE R3,#00H,AAA
CJNE R4,#00H,AAA
LJMP OVER
AAA: DEC R3
CJNE R3,#0FFH,RETURN
MOV R3,#09H
DEC R4
LJMP BBB
RETURN: POP PSW
POP ACC
LCALL XIANSHI
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -