设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2011-6-11 20:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机作的电子钟程序在很多地方已经有了介绍, 对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序, 基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分, 计算部分, 时钟调整部分构成。
, H% _3 M( r: C3 y8 ~    时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其他位均以此为基准往上累加。 + D) m) O1 ?0 X
    开始程序定义了秒, 十秒, 分, 十分,小时, 十小时,共6位的寄存器, 分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。
# U, N; B$ Q; {4 d6 n$ s# K6 ^    6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。
$ G% c3 B3 q3 j5 S/ l+ j
& B* M2 q* [( O) e% p. K 7 l, I7 c  F2 Y, I' I
# a) k1 ?5 B# k3 b- A) s8 F  `
以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。! O2 u/ D- ~. D0 _0 [6 i
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Z, w! @& V9 G: C# R1 k; v% R
;; 中断入口程序 ;;  (仅供参考)
+ e- o3 i' u2 y;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: M! _1 l0 v6 _7 `- T
;- [+ [% E3 C6 t/ D( \
ORG 0000H ;程序执行开始地址! Q9 {* w6 o; A& Y
LJMP START ;跳到标号START执行; ?" J* e* h' n7 o* x" Z7 G
ORG 0003H ;外中断0中断程序入口
$ h! B0 k$ I$ h$ L: p9 V- ERETI ;外中断0中断返回
3 O4 m- D6 O8 C% w  W8 Y- o6 \ORG 000BH ;定时器T0中断程序入口
( ?( i) l9 {0 T# Z( r5 [4 qLJMP INTT0 ;跳至INTTO执行
$ I% c8 a- C) l8 {& _ORG 0013H ;外中断1中断程序入口
2 A0 M7 v; n4 x( ]8 LRETI ;外中断1中断返回5 d' ?+ ~) B4 P! w9 G
ORG 001BH ;定时器T1中断程序入口" z# f( ~$ G$ E5 r) a
LJMP INTT1 ;跳至INTT1执行
( N# I7 ]5 w* X3 m* m# CORG 0023H ;串行中断程序入口地址
4 C& u' F. D( E7 G# B# FRETI ;串行中断程序返回
$ ~6 R) A0 K8 O. W+ |- Z2 W
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
% M; @; Z8 C! Y;; 主 程 序 ;;5 P# F/ |1 o% ]% Q7 S
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
' z2 x+ R& F! p* _! x- @# _; P;0 w9 J0 d8 ^7 W" `- s8 t* `
START: MOV R0,#70H ;清70H-7AH共11个内存单元
/ t: f$ _: G$ {2 o  l6 tMOV R7,#0BH   ]+ A& ?" l9 ], u5 l, ?% o8 \" C
;clr P3.7 ;
6 z. v% e6 [6 N" v9 vCLEARDISP: MOV @R0,#00H ;
' t' Y, L) Z  |INC R0 ;$ l2 h6 J5 k" q  _6 {
DJNZ R7,CLEARDISP ;/ Y0 Q# h* v( Y9 c
MOV 20H,#00H ;清20H(标志用)
& p4 r- y( H8 G8 P& W3 AMOV 7AH,#0AH ;放入"熄灭符"数据
# n5 y# p! h3 [2 P. BMOV TMOD,#11H ;设T0、T1为16位定时器0 M& u9 ~6 U& d
MOV TL0,#0B0H ;50MS定时初值(T0计时用)" v; E4 S/ s/ c3 l* Y
MOV TH0,#3CH ;50MS定时初值
* _: G4 A/ ~! s1 zMOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)0 ~0 O' T0 Z; @+ s9 a+ M7 l
MOV TH1,#3CH ;50MS定时初值, i" B* T! S/ \, z$ j9 N# F
SETB EA ;总中断开放
- Q+ p9 s% Y3 d) ^% _SETB ET0 ;答应T0中断. F2 i) j& H0 Z; k* x
SETB TR0 ;开启T0定时器
( \9 N9 Q% x8 Z' g+ iMOV R4,#14H ;1秒定时用初值(50MS×20)  a; E) x$ p. ~4 X) D( X/ b( m, ~
START1: LCALL DISPLAY ;调用显示子程序2 ~4 Y$ s' A. M9 Z+ }& L  v
JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 3 m5 d+ K. \! H+ d* v. H
SJMP START1 ;P3.7口为1时跳回START1
6 d2 H: H0 C/ B# [8 W5 z% dSETMM1: LJMP SETMM ;转到时间调整程序SETMM
( y% Y. J0 e  D' L3 d;
3 ^, M* ]% }# Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! r% W6 F" o9 C/ t* W; t;; 1秒计时程序 ;;
  ?6 ?- I  t$ n; M' ^5 o/ u( P  n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: U: n' q/ {! L# \! j* A
;T0中断服务程序) O+ }  i3 i4 q
INTT0: PUSH ACC ;累加器入栈保护$ b3 n, q' O, y) B/ d
PUSH PSW ;状态字入栈保护9 x+ W& F9 D& o$ d' t7 w- g
CLR ET0 ;关T0中断答应
- ^1 x- |) P- e" gCLR TR0 ;封闭定时器T06 L, q" S9 V1 f' d8 E$ Y% R+ e5 i
MOV A,#0B7H ;中断响应时间同步修正
: }) B/ v% @* p! `" h7 T! c: qADD A,TL0 ;低8位初值修正3 ~8 Q- X) k; u! ]
MOV TL0,A ;重装初值(低8位修正值)2 ], ?: A0 F, ~1 |# J" P1 \
MOV A,#3CH ;高8位初值修正
; `0 C2 K# r7 r, E5 bADDC A,TH0 ;
* Z5 G% i1 N+ m! e( ?MOV TH0,A ;重装初值(高8位修正值)
  w* b2 c" X7 i( a2 f5 y  }2 aSETB TR0 ;开启定时器T03 M" X2 g- D. [( P0 Q. {6 s9 y
DJNZ R4, OUTT0 ;20次中断未到中断退出
" u6 @! I2 s1 u* M0 k. L8 rADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值
1 G1 |! ~# T# ^: k. S; a" OMOV R0,#71H ;指向秒计时单元(71H-72H)
' C" m0 \! Z0 H, Z$ xACALL ADD1 ;调用加1程序(加1秒操作)' g: M, h7 Z1 L
MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)
# x- j' D) l9 [6 ]6 CCLR C ;清进位标志
" B4 ?3 \$ C" r- J( v7 h9 cCJNE A,#60H,ADDMM ;! W( f2 H& C  H) O& c5 f
ADDMM: JC OUTT0 ;小于60秒时中断退出6 p) d2 C) A- Q" s. t4 _( p# P( F2 I
ACALL CLR0 ;大于或即是60秒时对秒计时单元清0: k1 L7 e: K/ u! y
MOV R0,#77H ;指向分计时单元(76H-77H)
- D, O& q) f5 }( g( i+ {ACALL ADD1 ;分计时单元加1分钟
' H  x; n" V& T4 N( j. b5 M; oMOV A,R3 ;分数据放入A
0 G: N' ?, I7 h  [6 F# e& sCLR C ;清进位标志  d1 F% W. E4 w9 D4 x
CJNE A,#60H,ADDHH ;- x: x/ ~# E% h
ADDHH: JC OUTT0 ;小于60分时中断退出
& d4 A& ~, C/ j! Y2 l. c' G1 ~ACALL CLR0 ;大于或即是60分时分计时单元清0
3 b& u& E) _/ fMOV R0,#79H ;指向小时计时单(78H-79H)9 x2 @' c- F7 E, P# U. b
ACALL ADD1 ;小时计时单元加1小时
6 ~; z/ _  L" yMOV A,R3 ;时数据放入A
7 z/ t: E- |) ]CLR C ;清进位标志) e' ~+ [1 w9 M$ {! ]' D
CJNE A,#24H,HOUR ;, r" X" }, X- c. @: Z7 ^/ ?' n
HOUR: JC OUTT0 ;小于24小时中断退出. K9 L& B& f. T+ w3 ]* b
ACALL CLR0 ;大于或即是24小时小时计时单元清07 v/ A3 a9 v* }) w
OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移
8 x6 U3 y: a3 P- `) pMOV 73H,77H ;入对应显示单元& P; o' H6 h# s7 L+ U( |, L, y( x
MOV 74H,78H ;& p* v% m0 K: u+ ?1 h% R/ c$ I
MOV 75H,79H ;
% U/ s% {3 q) L$ _' ]  U+ m1 sPOP PSW ;恢复状态字(出栈)" n) U/ ?5 x, }; Z; z
POP ACC ;恢复累加器) _( m  w1 i' f* F0 B: o- Q& e# I% V$ e
SETB ET0 ;开放T0中断
4 ?) s: [. ^9 _0 u: \+ [- V' t/ wRETI ;中断返回
/ k4 E6 P) M2 I! Z1 u$ ~" j;
( y* b. y% f5 {. w; V3 V# _;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 I( \: l9 M- v
;; 闪动调时 程 序 ;;9 g3 u1 v. p" Y" _; v$ e/ X
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ y5 Q/ {: H2 A) K* h* a2 Y: a4 s% d;T1中断服务程序,用作时间调整时调整单元闪烁指示. ^9 n: O0 ]) l3 @: k
INTT1: PUSH ACC ;中断现场保护7 D4 ?$ ?: e3 g) O3 Z, X* z+ W
PUSH PSW ;
8 @& i3 J( C/ G7 N4 BMOV TL1, #0B0H ;装定时器T1定时初值
3 b, A: P' d4 o: A" y3 bMOV TH1, #3CH ;4 m) @4 m* U+ }' Z! m
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)3 V0 s( ]  Q( s8 ?$ Q; Q
MOV R2,#06H ;重装0.3秒定时用初值
8 _6 v: k9 v' _0 L1 MCPL 02H ;0.3秒定时到对闪烁标志取反* Z5 `; R* q! u2 u, r& f
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"; u2 x4 I6 \, A2 [* h, T3 s
MOV 72H,76H ;02H位为0时正常显示+ p5 J( D$ i+ P! d! `+ G
MOV 73H,77H ;7 _! X4 a- Y1 D& O
MOV 74H,78H ;
/ c. Q* M3 O* I% t+ f* u. b) @* h! rMOV 75H,79H ;
5 y5 Q6 q) x9 RINTT1OUT: POP PSW ;恢复现场# U' o4 a# \1 t8 l) s
POP ACC ;
8 N* V' T( t4 i: v2 sRETI ;中断退出) {# ^3 |$ `% L% y/ n9 D# j4 S$ P
FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制
/ V2 u0 o- [* s  M  b6 \; oMOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分
& x. t( M7 Z* n, b) yMOV 73H,7AH ;显示单元(72H-73H),将不显示分数据
2 A6 I* d/ P/ |# N$ Z8 `1 mMOV 74H,78H ;; A- r" D+ p( }3 d. x8 I2 L3 s
MOV 75H,79H ;
" [) P5 q8 _( A/ t2 z) _AJMP INTT1OUT ;转中断退出1 d  O5 i1 E  n! ~& a% g
FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时
: @( K! h& t6 ^1 n. ZMOV 73H,77H ;显示单元(74H-75H),小时数据将不显示3 P" r& ^8 t  M- z: {" [% z/ }' O- o
MOV 74H,7AH ;
  Z" m! Y" U$ R4 m4 J( t6 |% ]MOV 75H,7AH ;
( e4 q& g( K$ {1 v& Q( L& O' C3 TAJMP INTT1OUT ;转中断退出
/ L' _5 M( o+ w/ P/ _+ U+ L5 A# h1 T% U;6 Q1 [# z; x4 w
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
, v, H2 ^: ?, s6 Q1 M" D;; 加1子 程 序 ;;6 R4 @* O" Y6 U* n
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: }, ]3 X' R5 i# {/ E7 X- T( |
;
3 `8 A5 F& |- U) ~! M! S0 _ADD1: MOV A,@R0 ;取当前计时单元数据到A
5 y: W5 S. T: ZDEC R0 ;指向前一地址6 X8 F, `8 n6 U* F1 Y
SWAP A ;A中数据高四位与低四位交换  K9 o7 _; _+ `# |, k
ORL A,@R0 ;前一地址中数据放入A中低四位" ]) c9 V- {6 ?; o
ADD A,#01H ;A加1操作
+ V+ I0 E8 P2 r- f$ z5 IDA A ;十进制调整
! k) k7 \. z0 M% m: K$ L) d! c; p' k, lMOV R3,A ;移入R3寄存器
' [" I6 N5 B; wANL A,#0FH ;高四位变0
( z/ A/ F; S7 Y: w4 a9 C' dMOV @R0,A ;放回前一地址单元! q# h, D5 i7 t! p1 A# F
MOV A,R3 ;取回R3中暂存数据6 y: U6 }# T/ J6 ]: ?
INC R0 ;指向当前地址单元  a+ k! C5 x+ Q4 c' V  W
SWAP A ;A中数据高四位与低四位交换0 U2 h8 c1 x! d5 _. M
ANL A,#0FH ;高四位变0. d3 N0 j' M* u9 L
MOV @R0,A ;数据放入当削地址单元中
, `7 b8 x) O* A( KRET ;子程序返回0 Q! E; e  ]+ m4 {  k& @" g
;$ c/ u9 H* B* N9 F0 d4 c
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 o, s- V* S% _% J, o( q+ e;; 清零程序 ;;6 L. f) l$ u0 \0 X
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
) q0 D& y6 M5 y/ B. u;.............
8 H% M; i+ u& X. X$ J& j;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$ S, @+ L/ T: C' i, L
;; 时钟调整程序 ;;
5 ?* Z9 R* f5 |1 o+ S, v" z) D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9 U3 x, S1 \0 B
;当调时按键按下时进入此程序9 z" F# o5 K' }& ~
SETMM: cLR ET0 ;关定时器T0中断1 ?- r1 T/ T/ m
CLR TR0 ;封闭定时器T05 }! y/ G) W8 W2 l
LCALL DL1S ;调用1秒延时程序" j9 _7 T- n& O
JB P3.7,CLOSEDIS ;键按下时间小于1秒,封闭显示(省电)
/ V7 z5 o9 |/ L' mMOV R2,#06H ;进入调时状态,赋闪烁定时初值$ h: ~5 F' f1 z0 e8 d; |
SETB ET1 ;答应T1中断
& u5 X, s# G0 U/ Q, p+ [" LSETB TR1 ;开启定时器T1
* ~& F$ w7 e' w) r0 {. xSET2: JNB P3.7,SET1 ;P3.7口为0(键未开释),等待
$ J% N/ B1 c3 l) M9 V: {& S8 _4 LSETB 00H ;键开释,分调整闪烁标志置1
( W& v2 F" j' F& M( i1 m) K) QSET4: JB P3.7,SET3 ;等待键按下
4 [& ~( f# S( t. `! ~) uLCALL DL05S ;有键按下,延时0.5秒
+ F$ o  I* Q( C4 U* qJNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态4 l" j: I% L5 X) Z" s; G, n4 f# F
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作
; q0 G: J7 Q; H7 BLCALL ADD1 ;调用加1子程序
; z; i2 l+ f- Z" M0 @MOV A,R3 ;取调整单元数据
- e2 g% p) E1 |5 c3 D- b0 BCLR C ;清进位标志
# }& L) r) h. SCJNE A,#60H,HHH ;调整单元数据与60比较: |" F& v% N: _8 y% l& Q7 H
HHH: JC SET4 ;调整单元数据小于60转SET4循环
$ @$ A, s- l' ]4 L! G( QLCALL CLR0 ;调整单元数据大于或即是60时清01 W# W/ E9 k* n8 g& \8 y
CLR C ;清进位标志
7 |% ~- Z# e  Z6 X; m8 DAJMP SET4 ;跳转到SET4循环3 o1 Z4 d: U' G8 u' k
CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断0 `. M5 G+ {# Q& {% h' ]- T, O
SETB TR0 ;开启T0定时器(开时钟)1 v% d1 [! ~6 K3 x" `* b
CLOSE: JB P3.7,CLOSE ;无按键按下,等待。: x- ?, V3 D5 q. G# M6 Q
LCALL DISPLAY ;有键按下,调显示子程序延时削抖* Q0 V, A1 I0 {8 z) w
JB P3.7,CLOSE ;是干扰返回CLOSE等待- {, o' Z" \1 s' B6 w: n' z3 t$ e
WAITH: JNB P3.7,WAITH ;等待键开释
7 u( m. j6 O4 n( j2 r* XLJMP START1 ;返回主程序(LED数据显示亮)
# W! @8 k( F5 z0 l6 k9 h. {0 BSETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)
9 a! t8 z. `* h$ M; C2 K6 F* V* [SETHH1: JNB P3.7,SET5 ;等待键开释( O: t8 z* [6 U6 i6 c! l1 T- z- t" q$ a0 ^
SETB 01H ;小时调整标志置1+ ?: l) f9 ]  }( u
SET6: JB P3.7,SET7 ;等待按键按下0 V# y- F+ Y7 Y" {3 O/ U
LCALL DL05S ;有键按下延时0.5秒  A( v7 z2 j& ~% I6 N" {
JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整8 N5 U& _+ V2 N( M
MOV R0,#79H ;按下时间小于0.5秒加1小时操作
- K! l% \  }- J8 }4 Y0 z) [LCALL ADD1 ;调加1子程序
+ L1 R1 S4 |$ OMOV A,R3 ;
& i9 E2 |5 @/ ^# R; c9 rCLR C ;
% I: O# Z+ s' @CJNE A,#24H,HOUU ;计时单元数据与24比较
6 o4 t/ y6 f7 e" BHOUU: JC SET6 ;小于24转SET6循环
) }# e" J1 Y  T% I0 dLCALL CLR0 ;大于或即是24时清0操作
! D* ]# V' N7 `AJMP SET6 ;跳转到SET6循环
+ m1 a0 v. |4 A0 [SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键开释- |- r9 U6 ~  T6 i
LCALL DISPLAY ;延时削抖" a5 z0 ?1 i4 b, }* \
JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待
* z' a- b  C) d8 m+ ^CLR 01H ;清调小时标志
! ^2 A, e; q2 q: k( ?2 l9 M0 U# uCLR 00H ;清调分标志
; u+ r, T0 Q- K, V( Y5 oCLR 02H ;清闪烁标志/ a: Y( }4 {. g  ]6 X4 h0 B
CLR TR1 ;封闭定时器T1" N8 Z4 M/ I' C) Q: Y
CLR ET1 ;关定时器T1中断
1 Q/ J5 ?  p1 A4 F: R6 xSETB TR0 ;开启定时器T0( \/ R# X$ O; F& r, s9 s2 z
SETB ET0 ;开定时器T0中断(计时开始)
& W  h& W( ~; N, CLJMP START1 ;跳回主程序; x0 y! U. u' R( y5 r
SET1: LCALL DISPLAY ;键开释等待时调用显示程序(调分), b0 [2 a9 S+ n3 T
AJMP SET2 ;防止键按下时无时钟显示
9 @/ [- Z0 h% u) t1 K" X" T. J$ V$ cSET3: LCALL DISPLAY ;等待调分按键时时钟显示用
: q* [2 o# X% LAJMP SET4% g  [. K. K$ R) ?0 k% s
SET5: LCALL DISPLAY ;键开释等待时调用显示程序(调小时)
- L7 ^% c! d, p4 l) jAJMP SETHH1 ;防止键按下时无时钟显示1 n. c8 E3 `0 r2 v. N* x8 C) b" K; D
SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用
1 e) T/ ]0 B* X$ E3 V/ @4 }AJMP SET6' K! n: R7 D7 A
SETOUT1: LCALL DISPLAY ;退出时钟调整时键开释等待
9 `/ r+ e: l! BAJMP SETOUT ;防止键按下时无时钟显示* ~5 r0 g1 S. W, I
;4 c' L- [: \* W. U" H' X
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) ?7 o* S, z0 c: p' k
;; 显示程序 ;;
$ L6 S0 K8 f0 X5 k% L;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: K3 |' U' m1 A& A. P
$$$$$$$$$$$$$$$$$$$$$$$$$$$

! L7 M4 d/ [* _3 };1MS延时程序,LED显示程序用1 _; K. h. @. I* b
DL1MS: MOV R6,#14H+ B0 O1 v& @  h4 r& i7 o2 w5 F
DL1: MOV R7,#19H) Q+ I% n! e+ l( i1 o
DL2: DJNZ R7,DL2, H  @0 `" [& Z  E. I% o
DJNZ R6,DL1( x- b6 i" M5 n9 x! ?
RET; B& T! r5 P0 X  A+ J* T/ G' _' |$ p( P
;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象3 a+ ~3 n! _& E. m
DS20MS: ACALL DISPLAY
; T* j5 R0 T: p. r$ BACALL DISPLAY
" M  h5 H+ x* f7 j6 K$ h1 nACALL DISPLAY# C9 z# I: s7 U/ K3 @4 U
RET3 U7 |* w/ ]3 X# T5 w5 P
;延时程序,用作按键时间的长短判定# b/ V: R, U# \$ F$ y4 ]
DL1S: LCALL DL05S
( r  S* x% W$ u7 a3 w, ELCALL DL05S
- h! B) D  ^; H! c- N$ B3 ZRET8 _+ C) Z4 |9 ]2 k# N' e, G1 a
DL05S: MOV R3,#20H ;8毫秒*32=0.196秒  B* y. e/ ~$ x7 }
DL05S1: LCALL DISPLAY
. C) [8 c2 ], N3 U4 [% SDJNZ R3,DL05S1
: c$ g0 T& |# v2 Q8 q" MRET+ n; x+ z" c0 r& d0 ^
END ;程序结束
' x9 F3 O$ A" {; f' b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-8-27 11:15 , Processed in 0.155692 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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