📄 miaobiao.asm
字号:
ORG 00H
START:MOV P0,#00H ;两位七段数码管显示00
JB P1.0,$ ;没有键按下则重复执行本行,一旦按下,执行下一行
CALL FILTER
JNB P1.0,$ ;如果没有放开按键,则等待,放开后执行下一行
MOV R0,#00H ;设置计时指针初始值
PRESS_1:
MOV A,R0 ;将计时指针载入累加器ACC中
MOV P0,A ;输出至P0,七段数码管显示
MOV R5,#10 ;为延时1秒设定的寄存器初始值
ADD_1:
MOV R6,#200 ;为延时设定寄存器
CALL DELAY ;延时子程序,其中DELAY中判断按钮是否第二次被按下
DJNZ R5,ADD_1 ;寄存器R5完成1秒延时
MOV A,R0 ;指针传递到ACC中
ADD A,#01H ;计时值加1
DA A ;十进制调整
MOV R0,A ;把更新的计时值返回计时指针
JMP PRESS_1 ;跳回PRESS_1,继续计时动作
PRESS_2: ;这是处理第2次、第3次按下按钮的处理程序
CALL FILTER ;消除开关抖动
JB P1.0,PRESS_3 ;如果放开第2次按下的按钮,则跳至PRESS_3
JMP PRESS_2 ;没有放开就循环等待
PRESS_3:
JB P1.0,$ ;等待第三次按按钮
CALL FILTER ;消除开关抖动
RELEASE:
JB P1.0,START ;放开按钮后,秒表复位,跳至START清0
JMP RELEASE
DELAY:
MOV R7,#248 ;设置延时使用的寄存器R7,本段延时0.5ms
JNB P1.0,PRESS_2 ;如果第2次按下按钮,就跳到PRESS_2处理程序段
DJNZ R7,$
DJNZ R6,DELAY
RET
FILTER: ;消除抖动,30ms延时子程序
MOV R6,#60
F1:
MOV R7,#248
DJNZ R7,$
DJNZ R6,F1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -