设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2011-6-11 20:13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机作的电子钟程序在很多地方已经有了介绍, 对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序, 基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分, 计算部分, 时钟调整部分构成。 6 d. _8 {1 s/ l1 ?& [, O
    时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其他位均以此为基准往上累加。
$ q) [0 i* z8 r- b% w    开始程序定义了秒, 十秒, 分, 十分,小时, 十小时,共6位的寄存器, 分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。
! D- t3 b4 y$ g; g( }- m    6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。8 u8 F- E3 H2 b, o9 A( X0 N: J  w
7 ], c* _8 T7 e1 c( d
3 X1 I6 r/ ]* H1 V

; S$ A/ h# w+ H: q8 ^/ L/ T
以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。
& K* J( x  B0 p5 Y' Y& @# K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 w5 P1 y& {2 d5 u;; 中断入口程序 ;;  (仅供参考)
! V2 j3 S5 Y: Y* d;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! d+ n. Q; }: Q6 ];
5 Q7 [, G9 H3 n6 c# zORG 0000H ;程序执行开始地址
5 C1 o( X' ~  G  {$ eLJMP START ;跳到标号START执行
0 S% _3 K/ _+ i7 i# s/ a5 ]ORG 0003H ;外中断0中断程序入口
% }  w! y# ~  O9 a: bRETI ;外中断0中断返回
- e! a( ~- E$ t$ b* N; v+ l4 }& x( pORG 000BH ;定时器T0中断程序入口
3 f; o( i3 G0 d, P' V  rLJMP INTT0 ;跳至INTTO执行
4 _" }9 v: v- f7 A2 ?ORG 0013H ;外中断1中断程序入口
8 l! n: R# u1 Y/ o% J+ F1 DRETI ;外中断1中断返回
5 M2 r& T8 |+ J. S7 wORG 001BH ;定时器T1中断程序入口
  \& X: _$ m: R2 RLJMP INTT1 ;跳至INTT1执行
7 N6 T4 ~  ~  e/ B# fORG 0023H ;串行中断程序入口地址
$ j" N2 [/ L. y, \) ORETI ;串行中断程序返回

1 d# W( [( W# B$ W! r4 N) H7 R;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0 _4 ]( G+ \6 Y) v( O;; 主 程 序 ;;. l( K4 J* C2 m1 t5 _
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;% c9 d0 p7 s! K  t. l
;
1 H" N. k! g5 O% }START: MOV R0,#70H ;清70H-7AH共11个内存单元
5 r9 r) K2 _3 A5 X. y+ m6 uMOV R7,#0BH
/ \6 j9 B9 G7 k;clr P3.7 ;
; F" b+ A2 Q( g) h0 ?0 BCLEARDISP: MOV @R0,#00H ;; M$ `9 V& c8 ?8 w+ ?- c5 b
INC R0 ;" p+ }  f% X/ \5 A
DJNZ R7,CLEARDISP ;
4 e  M8 Y, R4 b2 X- }MOV 20H,#00H ;清20H(标志用)
( O4 ^: Z! _' O' X/ a4 r+ vMOV 7AH,#0AH ;放入"熄灭符"数据
) i( H& N8 m2 MMOV TMOD,#11H ;设T0、T1为16位定时器: i- M- Y5 n9 e' `9 _$ _
MOV TL0,#0B0H ;50MS定时初值(T0计时用)* S$ G" F0 e' T  g' K# `; A- R5 D
MOV TH0,#3CH ;50MS定时初值
6 j+ E7 ?& x7 Y) fMOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)2 j/ k' p. u  Q9 q1 ~( n$ l# ]3 Y
MOV TH1,#3CH ;50MS定时初值
  z/ O8 f' s% e+ ^SETB EA ;总中断开放/ B, A( n7 @" V) s2 j. q( |
SETB ET0 ;答应T0中断
7 @* k/ Z1 K( ^2 p' ?( U- RSETB TR0 ;开启T0定时器  F/ v- D2 [9 k8 |, o3 u
MOV R4,#14H ;1秒定时用初值(50MS×20)3 h6 @* _. f; Q% g; g
START1: LCALL DISPLAY ;调用显示子程序
1 X2 m& @2 T6 d" l5 p6 d. [JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 : z! E7 ^) s; q" ~6 b. a6 e
SJMP START1 ;P3.7口为1时跳回START1, ~  u0 i; t1 B) E$ Z
SETMM1: LJMP SETMM ;转到时间调整程序SETMM
+ g! N. A3 J2 L1 u+ f/ ?;
0 B/ {6 S0 {- w" H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9 |# P& N. o; e' R+ p" W' X;; 1秒计时程序 ;;
, @9 \' ~# H7 _( R( N- S8 g) [;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 |! k$ u) h! S- _1 R;T0中断服务程序6 h/ S5 ?3 C  F5 ?
INTT0: PUSH ACC ;累加器入栈保护
" O1 Z/ W# p- A, [PUSH PSW ;状态字入栈保护. |- I" u& a  {$ Y# X% I. R- ?/ _
CLR ET0 ;关T0中断答应$ H. ]* u1 z! t9 o4 d% \
CLR TR0 ;封闭定时器T0
! B- p" |; W2 AMOV A,#0B7H ;中断响应时间同步修正: O0 A2 Z. ~' H: y* F5 B
ADD A,TL0 ;低8位初值修正3 c0 M  b3 E: R6 K$ o% V& N
MOV TL0,A ;重装初值(低8位修正值)
% M! k% C* s# MMOV A,#3CH ;高8位初值修正6 b" `. C6 k) c, ~) K/ g6 `
ADDC A,TH0 ;
  W0 \6 k9 o# [! ?# r9 U% tMOV TH0,A ;重装初值(高8位修正值)
' @+ p4 O7 A. L4 ]8 MSETB TR0 ;开启定时器T0
1 `( f. K& v. r; |0 eDJNZ R4, OUTT0 ;20次中断未到中断退出( f, A( k; w1 l" R( b4 Q
ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值
$ J9 b# b( ^; F! bMOV R0,#71H ;指向秒计时单元(71H-72H)
) l2 T5 a' Q5 ?. _+ q/ [ACALL ADD1 ;调用加1程序(加1秒操作)
- J5 E' g( `2 j' uMOV A,R3 ;秒数据放入A(R3为2位十进制数组合)* J  c/ O0 {. S% D1 d/ M
CLR C ;清进位标志
& W: Q5 x$ `9 j, c9 \2 yCJNE A,#60H,ADDMM ;
% W+ [, v0 A) x; c6 U& UADDMM: JC OUTT0 ;小于60秒时中断退出8 Z  m" W6 e! ~
ACALL CLR0 ;大于或即是60秒时对秒计时单元清0' o, }+ z. J9 e" g; u
MOV R0,#77H ;指向分计时单元(76H-77H)( ?" W8 P& \. ^+ E
ACALL ADD1 ;分计时单元加1分钟9 s0 ~3 R; G( D0 v2 j& @
MOV A,R3 ;分数据放入A
& _: H* I' L$ hCLR C ;清进位标志
' P7 G; q7 ^, O/ j( l  G# h( lCJNE A,#60H,ADDHH ;3 j6 q. g* \- E+ i) D
ADDHH: JC OUTT0 ;小于60分时中断退出$ f9 P3 e; ?) [8 _3 t
ACALL CLR0 ;大于或即是60分时分计时单元清04 e  P/ P  h! m8 [
MOV R0,#79H ;指向小时计时单(78H-79H)
7 V7 F& {; t; P. P' j/ Y: n; G1 sACALL ADD1 ;小时计时单元加1小时
7 }2 H& W4 |  F: Z; a# wMOV A,R3 ;时数据放入A3 s5 p+ M6 R) C" G  O
CLR C ;清进位标志
4 O! {0 M9 |0 b1 p* T; m! W" [CJNE A,#24H,HOUR ;
0 x6 Z4 J* h' u) n: E! G: G: @1 dHOUR: JC OUTT0 ;小于24小时中断退出
& A) Y/ s: X8 a% y9 i+ ~ACALL CLR0 ;大于或即是24小时小时计时单元清08 X& I$ y0 O/ u- y4 K& y
OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移# ?: P. T* d0 p! a
MOV 73H,77H ;入对应显示单元
5 d5 A# G9 J. P8 S: S. n) dMOV 74H,78H ;& i) B' D1 q  v2 }8 ?, ~5 D
MOV 75H,79H ;
1 E! T" f  z! V: N3 mPOP PSW ;恢复状态字(出栈)
  L7 a% B5 w& R+ v! R0 q6 XPOP ACC ;恢复累加器5 K; O5 ~' f8 P" f3 W+ {2 F
SETB ET0 ;开放T0中断
4 T& w5 Y' S: E( l) ~5 M4 _5 T$ TRETI ;中断返回; H  n) J% c7 H# p) R) U
;
9 i, E, W( D6 E. b  h: u;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0 `; z" ~8 C2 s0 ]1 H;; 闪动调时 程 序 ;;- d( q4 t" n( n& N) l' N' b" x
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! x3 w+ B8 s6 B# Q, Q1 Y;T1中断服务程序,用作时间调整时调整单元闪烁指示
  H6 v; k9 N$ L$ rINTT1: PUSH ACC ;中断现场保护
2 v, q7 o/ q! G. F1 {3 iPUSH PSW ;
8 ~) h* c0 m! W6 E" qMOV TL1, #0B0H ;装定时器T1定时初值
, T* n/ [' }2 Z/ A; T  x/ fMOV TH1, #3CH ;* _1 r) G1 e4 e1 H
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)
5 r7 L. `2 u2 j# ?7 G. GMOV R2,#06H ;重装0.3秒定时用初值
, S8 x/ r4 ]; ?5 p4 ECPL 02H ;0.3秒定时到对闪烁标志取反2 M; R/ N  c4 A# q' U" ?( Q
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
9 Y+ a7 g3 B8 ~2 V( j+ M' {' t$ IMOV 72H,76H ;02H位为0时正常显示. u& R% w' k2 s3 F3 ~+ r; u
MOV 73H,77H ;5 M3 d: T, z4 A9 @
MOV 74H,78H ;4 W, ~  @7 p9 T& u5 v5 v
MOV 75H,79H ;
$ N+ v1 {) `# N9 f4 R9 N% p3 vINTT1OUT: POP PSW ;恢复现场
; E' Q: ^0 o# a/ kPOP ACC ;
7 C; F+ m1 V, BRETI ;中断退出
" t6 Z& [: Y' o3 EFLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制
  n" ^" H8 j% Q3 q0 C& yMOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分
9 Y0 L5 |7 ?( K$ H( VMOV 73H,7AH ;显示单元(72H-73H),将不显示分数据- x4 L# e% i/ n. ?1 t7 _, [( R- C
MOV 74H,78H ;
$ }% O: ^( {0 L9 \& A. g# b1 \MOV 75H,79H ;; E" _, b1 F/ C+ a) U$ }$ b- @1 t  A+ p
AJMP INTT1OUT ;转中断退出& y% q4 R# A  J
FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时  X9 i& ^6 H; a/ J; _- ~
MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示
) _, j  ?  d& [, {* GMOV 74H,7AH ;
4 S& j- b! n/ |/ B$ f+ |" rMOV 75H,7AH ;
8 F# z0 Y( `6 v9 ^2 Y  [0 m2 IAJMP INTT1OUT ;转中断退出
( T1 H) }1 C1 j5 b2 q' ?# q8 x;
/ w! Q* I8 h9 C) K5 d  E7 C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4 M9 M1 W1 a% r
;; 加1子 程 序 ;;
0 M6 @' {7 ?* o;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 K) h* Y$ F+ M( T) H6 {;5 ~4 I  c$ W0 x" Z0 d2 k" v
ADD1: MOV A,@R0 ;取当前计时单元数据到A3 X* x( A; P# \! y9 B
DEC R0 ;指向前一地址
! |2 ?  a4 E9 a6 g  g/ LSWAP A ;A中数据高四位与低四位交换
: i+ \9 Y1 d$ v4 T0 j5 sORL A,@R0 ;前一地址中数据放入A中低四位
5 Z( P, u! N* n9 wADD A,#01H ;A加1操作
* k5 K4 }  s3 g2 Q/ Z: R  V8 CDA A ;十进制调整0 F# z$ A! W/ ?$ g& T8 a
MOV R3,A ;移入R3寄存器6 q( e) D% _  J% ?4 m
ANL A,#0FH ;高四位变0
4 ]8 w! n# u# r5 n$ xMOV @R0,A ;放回前一地址单元
" R* ~' R% u' V& Y  M9 D' h- zMOV A,R3 ;取回R3中暂存数据
% s8 W2 \1 |) DINC R0 ;指向当前地址单元
# N9 H3 Q  ~8 F- ~; |, ^SWAP A ;A中数据高四位与低四位交换
. l1 J% {9 v, mANL A,#0FH ;高四位变0
& R# z  F' t( s( |9 c/ iMOV @R0,A ;数据放入当削地址单元中
  H+ l& N' I5 O* R9 ^5 KRET ;子程序返回
) x. N4 c7 F7 O: a6 P; D3 m4 j;+ d3 p0 ^- u& }' o' _  z. U
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 S, v5 w1 i0 ]: C. g8 G
;; 清零程序 ;;
8 j% R5 P! p0 z/ r;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7 Y  x" q. r3 t7 A3 N  p1 p;.............# W! f. Y$ I. p8 S' V3 N2 L
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
. Q2 q4 x1 |$ [" T7 \: m3 ~1 D;; 时钟调整程序 ;;9 a4 X( O! q  `# A1 n/ ~  _+ S2 ]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& G( G5 I9 e9 G;当调时按键按下时进入此程序
# _- _$ ?8 }4 v" L0 r3 w4 nSETMM: cLR ET0 ;关定时器T0中断( N% W  [& k9 Y8 r3 m
CLR TR0 ;封闭定时器T0: _$ a5 D5 [$ r
LCALL DL1S ;调用1秒延时程序* x2 {& s$ n+ x& H& O8 k9 _; Z* D
JB P3.7,CLOSEDIS ;键按下时间小于1秒,封闭显示(省电)) O3 `! |; A$ ~  a
MOV R2,#06H ;进入调时状态,赋闪烁定时初值
- k% {& N. k7 J3 ]0 N8 a# h* m# KSETB ET1 ;答应T1中断6 I6 b. i/ E$ `8 @
SETB TR1 ;开启定时器T1
6 E  N( f: Z9 ~, F& e6 Y0 N7 gSET2: JNB P3.7,SET1 ;P3.7口为0(键未开释),等待
* e  ?" A6 y# F; O5 k5 HSETB 00H ;键开释,分调整闪烁标志置1
9 B) h3 a) n+ B( a' QSET4: JB P3.7,SET3 ;等待键按下# C0 r+ a3 b: b
LCALL DL05S ;有键按下,延时0.5秒
  k0 @. Y" I! y/ ?4 m6 O' G6 mJNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态+ K" g# Q* L5 q2 ~! q
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作* q& g: @5 x$ N5 m% ?
LCALL ADD1 ;调用加1子程序8 B0 S: h* |" }' O0 G) d' R1 s
MOV A,R3 ;取调整单元数据
9 e$ U4 ^; q$ S( h$ g4 ^+ WCLR C ;清进位标志2 B) J+ ?+ A6 }% E9 r4 u4 {
CJNE A,#60H,HHH ;调整单元数据与60比较' R+ s. |9 x, q0 Q! d' n* r) {
HHH: JC SET4 ;调整单元数据小于60转SET4循环
; y& B6 Y& {, W* ^, E) e1 C3 {LCALL CLR0 ;调整单元数据大于或即是60时清0
6 ], z' `4 T4 PCLR C ;清进位标志
$ i- |1 Y% y, J& ]% I6 o! vAJMP SET4 ;跳转到SET4循环
0 K+ t/ r" o$ XCLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断* t4 r! U+ i# m0 N7 f- g1 e
SETB TR0 ;开启T0定时器(开时钟)8 T; P! y$ L- L- A) Y, j$ _
CLOSE: JB P3.7,CLOSE ;无按键按下,等待。: K' s+ ~# B/ M/ q
LCALL DISPLAY ;有键按下,调显示子程序延时削抖" Q8 d0 m7 K: Z3 s8 T
JB P3.7,CLOSE ;是干扰返回CLOSE等待
5 ?; s$ {8 E0 p4 P) \& p: W1 e. ZWAITH: JNB P3.7,WAITH ;等待键开释( ^  `: b* B5 g* o% e$ n
LJMP START1 ;返回主程序(LED数据显示亮)4 R0 v/ S5 I  Z, J6 l
SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)3 H/ ^( S: K. N; Y& i  C- M
SETHH1: JNB P3.7,SET5 ;等待键开释
3 c4 |6 x; v# H; USETB 01H ;小时调整标志置1
' y+ u, H4 ]3 e8 wSET6: JB P3.7,SET7 ;等待按键按下
- _& r' N! b9 z  r. }9 gLCALL DL05S ;有键按下延时0.5秒
! b% p' E- ?8 Y7 \+ F6 @JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整
- a3 `2 W5 t! _9 E; s" G) d5 }5 TMOV R0,#79H ;按下时间小于0.5秒加1小时操作
5 i: S, R) f( f( _: F2 G! r$ XLCALL ADD1 ;调加1子程序; J+ W3 z: \/ V& k; O
MOV A,R3 ;; D: L. G0 Z& k8 g9 k
CLR C ;
( b- I: }3 }% V' `% Z5 sCJNE A,#24H,HOUU ;计时单元数据与24比较8 d! y9 q7 F3 R) v6 V# p# g; e
HOUU: JC SET6 ;小于24转SET6循环
5 Y6 T, O  [% p5 d' z' |LCALL CLR0 ;大于或即是24时清0操作' x3 E1 j) }1 V! w+ I: a' N; l
AJMP SET6 ;跳转到SET6循环; ?# J2 j9 u( v5 @1 h
SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键开释; R8 G6 n3 A4 o! c
LCALL DISPLAY ;延时削抖; h3 y; t, Z* I9 S1 @! ]. ]3 Q
JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待1 v, c( p8 F5 |: P% k0 ^/ X
CLR 01H ;清调小时标志# Q$ d) @) v6 U0 N8 ^1 }' ?) B6 e
CLR 00H ;清调分标志( u( D) a9 g; S$ M1 y
CLR 02H ;清闪烁标志
# q' E; X/ u6 P  LCLR TR1 ;封闭定时器T1* V& P' p% M' }0 ]1 }5 o
CLR ET1 ;关定时器T1中断/ v4 |3 C2 w) T+ T! k) Y% W
SETB TR0 ;开启定时器T0# q' W* @' X& J1 L
SETB ET0 ;开定时器T0中断(计时开始). }0 s: l0 i* g$ [$ O
LJMP START1 ;跳回主程序7 t# J9 ~- n0 i6 U
SET1: LCALL DISPLAY ;键开释等待时调用显示程序(调分)
3 k  G) T$ d, q& m( S/ mAJMP SET2 ;防止键按下时无时钟显示" C9 \' [6 _% l9 b7 c9 ^
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
9 [' \% S  \5 [AJMP SET4; {* I, a* j4 [9 f
SET5: LCALL DISPLAY ;键开释等待时调用显示程序(调小时)
* b2 ~8 b2 h0 |! e1 ?( JAJMP SETHH1 ;防止键按下时无时钟显示
% d3 B8 p0 o2 c4 ESET7: LCALL DISPLAY ;等待调小时按键时时钟显示用
9 p7 W. B0 C# TAJMP SET6
9 r* W- h6 ]3 D8 E* U9 LSETOUT1: LCALL DISPLAY ;退出时钟调整时键开释等待
- w+ S9 ]; G) `- C# Q3 cAJMP SETOUT ;防止键按下时无时钟显示/ l. S& o& N/ F' V* a" a
;' V2 ~# M& `( M: ^
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 e. z# T% J* \2 e;; 显示程序 ;;! f9 M  M$ q& `; s) J0 G1 g
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# f7 ^$ |0 H* h$ v0 ~# v$$$$$$$$$$$$$$$$$$$$$$$$$$$

$ v" A5 U  g* T8 `. Y' ~4 k;1MS延时程序,LED显示程序用
5 R5 h3 g1 c% l' P" _DL1MS: MOV R6,#14H
* z# g- `  S& ?4 w4 |0 I1 z- a9 b' GDL1: MOV R7,#19H
8 Y  k& t8 \3 V( J% mDL2: DJNZ R7,DL2
. ^& [# _% @0 G, Z' t2 _DJNZ R6,DL1
: C0 ^! P$ m1 G7 T5 S9 C2 f. ?- ARET4 b+ b1 C4 |! g6 E" B3 C
;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
3 d, s* l' [; B: C& h# @8 ]DS20MS: ACALL DISPLAY  r1 M) h! ]) B, d8 ^  k# T. Z
ACALL DISPLAY1 [/ n! y) ^8 z3 V& R2 ?/ c5 x
ACALL DISPLAY
3 h9 n+ m( h/ f/ S1 oRET
& Z, n4 d+ q# ~0 q& L. o;延时程序,用作按键时间的长短判定
( I* F+ }3 S% Q7 ^3 E( kDL1S: LCALL DL05S
- X* o' V7 d; Z! I0 kLCALL DL05S# Y$ M7 }8 }- C
RET/ P' G7 t7 t; @" B, G# h
DL05S: MOV R3,#20H ;8毫秒*32=0.196秒
8 k8 _% v- E: U) `1 H: bDL05S1: LCALL DISPLAY% }6 L9 {% k* Q* O
DJNZ R3,DL05S1
, L3 e$ I) `( N) }) w# @1 G% XRET  d6 b; s: r# |3 [$ V' a
END ;程序结束

" q; @  h- n- l' U- y% h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-11-14 15:28 , Processed in 0.145795 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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