99S秒表程序

 ORG  00H
START:
  MOV  P0,#00H    ;两位七段数码管显示00
  JB  P1.0,$          ;没有按键则重复执行本行,
  CALL DELAY20ms  ;调用延时程序,消除抖动
  JNB  P1.0,$          ;没有放开按钮则等待
  MOV  R0,00H       设置计时指针初始值

PRESS_1:
  MOV  A,R0       ;将计时指针载入累加器ACC中
  MOV  P0,A       ;输出至P0
  MOV  R5,#10   ;为延时1s设定初始值
ADD_1:
  MOV  R6,#200   ;为延时设定寄存器
  CALL DELAY    ;调用延时子程序,在延时中判断按钮是否第二次被按下
  DJNZ R5,ADD_1  ;寄存器R5完成1s延时
  MOV  A,R0          ;指针传递到ACC中
  ADD  A,#01H      ;计时加1
  DA  A                 ;十进制调整
  MOV  R0,A          ;把更新的计时值返回计时指针
  JMP  PRESS_1      ;跳回PRESS—1,断续计时动作
PRESS_2:
  CALL DELAY20ms
  JB  P1.0, PRESS_3    ;如放开第2 次按下的按钮则跳至PRESS_3
  JMP  PRESS_2
PRESS_3:
  JB   P1.0,$              ;等待第3次按下按钮
  CALL DELAY20ms
RELEASE:
  JB  P1.0,START
  JMP  RELEASE
DELAY:
  MOV  R7,#248
  JNB  P1.0,PRESS_2    ;如第2次按下按钮,就跳至PRESS_2处理程序
  DJNZ R7,$
  DJNZ R6,DELAY
DELAY20ms:
  MOV  R6,#60
F1:  MOV  R7,#248
  DJNZ R7,$
  DJNZ R6,F1
  RET
  END

期待 发表于09-23 18:04 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

期待
期待(总统)
金币:32857个|学分:82368个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号