设为首页收藏本站

美丽的网站-英华家电维修论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1476|回复: 0
打印 上一主题 下一主题

使用单片机制作的6位数字钟

[复制链接]
跳转到指定楼层
楼主
发表于 2011-6-11 20:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机作的电子钟程序在很多地方已经有了介绍, 对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序, 基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分, 计算部分, 时钟调整部分构成。
; a/ `5 \& x0 q" Q" X' S8 M    时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其他位均以此为基准往上累加。
: f* H% a; f" a1 b, n  s$ }! I    开始程序定义了秒, 十秒, 分, 十分,小时, 十小时,共6位的寄存器, 分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 ; X1 r: u! F4 [" D: M+ @9 A
    6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。
7 n4 W! z1 w: [% o7 _2 S7 x! t/ R) M9 Q; E' B: _3 O3 _7 ]/ T

2 V% `9 E0 [+ N

& p: p) o* C% F: X% p
以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。: _& J2 S, x+ q* A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0 O% X& N, u9 g. D$ B  }+ F
;; 中断入口程序 ;;  (仅供参考)
' u- a# h! B! x( }' \$ k7 B. X1 [;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/ `, Q  }% A5 N* l6 t* f
;. ~( [# N, ?4 b! y% v' O" z& o; P
ORG 0000H ;程序执行开始地址" f. A% L& I& }/ X) M6 A9 M
LJMP START ;跳到标号START执行
3 M' H$ U* X+ Y+ a0 b3 F) [ORG 0003H ;外中断0中断程序入口
: {# N( d0 b9 y. _% d9 TRETI ;外中断0中断返回* K% O9 U4 I0 M0 B0 D4 y8 ?
ORG 000BH ;定时器T0中断程序入口
! Z2 v9 ]* p6 h  BLJMP INTT0 ;跳至INTTO执行" O: V7 j/ \6 z% M/ m
ORG 0013H ;外中断1中断程序入口
# n* F( e6 U9 d% u+ s1 d/ gRETI ;外中断1中断返回$ f3 \1 ^* j& n$ s
ORG 001BH ;定时器T1中断程序入口) x4 X% [! z2 q" K1 N6 r3 g; j0 N
LJMP INTT1 ;跳至INTT1执行
3 g( y, S1 N$ V7 zORG 0023H ;串行中断程序入口地址7 ^# O; z4 e( h
RETI ;串行中断程序返回
& Y$ [# P- |. X9 R3 q$ h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- i9 Q# ]& `- M
;; 主 程 序 ;;/ g- l5 Y& @+ Y6 O$ C' ^
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/ T* B6 A4 G" g! e4 R  w! q+ \
;
! I1 f! r4 X  T, KSTART: MOV R0,#70H ;清70H-7AH共11个内存单元
/ {, R9 d" `# u5 `& u9 f! PMOV R7,#0BH 0 f7 ~8 L" `& |2 q$ @
;clr P3.7 ;
5 o3 L4 l. Z& zCLEARDISP: MOV @R0,#00H ;
* }" `6 ~8 {0 i  q4 C0 `INC R0 ;: X3 k7 i( I1 j. ]: O
DJNZ R7,CLEARDISP ;
5 z7 O9 V0 ]+ O" Y& d8 pMOV 20H,#00H ;清20H(标志用)
/ g0 h, y( }! uMOV 7AH,#0AH ;放入"熄灭符"数据
0 Q3 F  U, T) D# J! A0 A1 V& PMOV TMOD,#11H ;设T0、T1为16位定时器
% D' a% v6 n% a8 P2 ]: n2 NMOV TL0,#0B0H ;50MS定时初值(T0计时用)) `$ E* K3 v+ y* @9 `5 Z
MOV TH0,#3CH ;50MS定时初值
  r* y$ z+ [* i9 [MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)! |7 [& W$ V3 C2 P( b9 p
MOV TH1,#3CH ;50MS定时初值! {; I9 ^0 u! d: f
SETB EA ;总中断开放' I! G5 @6 a# P: o4 a, ]& N9 R
SETB ET0 ;答应T0中断
; i( ^5 G+ ]5 vSETB TR0 ;开启T0定时器
4 s5 |; P; v0 c' T" G2 v  g6 C$ WMOV R4,#14H ;1秒定时用初值(50MS×20)
& @4 v, }1 B' T# C) K% B" G& G  PSTART1: LCALL DISPLAY ;调用显示子程序( ^* l- _' [, T0 M1 B2 p
JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序
9 x7 B+ V- j2 |* eSJMP START1 ;P3.7口为1时跳回START1
0 d8 T9 Q4 e" `+ C6 ]" ]SETMM1: LJMP SETMM ;转到时间调整程序SETMM
. D. D' ~- i. g, ~;: o7 w- t8 Z. c7 N; s: W' R
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; }: j& l0 g7 `+ b  e" \! J0 w% }5 Y
;; 1秒计时程序 ;;
- F, A% H0 z- p1 ?! H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* f9 `) U3 u' K' L
;T0中断服务程序# G" Q8 I7 C: w6 P' A1 d6 ?
INTT0: PUSH ACC ;累加器入栈保护, c  W0 S' y( U9 Y& }/ U7 J. k2 y  s
PUSH PSW ;状态字入栈保护
$ Q6 P, W0 W; LCLR ET0 ;关T0中断答应
8 x! D* U+ M' O* W$ ZCLR TR0 ;封闭定时器T07 [9 X1 S" a$ U
MOV A,#0B7H ;中断响应时间同步修正
. z8 K$ Y" U: U7 A- c7 ~ADD A,TL0 ;低8位初值修正. l8 x) V  F% O" G. K, @9 ]6 r& p* ~
MOV TL0,A ;重装初值(低8位修正值): T8 r8 g7 @" a- z1 ~6 n' ~
MOV A,#3CH ;高8位初值修正
! q% [8 |: L* I) s+ [4 NADDC A,TH0 ;
3 ]( H( U6 z; G# z1 R/ o6 ?" K2 qMOV TH0,A ;重装初值(高8位修正值); T# V, a( l& D1 Z  g9 A: l) }3 h) u
SETB TR0 ;开启定时器T0  H  s8 b) a  i
DJNZ R4, OUTT0 ;20次中断未到中断退出7 e# f6 R# B* u; ?" j  x
ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值
: l  l* w  A6 G- s& _0 w+ M3 H) fMOV R0,#71H ;指向秒计时单元(71H-72H)" L0 Y6 ^6 }6 E0 s1 o
ACALL ADD1 ;调用加1程序(加1秒操作)
- {2 ]6 z; s2 A% K$ G- kMOV A,R3 ;秒数据放入A(R3为2位十进制数组合). w( `7 Y3 R/ _1 i
CLR C ;清进位标志, {( x& ^0 Y% e9 X) s2 Q$ v2 f; q- P
CJNE A,#60H,ADDMM ;
! F( F7 `0 f6 Q8 B  V7 C6 }ADDMM: JC OUTT0 ;小于60秒时中断退出) d2 M1 H4 U2 {0 F/ I: m# t' m
ACALL CLR0 ;大于或即是60秒时对秒计时单元清08 b# O# S2 G4 p5 }2 G) l- Q- ~$ p% K
MOV R0,#77H ;指向分计时单元(76H-77H). \& [+ ~( F6 x5 q" ~. o- {
ACALL ADD1 ;分计时单元加1分钟. W0 ?) S. ^! E* V
MOV A,R3 ;分数据放入A
1 N6 V- L2 v0 ^' F9 jCLR C ;清进位标志
4 q% w- [1 J1 s2 C7 [  d% ]CJNE A,#60H,ADDHH ;
7 I5 z9 w; X$ wADDHH: JC OUTT0 ;小于60分时中断退出9 B7 J' ]5 T; g) K" [
ACALL CLR0 ;大于或即是60分时分计时单元清0. u5 x; }* ]1 H% ~2 R8 [& c
MOV R0,#79H ;指向小时计时单(78H-79H)
/ b7 g# a: }8 e7 L8 S1 v( ^, L0 zACALL ADD1 ;小时计时单元加1小时. `$ f" c6 l+ m1 z7 G4 N( b. e
MOV A,R3 ;时数据放入A
, ?) i' n2 A. RCLR C ;清进位标志8 q0 P1 W: R$ ~. B. [! a: ^
CJNE A,#24H,HOUR ;+ t+ f1 g; @/ E
HOUR: JC OUTT0 ;小于24小时中断退出
* r- B! q$ a; U# {& sACALL CLR0 ;大于或即是24小时小时计时单元清08 N5 q9 J9 K8 \0 F+ ?6 c$ p
OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移' b: h6 ?) U1 e* C0 _
MOV 73H,77H ;入对应显示单元* ~; `) ?/ n7 \# k
MOV 74H,78H ;
9 Q0 W" ]" \7 bMOV 75H,79H ;
2 \9 d+ t8 [2 Y3 e  W3 tPOP PSW ;恢复状态字(出栈)
3 x' W" L2 ~& a" ?: NPOP ACC ;恢复累加器
$ d- S6 r! s. ASETB ET0 ;开放T0中断
+ @1 l/ v1 }1 ]$ WRETI ;中断返回9 k' |4 Y' }. K; [* L4 M4 G* A* Y/ X
;9 u& m, [6 T) L6 d) M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, |4 ?$ @" @* T5 Q' o$ K
;; 闪动调时 程 序 ;;" a) P3 a7 w( i
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/ }3 J6 N% t. u) e; v: T;T1中断服务程序,用作时间调整时调整单元闪烁指示
5 d& E: @2 R6 i& NINTT1: PUSH ACC ;中断现场保护1 f7 _- V/ I8 H6 J- A5 @
PUSH PSW ;
* d; L) t* b# u) a( @/ o3 JMOV TL1, #0B0H ;装定时器T1定时初值7 _" Y1 R! Y9 C
MOV TH1, #3CH ;$ p, }/ `% u$ n% g6 p6 k6 u
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)& Q3 C9 d- [4 U8 D: r, f6 W! _7 k
MOV R2,#06H ;重装0.3秒定时用初值
$ E. V9 i0 n; c: @; ]3 r3 J( zCPL 02H ;0.3秒定时到对闪烁标志取反( X- K. |. \! Q) l7 ^9 K
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
6 s/ f5 d* Y2 \0 g5 ~MOV 72H,76H ;02H位为0时正常显示: `, C( a, o/ ?, D' E" N, n- i
MOV 73H,77H ;" N2 n$ O6 i  Z# ?) U  W" t
MOV 74H,78H ;; q8 N1 |. e# N3 U* M1 C/ a! ^
MOV 75H,79H ;
# u. e, V, p2 N7 JINTT1OUT: POP PSW ;恢复现场% H; M; N: D! D0 W
POP ACC ;
7 R- M2 k  ~; R. GRETI ;中断退出
7 H1 P5 b* L6 T- F/ W7 G  l4 fFLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制
0 c. g( L. x! t5 dMOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分
5 S% j% `1 _  l  _1 KMOV 73H,7AH ;显示单元(72H-73H),将不显示分数据" ~$ |5 u- ]  w5 c+ I
MOV 74H,78H ;, d% L  w/ L: P2 t; W
MOV 75H,79H ;
3 I/ s: a" d7 O1 mAJMP INTT1OUT ;转中断退出( \  m' c! B' _4 P( w; s, E
FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时' q. B( d4 R- Q/ i% y
MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示
+ @0 F4 I. S8 ~6 u4 ]) \# HMOV 74H,7AH ;) \  `- r* I  T: _2 p" S
MOV 75H,7AH ;
( l% S' @* e' E4 {) b* @0 [6 u  N! kAJMP INTT1OUT ;转中断退出
; n1 e4 N# [# o;
$ I( S8 R& P! s  v4 L  ?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& U* p: w; D8 W7 W: @* y. L;; 加1子 程 序 ;;- G+ {' V0 i4 D) l' P8 C. t0 M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- y# t# r+ t' g# d
;/ n4 q8 j8 L! F& z. M- L6 _" h
ADD1: MOV A,@R0 ;取当前计时单元数据到A
; L) c; O7 W- ^, ]4 B5 o: [7 ADEC R0 ;指向前一地址  P7 }: ~. C0 @8 D1 K4 O
SWAP A ;A中数据高四位与低四位交换; y: T) Y6 n# k: i1 h
ORL A,@R0 ;前一地址中数据放入A中低四位+ e' E7 r8 R8 L1 p6 y4 l- x
ADD A,#01H ;A加1操作
( N4 k+ y' P$ ?! VDA A ;十进制调整- [- E6 N8 k! r  T+ n& c
MOV R3,A ;移入R3寄存器( _; Q% ~4 H1 [
ANL A,#0FH ;高四位变09 [" Y/ }/ J) _. h! }
MOV @R0,A ;放回前一地址单元
& A  q# }+ v. R& S7 v% Q  J: cMOV A,R3 ;取回R3中暂存数据
4 v: _9 _3 `! i3 nINC R0 ;指向当前地址单元
9 V9 O( [# f& N; C$ A$ aSWAP A ;A中数据高四位与低四位交换
/ g1 y/ D4 y- pANL A,#0FH ;高四位变05 m/ ]1 ?- s( U; c+ H0 t
MOV @R0,A ;数据放入当削地址单元中
, R/ x7 ~1 N" k, ]RET ;子程序返回
0 t! U% n) N3 P  ]& ^1 l1 w;& V" U; A! a5 v; c+ F& V' V& b
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X  h% x4 u2 O' g  o( S$ \8 Y;; 清零程序 ;;' d6 I! q% h, {* ?  ]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
* D" R* ?. b' i7 p+ w. \;.............
  r) u. Q+ W: c;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9 q, L2 n, k7 F6 e3 L' I1 K3 ^3 I
;; 时钟调整程序 ;;
! E& V1 ]* U& l- l4 V! z" R2 i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6 A% z( N: O/ }7 r;当调时按键按下时进入此程序; d1 l7 X+ t0 q, r! W1 c& u
SETMM: cLR ET0 ;关定时器T0中断
. d1 U( ^0 r3 G9 R& o$ PCLR TR0 ;封闭定时器T03 B( t" {' g) ]' E( A& T  m* B3 ^: ]
LCALL DL1S ;调用1秒延时程序
+ c( l7 B4 ?/ U" ^8 W$ M* I6 b: zJB P3.7,CLOSEDIS ;键按下时间小于1秒,封闭显示(省电)
+ @+ U/ P" Y' q$ E& vMOV R2,#06H ;进入调时状态,赋闪烁定时初值
. M8 k& p0 k5 y* |: Y; I% [) E! BSETB ET1 ;答应T1中断
+ I. ?7 n4 u/ I: ~5 @: }- b' v4 ySETB TR1 ;开启定时器T16 [  a' z- s3 u
SET2: JNB P3.7,SET1 ;P3.7口为0(键未开释),等待' C- t6 Q  W' ]. U( Y
SETB 00H ;键开释,分调整闪烁标志置1
8 \, S6 `* p! N5 HSET4: JB P3.7,SET3 ;等待键按下/ U  r5 ]7 D1 l, w- Y6 U
LCALL DL05S ;有键按下,延时0.5秒' R* I, O; _: N4 A
JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态/ |  ~, U, L  \; H1 l7 O
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作
" C8 F! H# v( r' ~& T' SLCALL ADD1 ;调用加1子程序
/ z# ^. J- H! L1 G$ q- n& S8 zMOV A,R3 ;取调整单元数据
1 g1 D: y+ N* n4 [3 h6 I1 hCLR C ;清进位标志
7 s; m6 }, {7 R0 T' @( {CJNE A,#60H,HHH ;调整单元数据与60比较; i' N5 `" j8 L
HHH: JC SET4 ;调整单元数据小于60转SET4循环
" g/ S# o, j/ Q& Y# o% m. }7 _& xLCALL CLR0 ;调整单元数据大于或即是60时清0
! a6 f% v. K& Z; Z5 u  lCLR C ;清进位标志( N' _: }9 t1 c+ v) D% s( J# r# M
AJMP SET4 ;跳转到SET4循环
! ~4 G/ J% ~2 ?' Z$ i. CCLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断- s% n8 o# _% a* L* G5 O' i4 J
SETB TR0 ;开启T0定时器(开时钟)" I% @* g' d) ^' |) [! s5 @
CLOSE: JB P3.7,CLOSE ;无按键按下,等待。# Q! |5 C: g4 r: L2 F
LCALL DISPLAY ;有键按下,调显示子程序延时削抖
3 D9 ~: K' Q9 `# M! m) I, z$ E) KJB P3.7,CLOSE ;是干扰返回CLOSE等待
, O, X7 {" o, ~+ G  J) n  ~WAITH: JNB P3.7,WAITH ;等待键开释1 ~, J3 ~0 Q4 G# q# [$ D
LJMP START1 ;返回主程序(LED数据显示亮)2 J3 A& a2 Z% [  p1 h) L
SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)2 l% V( o4 V3 u- \! V" P5 g
SETHH1: JNB P3.7,SET5 ;等待键开释, E- U) [4 i! w
SETB 01H ;小时调整标志置11 J6 F/ ?8 o' J, N; v0 ^
SET6: JB P3.7,SET7 ;等待按键按下3 @/ N, p. k. o, |: J" T/ ]
LCALL DL05S ;有键按下延时0.5秒
) ^3 N& p8 |9 [* vJNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整
8 h0 l% p/ [1 C0 u5 m  N+ O, |MOV R0,#79H ;按下时间小于0.5秒加1小时操作
) B! ~1 ?; F/ a6 \LCALL ADD1 ;调加1子程序: q! Y  j7 D5 i) R, W, Y% T
MOV A,R3 ;
' k% F, _' [$ B  A2 Z' [CLR C ;
2 ?5 Z. I8 W9 v- c1 s0 OCJNE A,#24H,HOUU ;计时单元数据与24比较
" t5 `+ L6 ?$ k  KHOUU: JC SET6 ;小于24转SET6循环7 e( q0 g7 ~- w' j- ~# x
LCALL CLR0 ;大于或即是24时清0操作( G8 z+ h0 @1 l
AJMP SET6 ;跳转到SET6循环
# Z/ @% W" {, x6 MSETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键开释
, i: z3 Y7 V7 J' Q/ DLCALL DISPLAY ;延时削抖( N3 o/ n% @0 ^! S1 k+ a$ Z
JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待
2 r, M) U+ b" L6 |CLR 01H ;清调小时标志9 b9 R' `& c- S
CLR 00H ;清调分标志  A5 R+ ^  t1 Q
CLR 02H ;清闪烁标志; V' R3 u4 b& N* x/ k6 l+ ]+ I
CLR TR1 ;封闭定时器T1
7 g& j- ^5 P( ^% ^CLR ET1 ;关定时器T1中断
( K0 Y" @! z# uSETB TR0 ;开启定时器T0+ i+ m1 N5 x  R: P  J
SETB ET0 ;开定时器T0中断(计时开始)
; b- V% g$ x9 r# M, S4 RLJMP START1 ;跳回主程序5 O4 c/ p. P$ s* t
SET1: LCALL DISPLAY ;键开释等待时调用显示程序(调分)" A+ I# [' y$ l2 S
AJMP SET2 ;防止键按下时无时钟显示1 Z- ^  A% p1 x0 }  i0 ]9 b
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
) h7 A" b) Y' n3 S) RAJMP SET4
- M* j. P  m0 o/ M1 k% QSET5: LCALL DISPLAY ;键开释等待时调用显示程序(调小时)
1 x, G- m) U2 g* dAJMP SETHH1 ;防止键按下时无时钟显示3 I* \; s. x7 h9 l
SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用& A4 u" q: B% I# i( h4 G% N
AJMP SET6
8 f$ K' o& ~2 m" B. o3 O+ dSETOUT1: LCALL DISPLAY ;退出时钟调整时键开释等待
9 X+ m% a$ O# w$ X2 x4 ?AJMP SETOUT ;防止键按下时无时钟显示/ M  S( o8 V: x0 y, _
;
7 O( C. @, Z9 b  R;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$ ]* v9 t9 U9 l  U. i0 f;; 显示程序 ;;
5 e& x& g* L/ [3 o2 J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 V& ]8 @2 {- N( P3 ?' I
$$$$$$$$$$$$$$$$$$$$$$$$$$$

9 W" G% r( L6 y, x$ a& j;1MS延时程序,LED显示程序用4 F, U7 o" [/ `  D+ A# F
DL1MS: MOV R6,#14H. e) G! D8 R: M- f9 p5 D
DL1: MOV R7,#19H* s/ s9 i4 a8 f- D7 C
DL2: DJNZ R7,DL2
9 N1 d; z" N2 _6 f6 E# bDJNZ R6,DL1! e/ ~* D6 e& _0 p4 ~
RET
+ C+ E0 i) T; Z% K;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象; x4 E. I5 ?' C4 }0 r- C
DS20MS: ACALL DISPLAY
  G! z8 ^; ^! Q* _" v# dACALL DISPLAY8 l9 b2 M  E! [: v6 u' F
ACALL DISPLAY7 i( ^) e  f2 L
RET
/ a. D+ L: k8 s% A6 D) Y9 K;延时程序,用作按键时间的长短判定
1 H7 i# o7 c- d8 gDL1S: LCALL DL05S
7 O( B) [) w, }+ p9 _$ hLCALL DL05S% P8 H0 H2 v8 S. z
RET; l/ k% X/ M0 R% O2 U/ ~- w: d
DL05S: MOV R3,#20H ;8毫秒*32=0.196秒
- C; _& f  h. _* l! g; fDL05S1: LCALL DISPLAY- ], f/ z7 B2 a
DJNZ R3,DL05S16 k" ?3 x5 k1 L) T- k" M
RET) {( c& i+ B& B: W
END ;程序结束

* A+ a: x0 y6 t( N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|粤ICP备13038386号|粤ICP备13038386号|美丽的网站-英华家电维修论坛 ( 粤ICP备13038386号 )     站长邮箱 505966338@qq.com

GMT+8, 2025-11-9 04:15 , Processed in 0.200576 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表