设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2011-6-11 20:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机作的电子钟程序在很多地方已经有了介绍, 对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序, 基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分, 计算部分, 时钟调整部分构成。 7 d3 N0 C7 V8 I
    时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其他位均以此为基准往上累加。 # N' B  E. [: \/ O
    开始程序定义了秒, 十秒, 分, 十分,小时, 十小时,共6位的寄存器, 分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。
5 Q! e, ~( u: i    6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。
+ |. D, I! h$ `, j8 o* }  c+ L4 w; c
0 _& Y3 D9 n. d! a9 P8 [( M7 P
: F0 [) r( [& M6 b1 N$ k$ j, k* f1 C9 t! W
以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。
' X4 x& U2 A* Y9 S0 P;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
" L+ ]: t* h. v0 Z$ f: K;; 中断入口程序 ;;  (仅供参考)
) v( p7 v- L- |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, N, C2 R/ I6 N* ?- v+ j5 t" C
;
6 d( `# |  H! r8 AORG 0000H ;程序执行开始地址
9 b2 c( W. U' f# E- W* ~) z( ULJMP START ;跳到标号START执行, K' `5 y' B" M+ b9 i) y
ORG 0003H ;外中断0中断程序入口2 r3 {  \+ q' H" W3 W# H' p0 h1 Y
RETI ;外中断0中断返回
/ U2 L# ]: [8 l& ?: @( oORG 000BH ;定时器T0中断程序入口
. T; j( a4 g( i& L' @0 W7 [& RLJMP INTT0 ;跳至INTTO执行
7 @9 q$ I. [+ N0 B& wORG 0013H ;外中断1中断程序入口
* b0 `$ @' N9 Y3 FRETI ;外中断1中断返回+ f/ ^/ u9 ?& J4 ^
ORG 001BH ;定时器T1中断程序入口" `! u7 ?2 O$ T' s/ u
LJMP INTT1 ;跳至INTT1执行  d; {  ^% ^( {
ORG 0023H ;串行中断程序入口地址
" I: K1 f# G& ]6 A# x  HRETI ;串行中断程序返回
5 K" @0 ]+ c) w6 A. W
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 M" B7 w3 b( x5 a5 C8 P;; 主 程 序 ;;2 p/ _0 c4 }& b8 |( A0 v! L
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, _7 h  R$ A8 G
;
8 B* t9 H8 K/ _3 n9 N( z. vSTART: MOV R0,#70H ;清70H-7AH共11个内存单元8 c9 C& e9 q  _
MOV R7,#0BH & ^& y6 G  P' g0 t
;clr P3.7 ;
$ B$ v) D6 R8 y- _9 G! _CLEARDISP: MOV @R0,#00H ;0 d5 _5 l! t3 {
INC R0 ;
) p1 p: p3 A$ b- S3 pDJNZ R7,CLEARDISP ;
9 G) u5 k) @8 p* w7 ]8 ?- m, q4 `MOV 20H,#00H ;清20H(标志用); |# L) }* t! i
MOV 7AH,#0AH ;放入"熄灭符"数据
2 u3 T" U1 i$ M  LMOV TMOD,#11H ;设T0、T1为16位定时器' j' c9 U  o, x& {
MOV TL0,#0B0H ;50MS定时初值(T0计时用)8 X& G1 f  u1 c) D
MOV TH0,#3CH ;50MS定时初值
/ r2 |0 E+ d# X; rMOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)5 g4 e1 I8 V! F8 x
MOV TH1,#3CH ;50MS定时初值
+ Z' M% f: m+ Z2 H; LSETB EA ;总中断开放
5 B8 ~, l; H6 E4 _/ j! X' }SETB ET0 ;答应T0中断
# d2 ]- k1 m8 Q2 _5 C% d. [SETB TR0 ;开启T0定时器, u# r2 Q, e: {+ b5 T
MOV R4,#14H ;1秒定时用初值(50MS×20)
" L2 ^/ K  Q# Y3 QSTART1: LCALL DISPLAY ;调用显示子程序
/ u" q+ e: K# v8 f2 PJNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 9 ?& r4 S; G& g! {( n
SJMP START1 ;P3.7口为1时跳回START1
6 B) m/ `$ n+ T, vSETMM1: LJMP SETMM ;转到时间调整程序SETMM2 _3 h5 H' T  [% {" [2 y+ J
;
+ {& M' X/ h" ?- S- ]* j  G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;( z$ r+ O3 _1 J7 W
;; 1秒计时程序 ;;% H0 K7 Q9 o0 P3 H- L0 F& ~/ Z$ p
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1 w: H$ g' C; D6 A1 U' ?;T0中断服务程序
" ]$ b1 J. U% o" r$ BINTT0: PUSH ACC ;累加器入栈保护
8 G+ V' M; m+ wPUSH PSW ;状态字入栈保护
+ j% t4 f! R5 n0 dCLR ET0 ;关T0中断答应
  i8 ?. x8 P% C7 Q( v2 uCLR TR0 ;封闭定时器T0
7 E% f  c6 Q5 @" G: fMOV A,#0B7H ;中断响应时间同步修正
1 _, @- ^6 i7 ^3 Z: uADD A,TL0 ;低8位初值修正
4 p6 }, F) N/ B% }) I8 ~. {: iMOV TL0,A ;重装初值(低8位修正值)
" l( j5 J# C) k( r( |' m. |1 zMOV A,#3CH ;高8位初值修正
" T* E+ d! t6 i, OADDC A,TH0 ;
! g0 |4 _+ {9 {/ L0 DMOV TH0,A ;重装初值(高8位修正值)
7 a) J8 ^# x4 W2 HSETB TR0 ;开启定时器T09 ^7 o+ c$ G5 p% D: Y, [8 A
DJNZ R4, OUTT0 ;20次中断未到中断退出$ z" Z5 u+ s5 i6 |1 U0 [
ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值2 r, E  ~9 p/ U( }
MOV R0,#71H ;指向秒计时单元(71H-72H)
9 P  _5 i) }8 r- {6 D5 i; ~, EACALL ADD1 ;调用加1程序(加1秒操作). U( w7 S# H/ ?( ?5 ^& s  q: p# f3 u- ~
MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)
" [; f: p9 i6 `; h' w4 UCLR C ;清进位标志
, Z4 ~8 a- i+ G( ^# E: h/ e' ^CJNE A,#60H,ADDMM ;* M, v# R* x6 l; u6 u0 n: z$ U
ADDMM: JC OUTT0 ;小于60秒时中断退出
$ ?* E. j/ y" `, uACALL CLR0 ;大于或即是60秒时对秒计时单元清03 r0 z1 l% q, B" D( B
MOV R0,#77H ;指向分计时单元(76H-77H)! H* w2 p* g8 |" R: c$ o5 `
ACALL ADD1 ;分计时单元加1分钟
) K$ B7 x3 T  F' c% IMOV A,R3 ;分数据放入A
6 ?$ u, Z" G# X8 v) Z5 n4 `CLR C ;清进位标志
; P; A- Y' I& F8 A3 t0 ECJNE A,#60H,ADDHH ;9 E+ W8 d$ s1 k+ {  m! Y
ADDHH: JC OUTT0 ;小于60分时中断退出5 I+ `$ E- g% g9 X$ }2 ], @
ACALL CLR0 ;大于或即是60分时分计时单元清0# z" f! U! w$ |* F# I7 x0 t
MOV R0,#79H ;指向小时计时单(78H-79H)5 P' i5 v7 H# i5 O
ACALL ADD1 ;小时计时单元加1小时
% E. L! Z) ?# V8 _( Y9 @. \! XMOV A,R3 ;时数据放入A2 D9 }5 r8 \: Q' t4 K0 u
CLR C ;清进位标志6 N# H0 u- v  l0 k& ]4 K
CJNE A,#24H,HOUR ;
) K, q/ T5 d; s4 @. sHOUR: JC OUTT0 ;小于24小时中断退出& P. ]; _1 ^9 t7 L$ Z
ACALL CLR0 ;大于或即是24小时小时计时单元清0
  ?9 O8 c4 R% p! _; [+ L( J' KOUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移
- K1 L0 U* p5 |$ ]: @- _MOV 73H,77H ;入对应显示单元
% J0 l5 b$ [, Y$ {MOV 74H,78H ;! [; ~! ^$ j) U3 \# }0 p" K* ]
MOV 75H,79H ;! @$ v# l2 `( c
POP PSW ;恢复状态字(出栈)
- T8 u  C( K' A6 Q  P! w, x( |) KPOP ACC ;恢复累加器5 B7 c& a1 z+ U1 {6 O# `
SETB ET0 ;开放T0中断
# x! y7 r# |# T5 R/ L( s9 [* R- cRETI ;中断返回
! ?4 }4 v! n$ A9 `/ A3 q( v;0 ?+ w3 O0 s! G. m8 Q
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/ g- l" P8 q3 m5 n- g2 J
;; 闪动调时 程 序 ;;0 o# k  {3 N6 T7 I6 K2 y. ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- f" H, x# e$ u  ?# \;T1中断服务程序,用作时间调整时调整单元闪烁指示9 }( p( E2 e( m; l( }
INTT1: PUSH ACC ;中断现场保护
5 b6 |" d# a4 ~5 }PUSH PSW ;
- X5 W- W0 |  d4 L1 \" Y5 hMOV TL1, #0B0H ;装定时器T1定时初值: _# o5 Q/ o, ~) N1 u) Y
MOV TH1, #3CH ;* O0 G+ u1 X* v5 ?" g. \* P2 z
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)- x, H' K7 y* I
MOV R2,#06H ;重装0.3秒定时用初值
3 A6 j8 Y3 F) V. l* j; E; OCPL 02H ;0.3秒定时到对闪烁标志取反
: a4 N' f7 N) M2 _7 }* FJB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
& {# w6 B  \5 {( X8 h: f. r2 s$ PMOV 72H,76H ;02H位为0时正常显示% m& R, V$ U) O. ?; M6 U
MOV 73H,77H ;
8 P6 T3 _8 J" _3 Y* G3 }0 yMOV 74H,78H ;- K. b( Y. v6 a* y; @
MOV 75H,79H ;
2 J& g  S  V- b. ~  @INTT1OUT: POP PSW ;恢复现场+ b: c3 ?. @  m# A% Y" X) Z
POP ACC ;/ `  M, L, f) I' z0 H$ b
RETI ;中断退出9 I+ N$ N8 z4 i! E+ r
FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制# @; D9 h% {9 @" }) Z5 B
MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分
" q' T/ l! T# U! \5 a' OMOV 73H,7AH ;显示单元(72H-73H),将不显示分数据, ?( B% g2 D7 v; F$ E6 T
MOV 74H,78H ;
  C" Y! W/ f; g2 A- a" u  U. h. nMOV 75H,79H ;3 Z: ]) O) [& K6 w6 l+ ]
