|
楼主 |
发表于 2010-1-29 21:12:33
|
显示全部楼层
DATEUP: SETB RS0;用到寄存器组12 a2 S% ^6 S' R. U# p4 k
INC R7;日加1
) j. \' Z1 E+ ` MOV A,R7
$ u9 y I8 N* Y8 Z5 f MOV B,#1003 A: s- L; @! J4 K2 R. n
DIV AB
: U" ~* N: ~) N, r7 s7 k5 `# n MOV A,#10;余数继续分离十位和个位) } Q% B5 U$ `) Y
XCH A,B( e1 A1 ?" M5 }: K
DIV AB
3 J# _& |. Y0 w4 O8 Y SWAP A
L# b: R8 r, I MOV DADISP1,A
5 B8 w- R9 [& B6 c MOV A,B6 F, U; i7 ?6 |. }4 d4 [# {
SWAP A
4 q5 ~. H) Z- J" _. V MOV DADISP0,A
8 r v0 f/ a/ t' m$ q" U MOV A,R5;润年判断 j8 w: P# k$ K& l
JZ ISRUN
4 `2 q! B" s1 W1 S' L MOV B,#4% v% t0 W% Q% ~6 X, @+ L. [$ f
DIV AB
3 E/ I* V4 ~! A- r+ t- h1 I MOV A,B
4 D# T# O8 R: k) u! A JNZ NOTRUN- i2 T+ ?% W% ~9 W& v! F$ F
ISRUN:: g. d8 Y# G9 M5 o
CJNE R6,#2,MONTH1;是润年,当前月是否为二月
7 b# g1 F4 ^% h" g# T+ b( y$ l CJNE R7,#30,TODUBACK0;是润年的二月,到29天?
4 y$ L0 g* m' R' q* ^ MOV R7,#1;日第一天
+ J- J$ t0 m; C+ `5 ]# n1 c3 \ MOV DADISP0,#2FH
5 k0 h" o' h# d: t3 X) R MOV DADISP1,#0FH" t' d5 H$ C* v: ?, O. R; [
JMP MONTHUP;月份加一/ w8 l! L* {, Z) ~. B2 c, u+ c/ G
TODUBACK0:JMP TODUBACK
H) `, `8 ]9 q4 d7 {NOTRUN:
* h& X5 e m7 K9 p; z& B3 g CJNE R6,#2,MONTH1;不是润年是否当前月为二月
. v) W" G, i1 O CJNE R7,#29,TODUBACK0;不是润年的二月,到28天?
4 ^: A' y- m+ [# j6 @3 ] MOV R7,#12 U) R! R/ V2 U1 M# k2 k/ _/ c
MOV DADISP0,#1FH, \) F7 Y# h2 ?- I* U: F
MOV DADISP1,#0FH2 L! ^$ D/ E: \# U% n8 x
JMP MONTHUP
& b6 O% w% Z3 I* GMONTH1: 7 t& E4 Q& R9 {$ i$ ?
JB 20H.0,BIGMONTH;大月吗?0 P( E% ?0 R, }
CJNE R7,#31,TODUBACK0;小月是否到了月底
5 A" M1 G4 L- P* p( A* a& a MOV R7,#1;日重新开始; G* i* K' @ |' J, u0 J
MOV DADISP0,#1FH
* ]5 Z) D1 D+ y% V. A8 w* { MOV DADISP1,#0FH& M; |/ |8 E% N2 `7 m
JMP MONTHUP;跳到月加一/ K. I2 \4 F. Q: F6 i/ f
BIGMONTH:
3 p/ W. q# _ ^) M1 m CJNE R7,#32,TODUBACK;大月是否到了月底
, G$ c) @8 m# G4 `1 [- \ MOV 7,#1;日重新开始
# r' |5 _+ J8 S7 i1 f MOV DADISP0,#1FH
$ `. V; V1 R. |) Y& j+ Q MOV DADISP1,#0FH
. g" \8 B# |$ q9 |3 w) aMONTHUP:INC R6;月加一2 K' e! Z- T' [$ V
MOV A,R6
+ b/ i N! R6 Z5 N! Z% c MOV B,#100; {9 _: x8 D3 j1 w4 j, C3 `
DIV AB t# T# n+ U6 Y" j
MOV A,#10;余数继续分离十位和个位# v! D" b% m. N2 A; U
XCH A,B
8 G5 g! X6 A0 O1 j4 `1 j DIV AB
( E+ G @! i) Z/ Y4 J. l0 |1 _' e SWAP A
$ {; s4 W4 J, A, g MOV MODISP1,A
* z8 I' f; U% y MOV A,B# ?4 ?9 F5 z+ c, p. I
SWAP A# v* r) d& b2 K1 b1 B0 g+ i+ S) N
MOV MODISP0,A
% H4 M3 O; a" V1 Z CJNE R6,#13,BIGSMALL;判断是否到了年底1 B. W: z" `& k: D( H1 o
MOV R6,#1;月重新开始
# P* {6 J2 S4 L! @- Z9 V M, S. H MOV MODISP0,#1FH
& p3 I: s0 P! q6 ^6 J: X2 \; Z MOV MODISP1,#0FH
+ _& L5 h ^ z" e SETB 20H.0;一月大
/ B- I% }* G6 x) a2 L) d2 ` JMP YEARUP+ c Z0 `$ N$ j) r- F
BIGSMALL:# r6 {. P7 P, z V x+ M
CJNE R6,#8,OTHERCON;是八月,则仍为大月
( x* o7 d% i% {, g& d+ m: L4 N SETB 20H.01 j5 r7 @. @. }. C8 S% l
JMP TODUBACK
# Q5 O% c4 A6 Q; P+ M# i9 kOTHERCON:CPL 20H.0;不是八月,大小月与上一个月取反( J Y4 Y \* j- a2 m
JMP TODUBACK
; `- S$ ~$ ^: J4 j( JYEARUP: INC R5
* l! w* r- i9 m" l; ~ MOV A,R5
* T0 B7 f. E- Y; C: I MOV B,#100
& K; X# h' C% X( s, d. w DIV AB" E) C* f/ F# ]0 H
MOV A,#10;余数继续分离十位和个位/ A7 X c( }( j2 g R
XCH A,B; _# |" q) B& X! S0 H; H
DIV AB
9 u/ v$ D# A& c SWAP A
) p. ]6 w9 ]2 S2 Q1 c* ~9 q MOV YEDISP1,A
# k" l8 Y6 f' e8 U MOV A,B- m: N. v# R: z0 n( i3 K
SWAP A7 x C5 t1 o" n/ u) ^; n; G# {2 h/ e
MOV YEDISP0,A
3 x9 E1 A- n2 O, M$ ^3 @ CJNE R5,#100,TODUBACK
2 k X3 w" ~5 r+ } ` MOV R5,#00;新世纪
% x% u, }" L$ l1 K# I3 k8 E* { MOV YEDISP0,#0) W3 B2 _0 @* l0 O5 r
MOV YEDISP1,#0
W0 W# {- S g5 ^ G! fTODUBACK:
% P4 I3 d( r' l+ z! [ CLR RS0
; _. s0 Y1 y6 |) H s6 u+ |3 V RET$ k z' m9 N/ E6 U5 B
;时间显示子程序
5 Z7 T l" M& k$ e" h; g6 fTIMEDISP:# i! Z1 F3 n3 M$ g8 I t8 ^
JNB 20H.6,BB0
$ r+ i/ t/ U' G9 K% ]% M' ] JB 20H.7,SNODISP
5 u2 T' ?/ \5 t' t. }0 dBB0: _ q; O$ p+ U: E5 }
MOV A,SDISP05 W1 t# G& u9 j6 B6 a1 I2 d! o
CALL DISPSIX3 d; M i: L) }2 `& w, ?
; MOV A,20H
7 S4 m7 }7 M- P& a MOV A,SDISP1" j: {8 W# ?) i- ^$ f1 T6 n/ y
CALL DISPFIF
0 h7 S% f( p3 I( K3 r: \SNODISP:
: w3 P( S0 ]1 Q9 u* l" l) ^ JNB 21H.5,BB1
' g0 ^ F9 n7 N& ?( A; O0 V JB 20H.7,MNODISP6 ~) D4 p ?: `" K w
BB1:9 \3 P. j* g( {) R5 _! {
MOV A,MDISP0
3 U$ ^" ~7 n* E3 B8 w5 }: ?( G CALL DISPFOR1 h# _. p* K& p% \5 s% N% m6 }9 ?
MOV A,MDISP1
5 W2 A1 ?# U8 Y- {7 x- _+ X CALL DISPTHI
5 ^/ W* r, ]' qMNODISP:
& z9 q* n( @, Q$ |( L6 Q( J JNB 21H.6,BB2
0 o; |6 P2 C+ k1 M8 r: J/ t$ z JB 20H.7,HNODISP& g9 N( @) i+ b! D$ J, @
BB2: * e5 |4 x' _: \
MOV A,HDISP0
$ Q$ j i4 X, T& A CALL DISPSEC& b7 [ U% h. H
MOV A,HDISP1/ N: T% w; w) K: I" k2 R4 ~1 P
CALL DISPFIR0 a9 g) ]5 b; \' p( q0 \
HNODISP:RET5 N5 C1 `1 F- s# b% N/ g
WEEKDISP:$ `" } m3 @8 P8 a- L
JNB 21H.7,BB3$ [- @# T- M p0 V- b
JB 20H.7,WNODISP
, h9 ?6 ~# A9 h3 l c" }BB3:
, c1 L2 z7 ^% c" j# v2 d MOV A,WEEKDISP0
- _: ^) P& R- w ORL A,#0FH' S4 \. p- K$ Y
ANL A,#0F7H
5 ~% D) B* o; ~' C5 {- ]; \: z MOV P1,A
& I! u; P5 R/ ~* m0 Q+ g1 ~+ e0 A CALL DELAY) }9 ~8 V5 A/ F0 B# E
WNODISP:
: g9 z1 [) h+ |4 Q W. L2 V RET
9 X2 [8 _9 A6 p; ^/ _# J( h5 s" A/ _; l" j( D8 ?% j+ {1 g
;闹铃显示子程序
( d) E( R4 N' tTIMER0DISP:
0 T ?; y. H# {3 b: x2 n; D JNB 22H.0,BB6;设定分标志位
- `5 X% u$ B& r" y- Y% {6 s; n JB 20H.7,TMN0DISP I0 S& _' j: y* t# y. q; x
BB6:
' b r( c) u& S: j. L; h- M) R MOV A,TM0DISP0
: o* }7 u; G. L0 v- b0 R; l G- W CALL DISPFOR
& b" q' c* B) |: B3 w2 t4 u MOV A,TM0DISP17 x6 R& G3 ?$ u- O. Z4 O; h' q5 j/ B
CALL DISPTHI
* n* y* v$ E* R2 G1 bTMN0DISP:& k5 q6 Z6 j! _% X# s, d3 s
JNB 22H.1,BB7
$ o+ f* Y# L& E0 }2 p, M/ u JB 20H.7,THNODISP5 B" K& q) V9 i# N. B! w+ ]7 m7 J
BB7:5 @( P8 w- { h8 a* e
MOV A,TH0DISP0
a; j+ R5 A9 d/ L CALL DISPSEC- e5 `4 ~$ K# y8 f3 O* a
MOV A,TH0DISP14 P6 d# ~& g! Z3 d7 b
CALL DISPFIR& B& ^' @: N; S8 B' n- V, I
THNODISP:) W9 m) W6 o' m- }7 M: y
JNB 23H.1,TDRET;定时是否开启标志位 2 X2 e& j% Q3 O& M6 Z( A" G: f# p
MOV P1,#1BH
8 _5 _5 i9 I( g9 [1 N CALL DELAY
. D" ?, n$ a9 G5 Z$ y2 LTDRET:
4 z7 ^* N+ g5 F7 r" V RET& `) C4 K1 L3 ]* x6 T U& G
TIMER1DISP:! l3 [6 Z* t9 b0 i8 \% k2 S
JNB 22H.2,BB61;设定分标志位
2 Z* R6 g$ y* N0 |' G$ u8 `5 e/ G JB 20H.7,TMN1DISP# S7 d. N$ z) _+ Z9 S& t. g9 A
BB61:$ K0 _" C" h) R8 N/ c. W
MOV A,TM1DISP0
# c" K$ B! m6 R CALL DISPFOR, i* P, K7 G+ ^0 F
MOV A,TM1DISP1
+ I, Z6 S1 u) t% q6 n+ C0 W CALL DISPTHI- Y) `+ @+ a# v# H
TMN1DISP:& f; Z& B1 f4 c7 t& D' v) W
JNB 22H.3,BB71' d! Z r8 Q+ l8 r1 n3 J
JB 20H.7,THN1DISP9 a5 U4 W# s! S; I7 ]
BB71:- f4 C4 z6 P8 j; ^& d! B; L; b
MOV A,TH1DISP0
9 ^2 W$ s) E: U! J' N3 G CALL DISPSEC" p5 Y2 f/ Z5 B+ j
MOV A,TH1DISP1- T( }4 ^0 a9 K7 F K: A
CALL DISPFIR
0 [" R3 ]& j; _* S, }THN1DISP:' T0 x" U- D: M6 D) y
JNB 23H.3,TD1RET;定时是否开启标志位
3 E! S9 `2 W2 Q( M MOV P1,#2BH% E9 B! {. T. ~6 f4 u
CALL DELAY 5 N" ^+ F; {* V% X* Z; W
TD1RET:
; U/ k# w( T, y7 M RET
! C) k$ g1 F& |9 k;;;;;;;;;;;;;;;;;;;;;;;;+ l q8 \9 X0 S8 Y9 p, R2 c
TIMER2DISP:
. g: ~9 {$ x f) [* |) _. ~* E JNB 22H.4,BB62
+ X2 A) A; a: m1 \4 S JB 20H.7,TMN2DISP
; x4 P2 Z) g& A- \, \BB62:$ S! W: U6 }2 ?# A6 U) q: v" N
MOV A,TM2DISP0
% X$ A% x0 Z/ j: u! I CALL DISPFOR
% o$ g X6 n" d MOV A,TM2DISP1; A1 S. [4 I0 l
CALL DISPTHI$ z$ L7 @& r# i
TMN2DISP:' m* m/ c' k) i2 K
JNB 22H.5,BB72
7 s+ j( ^' l3 d/ U: D0 H, \$ w JB 20H.7,THN2DISP
2 y) u( W6 Q3 r3 l6 N7 E% J* }BB72:
. ]. h" Z9 f. h0 h, J, E MOV A,TH2DISP0
' Y: d1 N* I: B7 C1 [6 f2 F CALL DISPSEC
9 o5 k2 s/ q, c MOV A,TH2DISP1' L! h( i5 g ^
CALL DISPFIR
4 D' | ]* W# W( {4 w& s3 UTHN2DISP:2 i1 a, G6 [! g, Z$ d- ~" B% W
JNB 23H.5,TD2RET;定时是否开启标志位
$ z+ G. F* Y3 y2 a. F4 p( f5 E! P5 S MOV P1,#3BH
* ~9 F1 \+ C( h" e) w$ t: [, G2 J CALL DELAY
: V' Z1 ?) L" u# a0 l7 c. K1 wTD2RET:9 k7 d! ^9 s4 u2 [. k5 U
RET; i# R: Z3 @1 {+ ^9 X- R
5 g2 m# ]1 @2 i- rTIMER3DISP:. R) y' X5 k- I4 j* n
JNB 22H.6,BB63+ a3 }+ Q% k8 \
JB 20H.7,TMN3DISP/ O5 V0 \+ ?; N; A0 O, W. L
BB63:( A5 S7 q( a$ L6 R: M% V1 e
MOV A,TM3DISP0; v; j+ [! R9 U7 x. L
CALL DISPFOR5 g* L7 q9 U# G5 Q/ l* t
MOV A,TM3DISP1
; f l) I9 |) O- Y8 {0 x8 i CALL DISPTHI% K% N6 k+ \ |/ ?; C3 i
TMN3DISP:) Y" Z* B& D+ o) J F* R- D. L
JNB 22H.7,BB735 }1 n% v; i4 V% {
JB 20H.7,THN3DISP o$ V/ G& {, N* E! v* K
BB73:
3 {# _9 U: [' m% Z5 [ MOV A,TH3DISP0
3 [& B2 V4 I0 I# Q3 i% z CALL DISPSEC
+ H$ l) e$ c* K2 A MOV A,TH3DISP1
& ~3 p. w2 T# H/ ?9 W1 A CALL DISPFIR
% ?6 W0 Q% p) p; O, f5 rTHN3DISP:
- \0 K- R2 w" G1 F* b; k+ C JNB 23H.7,TD3RET;定时是否开启标志位 ( X& R+ B9 b% l! T2 b2 s d8 P% m
MOV P1,#4BH
& ?6 o' c9 E+ y: g( L& V3 e/ }1 c CALL DELAY
2 c$ X" o' ^: g4 X* C6 o: C) C! d$ z" WTD3RET:4 q. g# |, z2 c* \, g3 f. z
RET
5 E( B- o# j3 E" }7 I- n;;;;;;;;;;;;;;;;;;;
* {" ?# Y0 m2 y a* ~DATEDISP:
y' e5 {2 z5 G6 z/ O: [ JNB 20H.1,BB88
% I( r& C; M1 \ JB 20H.7,MONDISP
) N' v3 a3 v' `% A- _$ aBB88:( }$ r4 i- N: K5 |
MOV A,DADISP0
1 H! v; c4 y; N# P% a CALL DISPSIX: s8 i& _4 `+ D
MOV A,DADISP1& |9 Z( S( @; P) T0 R$ h
CALL DISPFIF
4 H6 q+ _8 V) n6 r- P/ q' V& H. lMONDISP:
7 H! _' y) P$ x* r3 D JNB 20H.2,BB99
2 H. m& X' V8 X JB 20H.7,YENDISP, R! \0 C3 [) A( t* L3 R5 u
BB99:9 m6 M/ A. D# W, @8 \
MOV A,MODISP0( u) y1 U O: L/ [' c4 X4 O
CALL DISPFOR
* D, @% b% @; f, I5 X4 b MOV A,MODISP1 Q( s! a: s' ?# \9 P2 _
CALL DISPTHI
; T5 J; a% i M! B# I( T5 v( c" ^YENDISP:' B) j& R# q$ l4 Q" E3 r2 `( |
JNB 20H.3,BB89
) B, \8 A# i: Z; j7 F JB 20H.7,YDISRET
& U) r( v4 a* j- `6 ]+ PBB89: + |, \0 I& J; \& {0 X& a
MOV A,YEDISP0 }5 b" C, O. n% i8 b
CALL DISPSEC
6 O' U; l9 q, z& X, a4 o1 d' \5 ?# a MOV A,YEDISP1
! y- j5 u1 Z4 \" ^0 N% u2 e+ K CALL DISPFIR" G, @9 L- t$ M5 Y3 D" A( v {
YDISRET:# u% t: l% Z- m" n- h
RET( i; D9 K& j4 s4 W# ?& W
& h1 L: _/ H& C% T;定时比较子程序6 i9 I x1 e$ N& \
COMPARE:' S: z4 P! _8 Z. T( ~ x
CLR 23H.0! h! n( G) o& B
SETB BEEPOUT3 ^& [4 j; x3 W" |
MOV A,TIMER0M;取第二组寄存器的R4,即定时分的存放值
! {# e' k5 `# n2 C& B CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较2 ?+ F, L4 n4 E( Z+ c! w
MOV A,TIMER0H;取第二组寄存器的R2,即定时时的存入值4 E. B- J! }! D& S! N' \( r0 K" B* _
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较 k' l9 e3 { O3 c; Q
SETB 23H.02 ]( Y2 W& ~5 O/ C
CLR BEEPOUT
* k- w! L& P: f. _& F! \ RET. Y3 b1 a7 z! S2 T8 s' g6 g
COMPARE1:# N1 C7 }5 j1 t
CLR 23H.23 S# y7 h8 [9 |+ y. Z6 Q/ z
SETB BEEPOUT7 @1 Y- ~& L( V, ]1 F+ X
MOV A,TIMER1M;取第二组寄存器的R4,即定时分的存放值
* c# F) r1 ~% b$ T CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较
6 [2 `7 K' b# O2 S5 e MOV A,TIMER1H;取第二组寄存器的R2,即定时时的存入值* h. o- ~8 B x$ }3 F7 u
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较6 d3 Q9 ^4 s9 y
SETB 23H.2;定时时间到,准备开启BEEP
% x9 D; U! R9 i+ A CLR BEEPOUT
0 ~9 J( h0 h* ?# F% [; b RET% g6 s' ^& ]$ k: o, [ n, s7 I0 K
COMPARE2:
% J# I1 C" W5 w( X- a& q CLR 23H.4
, p7 {+ Z" Y8 B& U6 K SETB BEEPOUT% V: r; b! s; u9 i- Q5 x& n
MOV A,TIMER2M;取第二组寄存器的R4,即定时分的存放值
! n0 a+ b9 l/ h' C CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较 D" K, E1 k4 n4 `$ r
MOV A,TIMER2H;取第二组寄存器的R2,即定时时的存入值7 E/ z4 Z8 K# V- J8 |* d" j
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
0 s- N' f- w9 e( U A SETB 23H.4;定时时间到,准备开启BEEP
4 s. }8 \/ {: L CLR BEEPOUT
( E! l4 o7 @+ w. B- [& K3 ?' R RET
% B# j& y* x3 s2 dCOMPARE3:
* o7 ^; u6 l! g8 ^# D: x CLR 23H.6
3 ^; b x. V* u& }, C# v& ^ SETB BEEPOUT( _$ z$ X# U# _" N
MOV A,TIMER3M;取第二组寄存器的R4,即定时分的存放值
# G9 w( U/ d# r CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较7 x- v7 o$ o/ J+ | Q5 H1 n
MOV A,TIMER3H;取第二组寄存器的R2,即定时时的存入值
- e( O$ N! u% H) b& W1 D CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
6 j5 \8 z% K* S SETB 23H.6;定时时间到,准备开启BEEP
4 |; N2 A- x/ J, l; R CLR BEEPOUT
6 l% ~3 S6 m5 A3 |7 ^( y' KNOTEQU:4 F; |6 w' F8 `0 e
RET
0 s: v0 [) ?; B! B( }5 P
' [3 w* \2 T& ]* n8 w0 @* F;延时子程序
[+ D. q0 R6 F, KDELAY: , h4 f3 o& h/ O% b4 T0 J
MOV R7,#05FH
" v+ B; d7 O3 c. j2 O+ z3 o/ g" H DJNZ R7,$+ A5 T8 j3 u5 y5 q9 h5 A% g# z
RET
( g5 J9 n+ k: S; U* j
$ v" a$ D3 j: };显示+ d0 S, X/ U3 ?6 p6 p4 s
0 w4 k- [( B8 X/ {2 RDISPFIR:$ i9 |) ~4 a+ S2 p9 n
ORL A,#0FH
3 U. X8 ?. d$ H% E O* d( T ANL A,#0F1H
$ \& Y8 Q3 B" l& X MOV P1,A
& R% e( W- y4 a/ n# E9 T% s) f% Y CALL DELAY: b" E+ @2 O: A" |; _8 J8 m
RET* i5 Y: K' \2 @* j) u9 t& x
# }, _7 |/ _& c8 w& H
DISPSEC:, t# u9 o. r! ^+ Y4 I$ H
ORL A,#0FH
0 D% ]: ^* g5 m ANL A,#0F9H
4 Z1 ]; H, j2 a$ R MOV P1,A
7 @& n- N2 {( \) j( z+ @. j0 y: T; C CALL DELAY
W C- e2 l% M; K4 L RET
% G) { s- x( r2 {' d* x( ?2 [9 D5 d/ ~8 Y
DISPTHI:
0 O7 Q; u, f! B7 ? ORL A,#0FH
* s9 h6 q# v4 U ANL A,#0F5H
' F% w) ?; m/ S9 I MOV P1,A% _. m; q: v( \; J9 A+ W H
CALL DELAY
Q5 B" t4 Y' ]' S3 J: n RET: H# H& h( w0 b
3 r7 L7 G0 M# r4 C4 e9 @% w8 [! E
DISPFOR:8 \. f8 D y/ \( {/ O9 ^& s$ \
|
|