用51单片机汇编语言设计程序,实现一个4位秒表

本文介绍了一个基于单片机的4位数码管动态显示秒表程序设计,采用外部中断控制启动、停止及清零功能,实现1/10秒至9分59.9秒的计时范围。

要求:
(1)4位数码动态显示,最低位按1/10秒计数,最高计数单位为9.59.9。
(2)用开关K0控制秒表的启动、停止、清零功能,按一次启动计时,按一次停止,再按一次清零,在三个状态中循环。
(3)要求K0使用外部中断,优先级高于T0的优先级。
悬赏分:5 | 解决时间:2011-6-19 15:59
;====================================================
最佳答案:

所使用的电路可见:

http://xiangce.baidu.com/picture/detail/e0e3dcca6a23826c17c97c512f075f13e02d51f6


下列程序已经调试通过,


      ORG  0000H
      JMP  MAIN
      ORG  0003H
      JMP  X0_INT
      ORG  000BH
      JMP  T0_INT
;---------------------------------------
X0_INT:
      INC  R0 
      CJNE R0, #1, STOP
      SETB TR0
      RETI
;---------------------
STOP:
      CJNE R0, #2, R0_0
      CLR  TR0
      RETI
;---------------------
R0_0:
      CLR  A
      MOV  R0, A
      MOV  R1, A
      MOV  R2, A
      MOV  R3, A
      MOV  R4, A
      MOV  R5, A
      MOV  R6, A
      RETI
;---------------------------------------
T0_INT:
      MOV  TL0, #(55536 MOD 256)
      MOV  TH0, #(55536 / 256)
      INC  R2          ;百分之一秒.
      CJNE R2, #10, T0_E
      MOV  R2, #0
      INC  R3          ;十分之一秒.
      CJNE R3, #10, T0_E
      MOV  R3, #0
      INC  R4          ;秒个位.
      CJNE R4, #10, T0_E
      MOV  R4, #0
      INC  R5          ;秒十位.
      CJNE R5, #6, T0_E
      MOV  R5, #0
      INC  R6          ;分.
      CJNE R6, #10, T0_E
      MOV  R6, #0
T0_E:
      RETI
;---------------------------------------
MAIN:
      MOV  TMOD, #01H
      MOV  TH0, #(55536 / 256)   ;10ms@12MHz
      MOV  TL0, #(55536 MOD 256)
      SETB TR0
      SETB ET0
      SETB IT0
      SETB PX0
      SETB EX0
      SETB EA
      CLR  A
      MOV  R1, A
      MOV  R2, A
      MOV  R3, A
      MOV  R4, A
      MOV  R5, A
      MOV  R6, A
      MOV  R0, #1
LP1:  LCALL XIANSHI
      JMP LP1
;---------------------------------------
XIANSHI:
      MOV  DPTR, #D_TAB
      MOV  R1, #03H
      MOV  R7, #255 - 8
LOOP:
      MOV  A,  @R1
      MOVC A, @A + DPTR
      MOV  P2, #255       ;消隐.
      MOV  P0, A          ;输出段码.
      MOV  P2, R7         ;输出位码.
      CALL DL
      MOV  A, R7
      RR   A
      MOV  R7, A
      INC  R1
      CJNE R1, #07H, LOOP
      RET
D_TAB: 
      DB  0C0H, 0F9H, 0A4H, 0B0H, 99H,  92H, 82H, 0F8H
      DB   80H,  90H,  88H,  83H, 86H, 0A1H, 86H,  8EH
;---------------------------------------
DL:
      DJNZ ACC, $
      DJNZ ACC, $
      RET
;---------------------------------------
END
;====================================================
回答时间:2011-6-18 17:00
回答者: 做而论道 | 十五级 采纳率:43% 
原题网址:http://zhidao.baidu.com/question/281050349.html
;====================================================

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值