AJMP INTT1OUT ;转中断退出; \9 x, i# c6 C2 ^  ^9 j+ _
FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时3 G' s" O: X7 @2 ~; W# M1 _! U
MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示4 \7 d  v1 e) k; J" ^! B" z
MOV 74H,7AH ;% O2 T2 A2 ?& v) y9 C( p
MOV 75H,7AH ;
' @. z0 r& F, f" gAJMP INTT1OUT ;转中断退出; O- W# k# C9 `3 _# t& G
;' ]& R) i8 L! v: l
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;! F$ _2 o% w( L9 x+ e1 ^
;; 加1子 程 序 ;;
- f/ s0 u3 S7 C  n# G+ X/ P, w6 W0 A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- r& q5 x( N6 d8 j, V
;8 j. n+ B" I1 E- u9 O2 ~) i
ADD1: MOV A,@R0 ;取当前计时单元数据到A6 ^5 H! x8 [, T/ d; v# j& v$ ~
DEC R0 ;指向前一地址- v3 t3 [) u% u' h
SWAP A ;A中数据高四位与低四位交换8 U- j# t5 P, X9 V' F
ORL A,@R0 ;前一地址中数据放入A中低四位
: F- T5 Y$ p" `( eADD A,#01H ;A加1操作
: ^; k: J: A" t' p9 pDA A ;十进制调整
( z& z* f( F2 W6 l, _/ z* M9 G: `MOV R3,A ;移入R3寄存器. D+ u1 ^: u9 `  c/ Q7 c- b  b
ANL A,#0FH ;高四位变09 y7 b8 L' c" b& W8 z8 E' a
MOV @R0,A ;放回前一地址单元  E: M$ |0 K9 o' w- C
MOV A,R3 ;取回R3中暂存数据& I2 t& Z2 m2 s5 g5 @. D; n
INC R0 ;指向当前地址单元
, U6 `0 C, Y; O5 z, MSWAP A ;A中数据高四位与低四位交换
8 |* T# V" {- T+ X) q3 G, ^$ c$ MANL A,#0FH ;高四位变0% `2 W/ g% l3 i; o' ~# r
MOV @R0,A ;数据放入当削地址单元中9 X$ b; ?3 G1 W2 z! V
RET ;子程序返回
: y% v9 O; H5 k0 V0 n$ D8 H;
, S6 z8 c- `: P/ h' ^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; g: A/ b3 M; g/ @6 v% L: k+ R
;; 清零程序 ;;2 S! l% ?9 C, c
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 m; b( U8 u6 u2 `" u8 ~' R
;.............
) `8 Z9 l$ e. v7 G$ h0 `;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;( Q: s9 U& R8 q5 V& r6 N3 q
;; 时钟调整程序 ;;
' ~$ Y3 E" }2 u0 j;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- e9 V* K: j9 ~3 g
;当调时按键按下时进入此程序
: H: F" f: @- ~7 w: Z. o& x/ oSETMM: cLR ET0 ;关定时器T0中断
7 {$ \( i. X0 d1 ZCLR TR0 ;封闭定时器T06 E1 `0 E; \7 _. U
LCALL DL1S ;调用1秒延时程序
; y2 }, n0 T( }+ N7 u1 ZJB P3.7,CLOSEDIS ;键按下时间小于1秒,封闭显示(省电)% b! a8 n* J5 p9 G9 b
MOV R2,#06H ;进入调时状态,赋闪烁定时初值# P; S/ Z# F0 U5 Z6 J, j
SETB ET1 ;答应T1中断0 ]& l# r0 J  u9 G3 X8 {8 d0 b/ }9 a
SETB TR1 ;开启定时器T1" t. I; g2 x5 F4 r1 j, s
SET2: JNB P3.7,SET1 ;P3.7口为0(键未开释),等待$ E6 R& x  a& m5 ]1 _
SETB 00H ;键开释,分调整闪烁标志置1" y$ v  M5 w  G
SET4: JB P3.7,SET3 ;等待键按下: b0 @3 {5 U/ K  m$ C; u4 y
LCALL DL05S ;有键按下,延时0.5秒. a- L, I2 s$ L+ h% i1 `& N1 `4 a
JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态
( O* r9 }# u  G8 l  P: GMOV R0,#77H ;按下时间小于0.5秒加1分钟操作" k+ o$ ?" R& d4 r
LCALL ADD1 ;调用加1子程序
& ]; O* p" z/ u; u& U5 N. O2 rMOV A,R3 ;取调整单元数据
1 J* S8 Y! N1 |3 wCLR C ;清进位标志, @0 L/ R- I/ G8 x, e1 C8 t# L& N' j
CJNE A,#60H,HHH ;调整单元数据与60比较
$ T) u2 h9 S+ _( UHHH: JC SET4 ;调整单元数据小于60转SET4循环
/ e7 E* J1 o* d- [3 j' s4 }LCALL CLR0 ;调整单元数据大于或即是60时清0$ u* r1 w) f( p
CLR C ;清进位标志) u6 J8 \- E1 K$ {3 [  H  \
AJMP SET4 ;跳转到SET4循环) z8 _3 ?* X9 \' r3 u
CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断' S) c2 a  ]1 N& J$ u' B3 p6 _3 V
SETB TR0 ;开启T0定时器(开时钟). g3 D- A3 s/ S  `; h! q
CLOSE: JB P3.7,CLOSE ;无按键按下,等待。) G) e: R8 N+ A; [* h3 b
LCALL DISPLAY ;有键按下,调显示子程序延时削抖6 }' A  R9 y: U
JB P3.7,CLOSE ;是干扰返回CLOSE等待
3 V* C4 P) k2 M" y" uWAITH: JNB P3.7,WAITH ;等待键开释: S6 o0 [% S" }$ P* d/ V1 a2 x
LJMP START1 ;返回主程序(LED数据显示亮)
; d# S% O- @7 ]6 g% D* `4 JSETHH: CLR 00H ;分闪烁标志清除(进入调小时状态), r; }2 o- ~1 q% M! B$ {. j% x$ J
SETHH1: JNB P3.7,SET5 ;等待键开释4 Y, i. G3 R6 Q8 q( m# L
SETB 01H ;小时调整标志置1
- M" U( K5 }0 NSET6: JB P3.7,SET7 ;等待按键按下2 @0 \$ ]# c% Q7 V8 |
LCALL DL05S ;有键按下延时0.5秒4 S- [& B0 D  F, o% D6 o4 y8 w
JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整
  i* [$ D2 h; d0 L* VMOV R0,#79H ;按下时间小于0.5秒加1小时操作
9 @1 q! J' D. \3 E+ CLCALL ADD1 ;调加1子程序
: h) _6 X7 x# o% @1 w5 |4 mMOV A,R3 ;( S. t+ r( h* @& M; r& w. h( H
CLR C ;  j. |# ~% m7 t, L. n$ \/ _7 g
CJNE A,#24H,HOUU ;计时单元数据与24比较
1 c5 ?3 b' s5 `* lHOUU: JC SET6 ;小于24转SET6循环
9 ], w. \, O6 w, L! e; SLCALL CLR0 ;大于或即是24时清0操作
$ y( z: Q0 Z* M4 Q% H; \4 s3 bAJMP SET6 ;跳转到SET6循环0 h* ^/ @1 @# x2 j
SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键开释
, W/ c# U4 e& ?9 m/ |: N/ g; J# QLCALL DISPLAY ;延时削抖
- t. K: e9 S5 n1 V& `3 @- A+ `JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待
+ g2 d% R: l9 I  yCLR 01H ;清调小时标志6 |4 l4 v( v2 I$ Y) d
CLR 00H ;清调分标志$ Z3 `- X5 q/ o3 f
CLR 02H ;清闪烁标志- x/ p8 g1 w, `& d2 D0 {
CLR TR1 ;封闭定时器T1
1 i6 h5 [: T* x0 ]) a3 qCLR ET1 ;关定时器T1中断
! T- p% K2 }6 N0 a% w$ k) @* @- j- }" cSETB TR0 ;开启定时器T0  f$ F( f* C4 @  G+ k2 {, H
SETB ET0 ;开定时器T0中断(计时开始)
2 s$ S$ }+ l4 ^8 }( B' |LJMP START1 ;跳回主程序. S( v% @( d1 A% w( x6 {
SET1: LCALL DISPLAY ;键开释等待时调用显示程序(调分)$ j7 [% X7 Y: L1 j; J
AJMP SET2 ;防止键按下时无时钟显示2 U: A, V7 J! h
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
9 H0 n0 y4 Q5 D9 U  i1 @* [/ vAJMP SET4) Z9 x. {: c! j/ B- q/ k
SET5: LCALL DISPLAY ;键开释等待时调用显示程序(调小时)
' n3 A4 O& x' U2 VAJMP SETHH1 ;防止键按下时无时钟显示
* ^4 B7 y) N3 I4 A; }SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用* |! U" M: n. T
AJMP SET6
! y, R: S: T: V' a& RSETOUT1: LCALL DISPLAY ;退出时钟调整时键开释等待4 _6 T1 U; G  B8 q% }. c
AJMP SETOUT ;防止键按下时无时钟显示
  F7 z! x" y5 `  L% Q6 |;, k" e% W1 L; o/ W" d8 h9 @- v
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;( M' ^; ^: Y5 i  T3 v
;; 显示程序 ;;6 t: {9 \: t  T2 g& \
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 Y) u+ e. X' P3 y9 Y% M$$$$$$$$$$$$$$$$$$$$$$$$$$$
. H6 \4 {/ m0 T/ R0 A- u: V  L+ X
;1MS延时程序,LED显示程序用$ b0 S' G. B) s4 C; k
DL1MS: MOV R6,#14H% v! }8 k6 ?" a0 j9 M: j
DL1: MOV R7,#19H/ k/ F1 C6 m4 k' J8 B! u3 N
DL2: DJNZ R7,DL2
( G8 k' `/ Q- D+ P( kDJNZ R6,DL1, E- B0 Z$ T6 x" s
RET0 O7 W: [& ?0 ~% z3 i3 V' Q
;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
+ s( _( R* J! r9 N+ }+ @DS20MS: ACALL DISPLAY9 _( G3 L$ j  ^" B3 ^8 ]3 C
ACALL DISPLAY
5 w, x9 t  n4 }* Q) x2 l7 hACALL DISPLAY
) A; r# C4 b2 c( e$ g. j' w5 v) q& ~RET
0 b( D/ c$ s4 v* _) T0 G5 ^8 H, B;延时程序,用作按键时间的长短判定
: B, U+ \8 i1 `/ PDL1S: LCALL DL05S
9 j% \$ F" h- w+ E* t% ILCALL DL05S
8 V4 e8 \& Y- p; v* `RET
0 y( @# F: h: u9 }9 E4 u# fDL05S: MOV R3,#20H ;8毫秒*32=0.196秒
. x5 ?, U0 }! }! i) l  T1 zDL05S1: LCALL DISPLAY1 m# ?( F9 T3 n! K! a  l
DJNZ R3,DL05S19 a. V7 i6 v3 j8 b& r/ U7 P9 z7 X. u
RET8 d% n  P+ N# h! k: t! P
END ;程序结束

5 q  e+ S/ k, w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2026-7-16 04:03 , Processed in 0.178192 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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