|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2010-1-29 21:12:33
|
显示全部楼层
DATEUP: SETB RS0;用到寄存器组1! }' a" y7 i- |$ q1 s8 g8 b
INC R7;日加1! r6 p% l! {& }* ^; @: M9 D$ m
MOV A,R7
" k1 p" S9 S* B/ W, p) N0 T4 U MOV B,#100, r; P, l. Y# t, _0 b
DIV AB4 B6 X# I8 o& G
MOV A,#10;余数继续分离十位和个位
1 V$ `& G7 \* n0 h; E XCH A,B
( v) T) Z' h8 x e$ e DIV AB; p! M+ o$ P$ g. Q
SWAP A& c% S: Y8 z, r3 y6 D- O
MOV DADISP1,A$ e y+ I8 T+ I7 _4 B, v
MOV A,B
: Z5 y/ y( o, c3 e3 h. _ SWAP A
! s3 A) l- Y, v; P6 l MOV DADISP0,A
6 D+ Q. l" l2 x, |% _9 L. v MOV A,R5;润年判断. I. q. U0 r' N5 X3 n+ d; S
JZ ISRUN
8 E- M+ g# B; F0 C* ~. n2 L) } MOV B,#44 \0 O! |4 c6 F* |
DIV AB9 r, D/ \8 k& ^$ l; l0 X
MOV A,B
! G$ E [4 R' g* F# d( S& } JNZ NOTRUN# w3 n) ?" O6 I6 u1 m) m3 ~5 A4 j
ISRUN:6 ^9 {, }2 A0 a- |6 _
CJNE R6,#2,MONTH1;是润年,当前月是否为二月
- D( r+ y' J6 u2 W) J CJNE R7,#30,TODUBACK0;是润年的二月,到29天?, O$ a$ I! S& w% `
MOV R7,#1;日第一天
* A1 k, @4 m/ {2 h MOV DADISP0,#2FH
9 E. \ T4 Y! w, e MOV DADISP1,#0FH/ C0 g- j/ ^! Z1 z
JMP MONTHUP;月份加一
) t' s+ b& F* HTODUBACK0:JMP TODUBACK" q: Y2 J, w, a
NOTRUN:
% n! F. x( w. m CJNE R6,#2,MONTH1;不是润年是否当前月为二月
: i, B/ d2 ~- t( `4 @ CJNE R7,#29,TODUBACK0;不是润年的二月,到28天?$ E' r' r$ R( }" C' E# V
MOV R7,#1% [+ A4 t0 s+ W' O- |9 H9 L' Q; p3 G9 B
MOV DADISP0,#1FH
' `* u4 n& Y; ^/ f3 u MOV DADISP1,#0FH
$ z' h- P) U3 |4 @" ]5 F JMP MONTHUP
# y5 `; N& k; ~& @4 }2 @MONTH1:
+ d5 h2 g/ z" ?1 ?5 a5 M- P JB 20H.0,BIGMONTH;大月吗?; H0 h& E" r5 a) n2 [
CJNE R7,#31,TODUBACK0;小月是否到了月底4 J# q9 r% W9 A U: N* M" K; g
MOV R7,#1;日重新开始 z: Q: B8 P/ R/ b, j; V
MOV DADISP0,#1FH* G2 [ M! q9 X; s: O- R
MOV DADISP1,#0FH/ z2 j' H. U: I0 k: r. x; g
JMP MONTHUP;跳到月加一' r" R2 N% {8 I4 l- d2 K9 a
BIGMONTH:# i0 X5 O# C% ]5 B1 m
CJNE R7,#32,TODUBACK;大月是否到了月底
+ j8 K. n7 v# B0 S MOV 7,#1;日重新开始
) N( G I1 J' L' l' X3 U, | MOV DADISP0,#1FH3 Q9 V! L; c+ G2 @3 V
MOV DADISP1,#0FH
+ |* G0 J! ^2 S. P( qMONTHUP:INC R6;月加一
# M' S) \6 Y# O1 s MOV A,R68 f6 s% |% {4 o: _. c Z
MOV B,#100
( A. m- C; k, O) e3 `, i/ M# E DIV AB
" I# ^% K' u6 G) \) C* b0 v/ M8 n MOV A,#10;余数继续分离十位和个位0 T, j3 c g( p' |" T- @' I
XCH A,B
- B5 b' r& D5 C* L! H DIV AB9 c$ |& F M/ p7 o1 ^- O3 c; e! Q
SWAP A7 u' |. Y: U S4 {; d& _4 g9 C; q$ M G
MOV MODISP1,A
0 b/ J1 N" h+ ^5 g( v! u& G8 ~ MOV A,B- |7 Q) v4 }3 {1 I, {8 U
SWAP A
! q3 l8 P" e7 X5 f1 }. E5 k P# J) A MOV MODISP0,A
; U6 W& a' J" w* l4 W6 K CJNE R6,#13,BIGSMALL;判断是否到了年底
) t* @0 n9 N1 ?6 V( a6 s- r9 a5 ~ MOV R6,#1;月重新开始' x3 S J) W9 E+ L
MOV MODISP0,#1FH
. [: f. W! Z; A; w: d; t" A4 g8 b5 Q MOV MODISP1,#0FH9 c% E1 c) B0 Z a
SETB 20H.0;一月大
- Y2 D! S4 b7 U! x8 [6 Z" u; e3 B JMP YEARUP
5 o' p1 }: J; J5 aBIGSMALL:
. z S( ^- L0 k+ }2 x/ O CJNE R6,#8,OTHERCON;是八月,则仍为大月
$ s5 q k) G; [2 z4 W SETB 20H.08 y# C' z1 K8 j- f- d
JMP TODUBACK ?9 i+ q) P( b- t- }) ]
OTHERCON:CPL 20H.0;不是八月,大小月与上一个月取反( ]$ E3 u# }, {
JMP TODUBACK
! t; q& }9 ]+ {+ QYEARUP: INC R5) r) h( z5 `2 k; Q2 D' F: z
MOV A,R5; ?" m. |$ l* V1 Z+ s
MOV B,#100
7 k2 }" z. i; _9 K. O { DIV AB
4 I5 T7 L5 r" d! v( e2 b MOV A,#10;余数继续分离十位和个位2 u, A/ I; b9 [. Q# O9 E. j
XCH A,B
) E r& O9 G: V' o! L0 s! b4 s. o. t' X DIV AB" f- R# K4 s4 u, s+ t5 l
SWAP A. t' p4 b7 E. Y9 L$ u# L
MOV YEDISP1,A8 l$ N9 H4 `* M9 `' U3 ?
MOV A,B9 m% D2 ^; G9 W q
SWAP A
, I" n# r. O! y MOV YEDISP0,A
" ^) [9 V: _4 Q, Y, ~, u CJNE R5,#100,TODUBACK7 M1 z) k( ?- U4 E0 S* w
MOV R5,#00;新世纪' V. X `& B$ S% |0 x, L
MOV YEDISP0,#0) ^4 j: G( A, G2 g; m) I
MOV YEDISP1,#0$ `, e1 L8 \" F. R% T
TODUBACK:! q. B7 U0 T5 k6 }
CLR RS0
$ g& T+ C/ p q3 P4 R RET
0 B( x" \8 T* w;时间显示子程序2 \! p e8 u5 M: u# Y/ Q
TIMEDISP:! D+ G' U% S- j- D9 B
JNB 20H.6,BB0
w! t v' f' B. [! I JB 20H.7,SNODISP) H7 G) t! T$ D7 a3 R, D
BB0:
2 L u) ]3 H1 t# i MOV A,SDISP04 U0 c" m, f$ f- S4 g
CALL DISPSIX+ r" @$ L9 N3 m/ X, m# t
; MOV A,20H
! h$ ^' p9 X$ C/ Q MOV A,SDISP1* T% }/ z& K2 Z) Y, [! v
CALL DISPFIF
& A4 D- a. m- t6 a6 [9 B* oSNODISP:
5 g( N" b9 a' \& U% A JNB 21H.5,BB1. X2 p0 V, X0 R$ E" U$ f
JB 20H.7,MNODISP6 p6 ]" O0 v N, h% x' v
BB1:
/ [* h( Y' q1 Y; ~. o MOV A,MDISP0+ i" p8 _. [5 P8 v) n j& S
CALL DISPFOR
& ]- N8 _- F' i- p' @ MOV A,MDISP11 o- x4 v4 }) K3 J3 Z. d
CALL DISPTHI( E5 ^9 \! n5 e+ D e3 X8 M
MNODISP:
$ @6 z% L( E$ [* t8 L; r JNB 21H.6,BB28 w* A3 |$ z2 e) c
JB 20H.7,HNODISP
5 U0 |5 ^# ?8 r" ZBB2:
+ l @1 a! S) s0 K) z MOV A,HDISP0
. F9 Y/ C1 P+ z5 E5 S CALL DISPSEC
$ T, V/ s9 T/ b' y MOV A,HDISP1
. Y0 ^& S4 {9 T4 X CALL DISPFIR
" P$ S- k& O% p1 A: A, W$ a8 ]HNODISP:RET
5 k6 v7 U" `+ _WEEKDISP:4 T( i q+ N0 W7 q, a9 Q2 z6 z
JNB 21H.7,BB3
, D# M$ z3 S$ I7 U JB 20H.7,WNODISP
' G) v& J6 g: kBB3:
* t# i U6 o2 |- b+ G% h0 k MOV A,WEEKDISP0/ g6 o. E. R, r6 O5 n7 B- n; j
ORL A,#0FH
9 h: e& v% i$ t0 }; p0 o* X3 Q( d ANL A,#0F7H
, I3 j. I, T5 i1 ? MOV P1,A
9 ^! n8 ?. [, k/ r! _ CALL DELAY
G7 G4 \$ x1 d) o1 r/ J; mWNODISP:
* p% u5 {% I" \ V7 F RET
5 s" A" X# O U7 `/ E4 b1 t& C m0 g' u2 M' @
;闹铃显示子程序
- o3 F3 t1 T' Z" j& `: hTIMER0DISP:
$ \! d N U; h+ Z, D; b JNB 22H.0,BB6;设定分标志位
- U6 r* b, _' @" D JB 20H.7,TMN0DISP' Y) \1 G' P b* C
BB6:
) Y+ S* Y! P' u7 e% J' [: d, U MOV A,TM0DISP0: _8 W1 \0 }( I- ]
CALL DISPFOR
$ A( C' h$ Q7 w7 |0 P* f5 O7 p MOV A,TM0DISP1
( O. X4 U; C3 O) K: M" l: {0 ]( a CALL DISPTHI/ @, e' M. f1 e, }+ g
TMN0DISP:- ~2 r$ D, t' |: p" ^
JNB 22H.1,BB7- O0 S+ [) q8 S8 g! q+ M
JB 20H.7,THNODISP( g7 B6 {+ d( @" z
BB7:
/ y2 {" s% E, t+ H MOV A,TH0DISP0
1 ~# a, O* h, G CALL DISPSEC& f' a/ N' J) {5 m) {
MOV A,TH0DISP15 H$ G* [3 K5 |, i
CALL DISPFIR
7 ^- d# ^0 K2 J# P9 W& d& v4 LTHNODISP:
( t& o5 _ J( ^: p c# ]7 u JNB 23H.1,TDRET;定时是否开启标志位 2 m% I+ A5 o- Q* w R4 e
MOV P1,#1BH/ x6 |) t" i$ A9 u' l( r
CALL DELAY) i3 A& m# m: r) J/ {
TDRET:: ?2 S; Z* U8 ~9 o' U: o/ z& Y/ j. [+ C
RET4 E" T" f5 F1 q1 s
TIMER1DISP:
$ x, E+ r) `, w JNB 22H.2,BB61;设定分标志位
9 k7 Q: V* E1 ?/ Q JB 20H.7,TMN1DISP8 v( V$ j' v$ z, Y8 z
BB61:. j5 [$ k8 k4 s( b
MOV A,TM1DISP0( Y6 Z7 U6 {+ [ [7 U) f) C% M
CALL DISPFOR' x( n% Y8 ^1 Y
MOV A,TM1DISP1! ?6 k- G/ X: x9 B% T2 I
CALL DISPTHI# C& `- h1 K' p/ n8 ?6 z7 Q
TMN1DISP:
2 o8 k8 b" d0 o* n' o0 ^0 a JNB 22H.3,BB716 P- v* p0 v0 Z2 G2 _( f
JB 20H.7,THN1DISP
9 C1 ]* g( |; C$ ^' jBB71:
7 C+ I. ]) r2 b. F3 q' B MOV A,TH1DISP0- b+ p7 g6 ]/ {$ n+ v: b' X
CALL DISPSEC
7 p2 f6 d* b0 a$ |$ f; B MOV A,TH1DISP1
1 \1 p6 Z/ J( l$ |, E CALL DISPFIR/ H) P9 i/ a; s' \4 `( \# G2 c
THN1DISP:
$ y9 A5 u0 c6 r) ]; @ JNB 23H.3,TD1RET;定时是否开启标志位 w! E y! s& R" d6 w( w8 o! }
MOV P1,#2BH# T! H% w: S _) T8 Q8 x7 R
CALL DELAY 7 d* u5 o. b- d" i
TD1RET:. s D, H: f) S- e6 L
RET
! H+ K: z- [ B) y0 t4 `2 Q;;;;;;;;;;;;;;;;;;;;;;;;
3 {% U) U$ q; M( J! eTIMER2DISP:
. j: H' T0 Q( e' q. u JNB 22H.4,BB624 h1 R! `0 d% n/ [" K/ y
JB 20H.7,TMN2DISP( f. \3 |$ K( m0 \7 D+ ?
BB62:
; ]% u0 B4 b( A4 F' z5 u# s2 U MOV A,TM2DISP0
8 ^0 Y8 }9 A% v& k1 S CALL DISPFOR$ j, R4 F+ b! Y
MOV A,TM2DISP1
. r% c: v9 B, F- ~" x( u CALL DISPTHI5 k' L& ^3 C0 _' V
TMN2DISP:' o' K8 b: L1 ^* u: n
JNB 22H.5,BB72
& l! w- j+ J2 ]& l E% P! p8 l( { JB 20H.7,THN2DISP3 N1 D: u! X% v" r7 m! E
BB72:& {4 x5 h: `$ v8 J2 f/ @9 M( ^8 J- `
MOV A,TH2DISP0
* X" f: b) A: o& M, l* ` CALL DISPSEC
$ b; Z# ]1 A5 I, c6 |: g MOV A,TH2DISP1" Z9 Q6 E2 F+ l1 ]. |: o
CALL DISPFIR - c9 P+ E. o; @1 @
THN2DISP:1 X8 p6 K/ y2 [! n
JNB 23H.5,TD2RET;定时是否开启标志位 ) p9 h0 a! _9 G% R
MOV P1,#3BH; h% w, a8 n/ W; o! h7 ^4 c7 M) a
CALL DELAY
" d! u; x1 u Y( e& m) M+ Z3 E, |TD2RET:
# q* |0 L. ^* I3 ^ RET
- [- y2 A$ g5 o1 q, @
% _' p$ d; v5 Z+ d0 wTIMER3DISP:
- Y" R: u8 d) r5 \+ l JNB 22H.6,BB63. [: |& P9 y0 c: K L$ j/ X
JB 20H.7,TMN3DISP0 V& H, `% a/ \, b
BB63:
4 N0 Q, e9 g* ~/ G! @ MOV A,TM3DISP0& u) @% W5 m- B! J S7 @
CALL DISPFOR
7 H7 y" R. c. X. g* o% ~5 p; v: c' i MOV A,TM3DISP1
' n ~ T: }0 H CALL DISPTHI; A' l$ n) S5 O/ B
TMN3DISP:
- o/ T) a9 N' M ]* } JNB 22H.7,BB73. t3 g6 g7 S3 p4 Y
JB 20H.7,THN3DISP
! I3 J' P+ \! B4 O$ P. N5 QBB73:
9 x$ l% o3 s& C MOV A,TH3DISP0
+ F; u6 z0 X7 T9 {7 s CALL DISPSEC/ ^: N. {; q8 G& [5 N2 B/ R2 \
MOV A,TH3DISP1
3 |8 m, _; g7 [5 x1 e" w CALL DISPFIR 9 m. q( f p( N4 m* u0 k
THN3DISP:
, F, ~ X# u ?# u' T/ R JNB 23H.7,TD3RET;定时是否开启标志位 3 X/ O( N0 w* r% ]6 k
MOV P1,#4BH1 A0 k( K( C9 w
CALL DELAY ) o" [- [* b) ]3 V0 P6 ?
TD3RET:! |+ x( y8 Z; e2 E
RET
+ _* r# ] H+ ` {. U;;;;;;;;;;;;;;;;;;;9 D* Y7 Q: p! D8 S
DATEDISP: 8 Z9 d6 b2 P9 t+ }
JNB 20H.1,BB88; Q* g/ n1 N5 i5 H5 B V9 e
JB 20H.7,MONDISP
- l% t* `! w" p ^BB88:# D' ?" O8 F/ s4 |5 _( I- B2 h7 C
MOV A,DADISP01 q5 j! K& m; g8 W9 x$ h; a
CALL DISPSIX
) P- t; l, W8 D# A) @ MOV A,DADISP1$ S* F6 E% v8 Z& h7 V$ L/ T0 K
CALL DISPFIF
2 ^: i+ [" z& G/ iMONDISP:4 h0 l8 ]; M5 p% k, A1 q
JNB 20H.2,BB99+ b7 G' _2 y0 A
JB 20H.7,YENDISP; |+ T7 p) H Q& E, R* g4 Z& X
BB99:5 @/ n# m3 b1 p
MOV A,MODISP0" X; z" H' s1 T
CALL DISPFOR
* U9 [6 x9 D, d$ [8 |/ D MOV A,MODISP1$ k% Q! U/ |, {+ }9 [5 i
CALL DISPTHI
: P) U. m9 @. zYENDISP:9 @4 [9 ]9 ?$ N% ^1 z# _
JNB 20H.3,BB892 o H1 v3 r, P+ O9 k1 T2 u/ S- }3 [
JB 20H.7,YDISRET
+ s' F) E3 N0 \3 j; j& [& r4 WBB89:
) Z. S: b* l0 D MOV A,YEDISP0
. Z% E$ N" o& n) q CALL DISPSEC3 d+ n V( r* L* @
MOV A,YEDISP1
' G% H! T3 {' {# y CALL DISPFIR9 l7 |: O5 G% o/ C3 w: G
YDISRET:
' H# S1 T. w" z0 X$ C u RET* m! X5 G# ?# z$ n- I
( R! t' p) u" e1 Z- F- ~9 _;定时比较子程序
8 f* L& k3 B; B# K8 i' |COMPARE:4 b& ? }+ a9 l0 w
CLR 23H.0! S+ I* b2 ?2 R! Q: D- w" ?
SETB BEEPOUT
V& _. ~/ \2 f3 c. P/ a; n MOV A,TIMER0M;取第二组寄存器的R4,即定时分的存放值. N h" l8 `* v6 ^" @* m
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较
4 E' ` n( O2 k. W- H8 q MOV A,TIMER0H;取第二组寄存器的R2,即定时时的存入值
N) t) |; a& u Q$ |- M6 [0 Q CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
3 O8 l) d$ Q" D" W W$ R4 O SETB 23H.0
9 Q4 n4 ]% U! z3 _) N CLR BEEPOUT; U5 M1 d1 S& F' N3 ]
RET% `+ p2 i1 J3 O3 i. d% O' V
COMPARE1:
' |4 L2 O. k$ K$ G/ C7 p1 `# ?' { e: u CLR 23H.2
! b( K, P- F( n+ L5 J4 n. E SETB BEEPOUT3 f* s+ {# _5 d. t2 A5 x! W
MOV A,TIMER1M;取第二组寄存器的R4,即定时分的存放值# D( s! }: j B7 y: j! C
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较
/ ?# i) D- L; \. S$ j6 [ MOV A,TIMER1H;取第二组寄存器的R2,即定时时的存入值 f# T/ `6 D O$ e; T
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较" _+ ~. u" k7 L! N: s, Y
SETB 23H.2;定时时间到,准备开启BEEP& e! u$ i- L9 P
CLR BEEPOUT
4 t" a/ n) j+ g" _8 {% L. u RET
5 U$ E. }, J/ A+ m4 X4 DCOMPARE2:
; o3 G( W* o9 z0 C4 n CLR 23H.4# M6 I* h* V( b
SETB BEEPOUT, k1 G8 C2 y P+ W) s8 K. D
MOV A,TIMER2M;取第二组寄存器的R4,即定时分的存放值& \5 @+ G: k. w6 s3 y
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较+ x8 l( w' U& C0 y0 M0 j& w9 R
MOV A,TIMER2H;取第二组寄存器的R2,即定时时的存入值: H9 s+ X( S, o2 u2 v3 m6 k
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
( _: U9 x3 K7 g+ k/ f* L* b( ^ SETB 23H.4;定时时间到,准备开启BEEP) J0 q* n" H5 v4 q3 A/ d
CLR BEEPOUT% n0 c" ^$ v% E: U) o O) Y& n1 g
RET* R$ ^: E7 b4 l# p5 N
COMPARE3:
" ~+ Y0 i, R2 E' V# K' Q CLR 23H.6
5 p4 [" K; a0 X SETB BEEPOUT( u- X( N; V0 I
MOV A,TIMER3M;取第二组寄存器的R4,即定时分的存放值, r d6 {. r+ e9 J o- N2 r: G7 d
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较, E2 F7 _, @% |% [& V% B) L
MOV A,TIMER3H;取第二组寄存器的R2,即定时时的存入值% O* o$ h4 o8 \, M# U8 f
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
- o3 I" R' o$ c6 Q SETB 23H.6;定时时间到,准备开启BEEP" q5 v( }$ E/ t9 W
CLR BEEPOUT {# `/ B0 {4 c
NOTEQU:
6 m- J( i, \& V6 j/ v- o E% d RET
2 W) w! T, F" o/ f6 }, h1 @3 N7 X" R5 G
;延时子程序; ? Z$ @1 N4 s
DELAY: # B, u! C" N3 e' {0 C* @
MOV R7,#05FH
5 W; V( D7 C8 E DJNZ R7,$ Z* q5 {* O3 v0 Q
RET
' F j1 @; F. C8 D4 m# X' t! @2 L$ q3 T1 P4 Y
;显示
( x' f7 J! @: ^& W4 Y/ a
- p( ]; ~# L, Z r+ }& PDISPFIR:/ X, u5 l- a& a { [! y
ORL A,#0FH
1 U2 f: D* y6 V7 \7 Q* w7 b ANL A,#0F1H
9 Z5 W3 t; u U4 _& R. i MOV P1,A
6 G& t E9 r& I CALL DELAY/ B0 {7 t0 y- h3 R: q
RET( k$ d" [) \; ^% K9 U0 W# ^
% _/ _/ [& V* h3 C
DISPSEC:
$ Y }: R p4 j" {; Y ORL A,#0FH0 \; b5 V4 g' [, `* L
ANL A,#0F9H
+ f, h: |1 [, ] MOV P1,A' Y7 v/ p, H2 Y- g
CALL DELAY7 A) B% g& b- j* {
RET' M% a0 q3 }' U6 |- y
Z0 V4 G: y' G2 o1 ^
DISPTHI:0 j! Y' ?6 S; I
ORL A,#0FH- a1 f4 J4 w/ H5 _
ANL A,#0F5H J( X6 f# Y/ x' D
MOV P1,A
4 I7 y' G, b* e, D( P) y9 ` CALL DELAY% E" S/ H0 |0 N0 W5 W% R7 e) ^2 ?+ S
RET' g/ o9 n( H5 U- i" s. \6 i& @
# c5 X4 ]( M- s" f) ]8 S9 h- F+ V* Z3 LDISPFOR:
* a( {! ]% {# N2 E+ w% A |
|