设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2011-6-11 20:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机作的电子钟程序在很多地方已经有了介绍, 对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序, 基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分, 计算部分, 时钟调整部分构成。 6 r( P7 O; P  G7 m4 s! Q
    时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其他位均以此为基准往上累加。
' c9 L5 c/ {" N    开始程序定义了秒, 十秒, 分, 十分,小时, 十小时,共6位的寄存器, 分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 " e) p8 g9 e9 U2 e
    6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。9 ^4 k' j* L) s: U# d7 [
( X& w8 f2 g6 Q
; a" y# D( E+ K6 T% t
( _2 @+ e+ p# _6 O
以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。8 _2 A9 Z) h6 c7 I
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;! k) U/ {- j4 ^! U( f: b) z
;; 中断入口程序 ;;  (仅供参考)
6 b' z, L/ U; p6 Z9 Z$ Z4 Y' H3 n! h;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 A( K9 B8 U8 I! U6 a6 _! Z
;
  }" I1 r0 ]( E* _+ K$ X* sORG 0000H ;程序执行开始地址# ?, ~1 `  R) u, N- n1 x
LJMP START ;跳到标号START执行
4 C7 d+ H' p: ~" p2 n8 C: _4 U, SORG 0003H ;外中断0中断程序入口
% _& ^) ?  Z8 T6 Y% r+ r0 z# t- W. wRETI ;外中断0中断返回
/ ]3 ?2 K: a% H! E" Z2 CORG 000BH ;定时器T0中断程序入口. }! p7 x8 J* V0 a
LJMP INTT0 ;跳至INTTO执行
" C) T. t% h) l( A- LORG 0013H ;外中断1中断程序入口3 e! y" `8 F2 G9 Y# g" r
RETI ;外中断1中断返回
6 x! I) ]8 L3 M5 [; S" M. A# bORG 001BH ;定时器T1中断程序入口
' h' B0 K. u- L4 t) M, @  RLJMP INTT1 ;跳至INTT1执行
% v$ q! p0 I" @5 oORG 0023H ;串行中断程序入口地址2 J/ @" ^$ I" F9 Q4 Y. N
RETI ;串行中断程序返回
, D7 a$ `$ O+ L7 t9 |7 k$ W0 a* k3 |( _
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, ^+ X4 C# p: U" M" R
;; 主 程 序 ;;
4 G1 @7 m- s# V3 e; T* t;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
' F1 I6 q2 u+ N; N& k4 s* T;3 g' B7 H7 t! V& d
START: MOV R0,#70H ;清70H-7AH共11个内存单元" i/ I& l# j4 r, S2 v
MOV R7,#0BH
3 |8 H: `9 q, h' x7 U* p$ U9 K;clr P3.7 ;3 z) ~# h+ T0 ]! f! _, ~9 `; w
CLEARDISP: MOV @R0,#00H ;
, X# l# Q/ j& M* eINC R0 ;" ^0 ]6 i/ ^5 o6 B+ D1 v& j
DJNZ R7,CLEARDISP ;
$ j1 q0 v3 ]+ F2 ]" k- y; \4 hMOV 20H,#00H ;清20H(标志用)
% o/ E9 D0 P! R/ C: ?6 p7 {MOV 7AH,#0AH ;放入"熄灭符"数据
# p9 |- W* b( ~% C/ k4 ^1 {8 pMOV TMOD,#11H ;设T0、T1为16位定时器
6 d! S! u1 L4 lMOV TL0,#0B0H ;50MS定时初值(T0计时用)
1 N% ~) U, @- ?* w' ?MOV TH0,#3CH ;50MS定时初值' s, O2 @2 ^2 z. v/ Q( w
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)6 K1 C  s  J1 b! W
MOV TH1,#3CH ;50MS定时初值
! X. _' V/ E3 u; G+ ISETB EA ;总中断开放
" U' K5 a; D% [; e( FSETB ET0 ;答应T0中断
- [- [1 K: S1 _3 I1 ASETB TR0 ;开启T0定时器# g! Y' W; O0 a" _7 b. r! e0 `
MOV R4,#14H ;1秒定时用初值(50MS×20)
/ z3 g5 M7 N( D. j7 n4 p& L5 r% y: ?START1: LCALL DISPLAY ;调用显示子程序
; m8 K! S! _' S9 O9 l# A& ^JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序
* C1 n4 O9 n3 q2 w: R0 vSJMP START1 ;P3.7口为1时跳回START1
" a- u* F8 U% w8 y# Z  I3 LSETMM1: LJMP SETMM ;转到时间调整程序SETMM
$ K3 z, T) ^% q1 O# r4 y;
3 Y) Q$ e6 K/ h8 {;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& u# y% D2 H, z3 g; m7 d;; 1秒计时程序 ;;+ z! r6 D0 C; O
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/ m3 i. M2 z( x  y1 K
;T0中断服务程序
2 M1 E8 _7 x/ O. B& ?4 r* B- rINTT0: PUSH ACC ;累加器入栈保护. P4 N2 a- `. p. f' z3 c: [
PUSH PSW ;状态字入栈保护! K4 E5 M: }: T6 O! P9 f5 M
CLR ET0 ;关T0中断答应1 _2 r8 g9 w6 [
CLR TR0 ;封闭定时器T0
' @9 G! [9 E, Q$ l; H5 bMOV A,#0B7H ;中断响应时间同步修正
: `$ T3 X5 A/ c  O% A- R/ {ADD A,TL0 ;低8位初值修正( e/ R# x) H; ?
MOV TL0,A ;重装初值(低8位修正值)
* g2 [/ }/ J# ~0 Z$ g( xMOV A,#3CH ;高8位初值修正, ~. n3 |6 C* @1 i+ b$ P
ADDC A,TH0 ;' e% d9 \4 b! o* ~  G
MOV TH0,A ;重装初值(高8位修正值)  d' Y: H! }5 {: c" R* F
SETB TR0 ;开启定时器T07 O3 ~2 g& ^. x1 v
DJNZ R4, OUTT0 ;20次中断未到中断退出% t9 @9 a6 X: H$ x9 U$ M
ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值
' r7 ?9 F+ Z" E" M& I; f3 DMOV R0,#71H ;指向秒计时单元(71H-72H)% j. y: Z+ [1 B9 O6 J
ACALL ADD1 ;调用加1程序(加1秒操作)
6 {2 H0 E% v& A$ P5 SMOV A,R3 ;秒数据放入A(R3为2位十进制数组合), g. B! B2 D( ?
CLR C ;清进位标志' X3 l( T. S, k$ R- h/ L
CJNE A,#60H,ADDMM ;' g! N1 t/ {8 v9 I5 Q
ADDMM: JC OUTT0 ;小于60秒时中断退出
6 M# ?3 f: B1 V: h5 I8 H8 u8 ?& }ACALL CLR0 ;大于或即是60秒时对秒计时单元清0
, A5 y* m' n" N( `MOV R0,#77H ;指向分计时单元(76H-77H)
1 ^/ O! w5 `) E0 UACALL ADD1 ;分计时单元加1分钟  z4 E% z# [6 i+ A5 f7 m6 H
MOV A,R3 ;分数据放入A
5 @5 v: i% X& I0 J+ ]CLR C ;清进位标志. }! t- ^' E# {0 n
CJNE A,#60H,ADDHH ;8 g" |: e4 K, N* g
ADDHH: JC OUTT0 ;小于60分时中断退出" W; z/ Z1 i7 i1 n* m2 [3 s$ U' Q
ACALL CLR0 ;大于或即是60分时分计时单元清0, X  z3 Q1 w( X  |6 K9 L4 M
MOV R0,#79H ;指向小时计时单(78H-79H). T, X" b! S6 J( M5 U
ACALL ADD1 ;小时计时单元加1小时
6 }' M8 x/ y& iMOV A,R3 ;时数据放入A! {# \* M& y: y+ @. I
CLR C ;清进位标志
2 w$ w$ m7 m" @) \4 B& OCJNE A,#24H,HOUR ;6 H0 W! @/ C+ ~5 F
HOUR: JC OUTT0 ;小于24小时中断退出
3 z/ b$ K8 d1 A7 \1 E) f0 tACALL CLR0 ;大于或即是24小时小时计时单元清0$ ~; T$ ~! V8 F% B
OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移
; l% k' I7 |2 d4 D; k# LMOV 73H,77H ;入对应显示单元
: S7 p$ m, n/ d; }) j2 O% u5 y# hMOV 74H,78H ;1 Z! t% v" H7 x% a7 Q# d
MOV 75H,79H ;
6 h6 m/ r3 `/ {) HPOP PSW ;恢复状态字(出栈)3 C4 K: E" @6 S, G# c
POP ACC ;恢复累加器! W6 z- S3 E. H  S, x2 Q5 m
SETB ET0 ;开放T0中断8 a# S! ]# P+ {7 P
RETI ;中断返回
8 s$ h- f# ?0 v( G: @- h% v+ s;2 b4 }% C! s) }: G
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5 B, f# z' ?) G. Z6 W% J# {
;; 闪动调时 程 序 ;;
) D, y& E! r" k9 F& o. w0 ~5 S;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;' J7 d* E; D; w& L7 S& I& T9 K
;T1中断服务程序,用作时间调整时调整单元闪烁指示. Q  d8 b& `/ P% a/ x9 Q: i3 [- c
INTT1: PUSH ACC ;中断现场保护3 t% U! ]) O8 g( u  T
PUSH PSW ;, }# j- e# F. o0 q0 F( r+ i; m
MOV TL1, #0B0H ;装定时器T1定时初值. r5 _% K1 J3 {& V" K
MOV TH1, #3CH ;& @$ x" J! q/ ]3 K5 C% j- y
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)
3 O3 I" P8 G6 W2 ?4 k% j9 ~+ ZMOV R2,#06H ;重装0.3秒定时用初值
* k% D2 y0 T; V; MCPL 02H ;0.3秒定时到对闪烁标志取反
& }" v; [0 p9 s" b5 M" v* x% EJB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
8 v1 ?- V) P9 ~! t5 D! C* M3 l1 l8 xMOV 72H,76H ;02H位为0时正常显示
  S$ C0 G3 Z! U( xMOV 73H,77H ;  `: N  P6 I# p0 ~. X) @
MOV 74H,78H ;) U7 w1 M4 B1 ?/ {+ J+ U  e! d+ a
MOV 75H,79H ;0 s- ~1 k3 M' ]/ a8 ^
INTT1OUT: POP PSW ;恢复现场
! {" d) i* o6 }  F* KPOP ACC ;5 Y3 V4 \% c; P5 k& w1 j
RETI ;中断退出' m- m  l9 p( s. _
FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制
1 J# p- ~4 G& L  ~  U* K; cMOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分8 H9 j8 Z+ `  Q5 V4 O: r
MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据  \1 b3 Q* N) ~& L4 J
MOV 74H,78H ;
) ]+ H) e8 s' X' mMOV 75H,79H ;
/ ]. b! e9 t; O' ?3 pAJMP INTT1OUT ;转中断退出& d- n3 `; M; T* S$ Q
FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时2 l8 ^( S* a0 g5 J; b- G6 V3 L
MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示
1 E& ?; `; F4 pMOV 74H,7AH ;. N# B& j6 A  f/ k5 h8 J
MOV 75H,7AH ;: n1 j1 J) F: G2 c8 x" g
AJMP INTT1OUT ;转中断退出
2 J& z; I2 K& U* B6 o;. i1 T* Z! N4 E6 {2 h& _4 a5 B
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, I; F) W  ]* v. @3 S7 Z* K* ]/ o
;; 加1子 程 序 ;;) R2 Q; ^: z5 H9 W8 Q
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
, @7 T8 O+ ]" Q; f' ~8 S( j;, z8 A1 X! \6 V8 P
ADD1: MOV A,@R0 ;取当前计时单元数据到A
; e% a( K! w' c8 ^DEC R0 ;指向前一地址
1 y& |3 r( O$ w9 V7 _$ eSWAP A ;A中数据高四位与低四位交换7 m( Y+ v. g1 b; P9 H# V9 L8 g
ORL A,@R0 ;前一地址中数据放入A中低四位
- S# G4 Y* y1 z% h! W1 AADD A,#01H ;A加1操作# K5 Y; G! u1 H
DA A ;十进制调整
. }0 A3 W9 I  g; n8 eMOV R3,A ;移入R3寄存器
; D9 J$ m2 G1 `- _) f2 yANL A,#0FH ;高四位变0
$ B" Z2 C1 _/ r+ GMOV @R0,A ;放回前一地址单元9 J) {& a( k2 o, h
MOV A,R3 ;取回R3中暂存数据  z/ F- ^7 z6 ?
INC R0 ;指向当前地址单元/ [8 q9 c& m+ A7 J9 @+ P" S
SWAP A ;A中数据高四位与低四位交换
' F; T3 h; l: A1 j6 p$ CANL A,#0FH ;高四位变0# m) k; Y% Y% n9 ?; S" o0 U: p) H
MOV @R0,A ;数据放入当削地址单元中2 r/ a* H5 z# t/ m
RET ;子程序返回
6 b8 \/ l4 e* ~% N) b" h9 Q/ S;) _7 `/ ]2 V- I
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: N; w2 W1 Q2 _& b1 w9 ^" x
;; 清零程序 ;;
+ n- _5 w3 N4 G" f;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! i# s  @/ Z0 g( \. E7 C;............." W9 `' I1 ~) W% F: s
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;! v8 a) F- s' C: S
;; 时钟调整程序 ;;
. h- ^& ^* q4 X4 E) Z9 P;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- q) s: M% I8 I/ {5 K: _
;当调时按键按下时进入此程序
. v2 z6 r. K( K7 F% q3 Y5 qSETMM: cLR ET0 ;关定时器T0中断% v+ g6 ?* B: Q+ c
CLR TR0 ;封闭定时器T0
! [7 \* b/ c0 n9 u  J7 P; D: MLCALL DL1S ;调用1秒延时程序
3 Y5 P  u0 U2 J4 X+ ~; ZJB P3.7,CLOSEDIS ;键按下时间小于1秒,封闭显示(省电)
  ~' P  T* }$ c3 gMOV R2,#06H ;进入调时状态,赋闪烁定时初值: T; w* P+ [# m1 L9 Q6 b
SETB ET1 ;答应T1中断3 i" i1 Q8 l, ]  U9 {
SETB TR1 ;开启定时器T1
0 g1 [+ k3 [$ zSET2: JNB P3.7,SET1 ;P3.7口为0(键未开释),等待
; h3 z3 {, V( k8 B1 N& g4 MSETB 00H ;键开释,分调整闪烁标志置17 |- |' V$ e; y) h  c% I
SET4: JB P3.7,SET3 ;等待键按下
) w* k$ ]2 K9 T: }1 ~LCALL DL05S ;有键按下,延时0.5秒) D& s  r5 C$ d2 T; U9 g
JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态* Y- B. [8 \' z" T/ |9 x
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作; s+ j! W& P0 [1 O
LCALL ADD1 ;调用加1子程序
- `  Z& D( S- p/ D5 \4 H  f6 RMOV A,R3 ;取调整单元数据/ m8 M1 _1 l  R: H0 f
CLR C ;清进位标志
, i" O: z" C( x% gCJNE A,#60H,HHH ;调整单元数据与60比较
# R' U+ i  K# F! Q9 e* [HHH: JC SET4 ;调整单元数据小于60转SET4循环
. ^! i+ O4 X7 e1 {$ vLCALL CLR0 ;调整单元数据大于或即是60时清0
7 L+ B4 E2 P, K- CCLR C ;清进位标志- _7 H. K+ P' F. d5 E
AJMP SET4 ;跳转到SET4循环% @6 H( T' F: Y+ R  Y1 `3 q/ j/ }
CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断7 [5 R, U. G' x7 l' _, W
SETB TR0 ;开启T0定时器(开时钟)
1 ~0 W( D8 k2 z3 N1 s* Z# JCLOSE: JB P3.7,CLOSE ;无按键按下,等待。
1 ~( U; L: U( p- ]7 {( C* s* w5 qLCALL DISPLAY ;有键按下,调显示子程序延时削抖( y! \. N" Z1 ~6 y
JB P3.7,CLOSE ;是干扰返回CLOSE等待
$ M4 H3 ]5 c. ~8 `: U: h1 ]$ K1 DWAITH: JNB P3.7,WAITH ;等待键开释
1 [( J8 l) q, N; Z4 N& ULJMP START1 ;返回主程序(LED数据显示亮)
: T2 w+ k& b' L: p6 DSETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)
- Y9 r" v$ x6 R" }# y# P/ w: gSETHH1: JNB P3.7,SET5 ;等待键开释
1 l( @9 h! d0 Z$ n, S3 v( YSETB 01H ;小时调整标志置1# D: @! k$ L5 u; B
SET6: JB P3.7,SET7 ;等待按键按下
$ P0 j6 `: }  ELCALL DL05S ;有键按下延时0.5秒
, H4 K5 }/ _$ s# [JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整
9 J; y! x8 I1 \( r% kMOV R0,#79H ;按下时间小于0.5秒加1小时操作" I: C, v0 x0 m+ s  h3 t
LCALL ADD1 ;调加1子程序
) U5 T5 v" J" Q! W0 p. `4 V. fMOV A,R3 ;
0 R( P+ {- o* n( RCLR C ;
0 N; T: f* o( aCJNE A,#24H,HOUU ;计时单元数据与24比较
+ B6 D& U# F9 E# `. |; X6 U1 |HOUU: JC SET6 ;小于24转SET6循环
- g% r( I( u) P& j; cLCALL CLR0 ;大于或即是24时清0操作$ M% v* b4 b) f, P# K1 D! ?
AJMP SET6 ;跳转到SET6循环
  N9 _) H" `8 {) k1 x) p) LSETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键开释
/ y0 [; m1 k( f) D8 N; \LCALL DISPLAY ;延时削抖/ a! p9 I" _- p4 a# B% r
JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待3 F" [- A9 j6 p5 F3 F5 J
CLR 01H ;清调小时标志* @0 E+ Q3 ]5 R/ w# D' V. J; v8 G
CLR 00H ;清调分标志+ ?( A5 Z. v3 ?/ x- V' \, p/ {8 ?* L
CLR 02H ;清闪烁标志
$ v, `! ]1 y: ?" C, U' q; FCLR TR1 ;封闭定时器T1
2 a4 d# \/ \5 n8 q) F8 FCLR ET1 ;关定时器T1中断" W" n# K/ a/ F. [% U
SETB TR0 ;开启定时器T0
6 u0 p, O/ C8 _SETB ET0 ;开定时器T0中断(计时开始)
6 Q+ V: T* a5 uLJMP START1 ;跳回主程序4 s) ~  F! g( ?5 c) M3 R. w% g# J
SET1: LCALL DISPLAY ;键开释等待时调用显示程序(调分)
# M2 B: P& {# NAJMP SET2 ;防止键按下时无时钟显示1 j- ?  R$ J- g) W$ `9 \; t& r
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
) m& E7 ]5 o. @: [$ ^6 @9 E) E6 lAJMP SET4
1 W9 a( L& H( R' @; o1 PSET5: LCALL DISPLAY ;键开释等待时调用显示程序(调小时)
( v" W/ a/ {5 @9 QAJMP SETHH1 ;防止键按下时无时钟显示* B3 g9 v3 f0 `! o9 m
SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用" ?! u$ d; D& V0 @
AJMP SET6
( m  M7 e) z+ G$ Z* w3 sSETOUT1: LCALL DISPLAY ;退出时钟调整时键开释等待. A$ u. n: O# r% |3 {( W
AJMP SETOUT ;防止键按下时无时钟显示+ a) @) Z3 v- `' W% t1 ?2 y
;
' |' o* z3 J8 |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4 o+ F" I+ a) K& A7 ~
;; 显示程序 ;;
9 C) ?$ S+ b. w! q+ `;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 p) w) c  @4 }$$$$$$$$$$$$$$$$$$$$$$$$$$$

/ n. C- w7 M) P  z;1MS延时程序,LED显示程序用
1 B" k4 h& X/ d! C8 e3 yDL1MS: MOV R6,#14H
$ e$ X. J8 Q5 X- xDL1: MOV R7,#19H4 c/ N4 h0 }% w8 \. D/ p# j$ l
DL2: DJNZ R7,DL2; f) s8 E' ^2 p. n# O$ c
DJNZ R6,DL1! {: K8 C  ]  E; e& Y3 T& {* ?; o
RET5 y* L) a# x- s) Q0 }( v7 M( ]
;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
1 B* v& ~' ]; Q' IDS20MS: ACALL DISPLAY
1 S, `1 t& s4 b; f! IACALL DISPLAY
8 C" a6 b3 P5 I% K, U. i0 z6 cACALL DISPLAY
. l4 P3 l9 R0 N' NRET4 d" D) Y% U0 S  J
;延时程序,用作按键时间的长短判定. T/ F- G" A# a/ B) J
DL1S: LCALL DL05S8 H# e- O" R1 ^% O6 v% E& N! g" B
LCALL DL05S
* r7 R/ V* t: CRET
% x. }+ t# i+ Z: B5 E( j! h' uDL05S: MOV R3,#20H ;8毫秒*32=0.196秒) b* y0 X9 z" j5 m
DL05S1: LCALL DISPLAY. {; {/ H( P  X' g: g# K
DJNZ R3,DL05S18 a6 B" I; ?/ h! E) q
RET
2 i* [/ p% h/ M: T2 V: Y8 m, l9 a1 `END ;程序结束
7 b( E$ N/ r2 Z9 u* e1 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2026-8-24 04:55 , Processed in 0.161799 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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