|

楼主 |
发表于 2010-1-29 21:12:33
|
显示全部楼层
DATEUP: SETB RS0;用到寄存器组1, s. t- N" T- X D/ `! G- |5 o3 g0 [! o
INC R7;日加10 |" J: [ E. F+ d( @: N
MOV A,R7( C% A% Z6 M* {- {7 y6 @
MOV B,#100
2 |0 Y% G3 x# f DIV AB
; H- G6 W1 i% m! S6 ?* ^6 { MOV A,#10;余数继续分离十位和个位
: ?* ]0 k5 x* T* S0 Q9 N+ K XCH A,B
/ v4 I& h( Y0 D( o! M& E DIV AB
' f. l/ U, V0 v# L SWAP A
: @' I; N7 ]7 p MOV DADISP1,A& j2 p) h2 q8 ^1 \" D2 \
MOV A,B
! j5 q1 z+ N. E1 @ SWAP A- R+ x( n! N6 A. k! ]; Q+ d
MOV DADISP0,A a D D" f) _
MOV A,R5;润年判断: F% D3 X5 l: W. T( |% g7 @ L1 l
JZ ISRUN
* m" s# Z8 p( S MOV B,#4% S" y# Y! k, K: K+ g
DIV AB$ s2 M) A9 @0 y1 t, J
MOV A,B6 u( l0 ?8 x, f; N- S V
JNZ NOTRUN
& Y2 }* x3 N- ^1 Y% GISRUN:. l& I4 r6 }0 \7 H% t3 ^+ B
CJNE R6,#2,MONTH1;是润年,当前月是否为二月$ Z2 t/ f% C, B
CJNE R7,#30,TODUBACK0;是润年的二月,到29天?
6 f' u' d+ ]9 g3 g; m MOV R7,#1;日第一天, Q3 v$ C4 X9 E4 r; x1 l
MOV DADISP0,#2FH
( C/ f6 `9 g1 K3 y6 T MOV DADISP1,#0FH
1 n0 S2 k$ P7 D' z9 u JMP MONTHUP;月份加一. Q) b* c: L$ ]3 i7 j9 Q/ k- c2 F* l# {
TODUBACK0:JMP TODUBACK: \5 _9 Z6 v) @
NOTRUN:
! c$ V8 [- L$ b" R z CJNE R6,#2,MONTH1;不是润年是否当前月为二月. N+ x1 o4 f/ C7 i) j0 w; [
CJNE R7,#29,TODUBACK0;不是润年的二月,到28天?5 E% f' O \6 l* S: F! F
MOV R7,#1
9 u) m+ Y [, {' m5 o# R( w MOV DADISP0,#1FH' \5 q: U7 ]/ J- \7 h$ m) A# u1 c
MOV DADISP1,#0FH
+ J) n( V" Q7 a w0 {: L JMP MONTHUP4 U0 B8 |0 B3 \3 g7 c5 K8 K
MONTH1: 2 U6 S! }" w& u1 ?# m# i
JB 20H.0,BIGMONTH;大月吗?9 G. i4 G2 Z; D U Z2 C. h
CJNE R7,#31,TODUBACK0;小月是否到了月底
1 W/ X% J4 h# N4 n. K MOV R7,#1;日重新开始
4 H+ _8 j# A1 _5 c8 U" V MOV DADISP0,#1FH
) F. e/ D/ ~9 U: j z2 u6 v MOV DADISP1,#0FH0 z7 J& E a* ^4 l) Q: D
JMP MONTHUP;跳到月加一% Y8 w% {$ [) G7 a4 R: z* C6 S
BIGMONTH:
- B" B+ c6 d. i( w CJNE R7,#32,TODUBACK;大月是否到了月底2 ]: ^8 k9 |$ S% t0 d" P0 @9 B
MOV 7,#1;日重新开始
9 x6 t5 c8 f6 F MOV DADISP0,#1FH
0 F0 T$ \+ C8 A% @' B MOV DADISP1,#0FH
4 i- t' A5 D; p7 f1 @8 U3 ]MONTHUP:INC R6;月加一
/ \! [3 q0 x" r0 f8 g/ I MOV A,R6
" H. \" P' J) o MOV B,#100: w. a* J% A8 k5 k) a; x- Y" c
DIV AB
. R6 Q- q9 w0 X) |) T MOV A,#10;余数继续分离十位和个位& |% g) C. R: F% q8 }
XCH A,B( @ m, W/ T# m0 _1 e: y
DIV AB
3 u6 c q" F. z* S, x" Q4 f9 B- l SWAP A( m6 N2 @" k3 M! d" F
MOV MODISP1,A
4 A# @3 ]5 `( ?$ x2 V MOV A,B2 k; }4 S/ n% o$ b q$ i( ?. d
SWAP A
( D" ?2 i% I$ ?" E MOV MODISP0,A
) f S+ j2 @* n& ]; O CJNE R6,#13,BIGSMALL;判断是否到了年底
/ ~/ \1 X& n6 A MOV R6,#1;月重新开始
; y9 \3 @8 ~5 I MOV MODISP0,#1FH
. b$ @: s8 w Z, a. Y MOV MODISP1,#0FH
2 H, L6 i- n. n6 f# e SETB 20H.0;一月大
( X7 K0 T8 f" _) K/ y1 G1 y JMP YEARUP
- {' K; A9 z( n" o, y7 G. aBIGSMALL:
3 q$ r7 |/ G* t$ z0 ? CJNE R6,#8,OTHERCON;是八月,则仍为大月/ c+ z, v% v, k! ~
SETB 20H.0
7 Q y3 J2 ]/ i3 Z5 s0 k JMP TODUBACK2 x: F* r' d% e9 I% ~* L( X2 ~
OTHERCON:CPL 20H.0;不是八月,大小月与上一个月取反
: Z2 J4 y( z- n6 l. z8 f4 {* | JMP TODUBACK& r8 d! Q: K; z4 g" T
YEARUP: INC R5! W j B/ s! {( D y/ v* X
MOV A,R5
& v" D6 g5 G" _* @ MOV B,#100! @6 S/ _0 D4 N' D2 i
DIV AB
" y5 F0 [" @: K% E$ _7 ]6 ] MOV A,#10;余数继续分离十位和个位
5 C0 N1 K5 _- A. v8 N3 z) J7 F* n XCH A,B# J8 y/ U# Y' D% T: p, X& H/ V/ d J- R
DIV AB" k* f$ ]* R4 D9 i | \. y8 W2 v
SWAP A# p; h8 R q. z1 V M
MOV YEDISP1,A
, ?8 j0 G. Q) K S2 t/ P MOV A,B5 t7 A& b1 J7 ?$ F
SWAP A; O: r; U4 h2 v
MOV YEDISP0,A
% _# h6 u! J( Z: _) P% _6 I CJNE R5,#100,TODUBACK
Z; H W$ L- F4 a+ ]0 D MOV R5,#00;新世纪* B2 \% Y; X! p, |/ I
MOV YEDISP0,#0
$ w' k" R$ _ p; P. G3 i MOV YEDISP1,#0
- T6 c# x" O9 Y+ q0 GTODUBACK:
4 R; b( ]) J6 g" _ CLR RS0" s. ^& T; _8 T T! _1 i
RET5 w) v0 x+ @4 ~; M% q! [& P) z
;时间显示子程序
3 b; E" _# e/ |7 ^- S p; i$ KTIMEDISP:! W( C* r3 ^) W; N1 a. d
JNB 20H.6,BB0 " L, e1 [9 G% }, x
JB 20H.7,SNODISP
' c2 G* |# M6 J, ABB0:
( x3 p' N3 ~6 @3 D1 |& u3 ~8 L2 Z MOV A,SDISP0
' ?$ k* Y8 y, A4 N; h* ? CALL DISPSIX" O0 j j4 F0 M$ j; r
; MOV A,20H
/ I* y* a" L1 y5 ]4 g/ L) O0 V MOV A,SDISP1
) @1 u& e3 b) { O6 } CALL DISPFIF/ |; x. ?9 W- Q
SNODISP:( d$ R4 k% w# m9 E- T
JNB 21H.5,BB14 x/ H7 p; i8 y) j
JB 20H.7,MNODISP
+ n k# P, Z$ Y+ lBB1:9 n0 j7 B: n! T6 K4 p$ e( P# b
MOV A,MDISP0* u. u" c" W( }5 d$ [7 H4 i( L. a/ q
CALL DISPFOR6 ~* @3 [5 r- G0 r5 C% F
MOV A,MDISP1
8 G0 t: O* Y* `- J: l4 h$ X CALL DISPTHI- v1 L6 t! R2 R* O+ n& L% `
MNODISP:
* Z. v8 R, ]5 O* r4 H JNB 21H.6,BB2+ [7 }) i2 i. T8 g- q
JB 20H.7,HNODISP
, R# Q s7 o. E( y* M) P% GBB2: 7 u+ c, J' o0 a9 m+ m k: A/ \
MOV A,HDISP0
+ T* ]0 x/ H9 T6 [3 H CALL DISPSEC1 _6 o% {, X* c) U: K; _/ W
MOV A,HDISP1: e }/ I+ _: |$ F W
CALL DISPFIR
) C3 [( `5 y( S0 ~/ vHNODISP:RET0 e# A S' M/ Y/ ~. y# c1 ], T
WEEKDISP:! E5 k. J* F D5 t* s& e1 R
JNB 21H.7,BB3& F+ k$ ^" _& @4 q& j6 T
JB 20H.7,WNODISP
) g+ V: _* D' b& u% a: `BB3:
* B) ~3 d, q8 o# F. n2 s6 _ MOV A,WEEKDISP0
! B1 p0 b3 ^7 ^) h ORL A,#0FH
$ O7 [* O+ } I/ Y/ o* R6 u ANL A,#0F7H
$ c2 f% m! Z; U6 Z3 o, o ] MOV P1,A
. G: @, ]+ Q) u CALL DELAY; w& v8 O& a* d
WNODISP:6 [! ?- G4 W' A# w2 [! c+ s7 ?" X
RET& i* A( J" ?. `( O
' o6 B8 h$ T* i' g) l/ J2 v' }) p; n;闹铃显示子程序% D% e; S, z, Q; u: E9 m
TIMER0DISP:
; m* @& m; y5 M! O: k: g JNB 22H.0,BB6;设定分标志位6 I s* |4 I/ G* P
JB 20H.7,TMN0DISP
; W4 ]: _6 {7 {1 c9 s6 }BB6:3 G9 C) K0 G a
MOV A,TM0DISP0
6 @' { l( y5 g! W# f# {, J CALL DISPFOR
6 ?( i& u: @ m' S1 q; Y$ }$ } MOV A,TM0DISP1
" ]' H; S6 i1 {2 R3 U8 x CALL DISPTHI" y2 s& I9 z2 E9 O" T
TMN0DISP:; g7 ]& i* X1 T; t
JNB 22H.1,BB7
" I/ r8 [) Z0 `, d( d0 E JB 20H.7,THNODISP- ~5 _9 j) V9 J7 w
BB7:
# `9 \, O* x6 h: U MOV A,TH0DISP0$ \2 c4 P; ?0 ~' j
CALL DISPSEC
% g' {& R; q. N MOV A,TH0DISP1
% L i8 J4 [8 P, z6 G CALL DISPFIR
: j4 S/ K5 ~5 F. g. Y* u5 G) P; }THNODISP:
6 s$ B) f# M( Y! Y( F, k JNB 23H.1,TDRET;定时是否开启标志位
5 |9 S" ?8 G, ^+ u MOV P1,#1BH
+ i5 k0 Y+ T7 J: G' S CALL DELAY8 B' X) Z+ @4 n: |: U o
TDRET:
( o3 n; E; C% |/ `4 i. X RET
5 ~0 I1 e8 |4 m9 TTIMER1DISP:
) r' q( w3 F) K1 P JNB 22H.2,BB61;设定分标志位: P, Z- k. @* @5 d0 v
JB 20H.7,TMN1DISP
+ O" J: }: F, s/ Z% ZBB61:
9 B" E3 Q9 W. P MOV A,TM1DISP0
, Y8 R: G% P/ E0 V8 T CALL DISPFOR# K! \8 [# [9 I6 y6 }
MOV A,TM1DISP1
( ~* M8 Q% Q7 V0 D CALL DISPTHI
4 Q+ d$ @" I# ~* P6 d% TTMN1DISP:
% a1 c2 S# d- `" M$ y4 u6 ]( M JNB 22H.3,BB71
; U' a+ S; q/ {$ R" C6 y3 P; G JB 20H.7,THN1DISP5 t4 X1 J% m9 g( e, c5 j
BB71:6 r' ]1 e. o' o) V( P4 I1 b
MOV A,TH1DISP0
! S7 f' R- y) g/ ~) i CALL DISPSEC' A( ]* } H v3 ^* o W$ w
MOV A,TH1DISP1
, B# L& H, I5 R( P! l7 C) S* X6 S CALL DISPFIR2 v* i9 M8 W1 q. a3 @5 g, \, L- J! M
THN1DISP:
" s; U2 k- T( J# ` JNB 23H.3,TD1RET;定时是否开启标志位 2 W a6 ~, @; [) u5 ~: n
MOV P1,#2BH) ~, ^- Y0 [, g5 R+ c& t
CALL DELAY ) l0 C% I K" ^
TD1RET:
" L' N1 \7 r) H RET5 K- i9 f* \' Y' S) l2 I
;;;;;;;;;;;;;;;;;;;;;;;;
$ l6 @& J% J9 L% j. xTIMER2DISP:* e3 O8 [3 o, U) g* L
JNB 22H.4,BB62
9 U/ f! R9 `2 N A JB 20H.7,TMN2DISP% Y1 P, |; K9 o
BB62:! d$ n( c9 n% A$ p+ {" U: Q
MOV A,TM2DISP0( c0 R f# k4 k) Y- {
CALL DISPFOR Y. J9 t5 Y' [
MOV A,TM2DISP12 E' e/ C* Y) u: c- Y0 H7 M
CALL DISPTHI
3 U0 @- ~" E1 i3 o* Z" L# u) OTMN2DISP:
2 b& h+ P1 G2 q) f5 Y9 \$ c2 V5 P" F JNB 22H.5,BB72" K% I4 C3 a# z# F. _0 O
JB 20H.7,THN2DISP
* s. e* X' U1 pBB72:. H" Q6 [9 J& X; m
MOV A,TH2DISP0% |6 h# y/ d* L- U1 G/ W9 Q3 y! o
CALL DISPSEC
! n' v) F/ k/ L0 _2 s) l MOV A,TH2DISP1
2 h$ \' X! s& f. B& L CALL DISPFIR
: Y8 E* }4 P' P, e# {THN2DISP:0 I1 y, ]) @, M2 A
JNB 23H.5,TD2RET;定时是否开启标志位
& t4 {$ N2 d& {* x: j h& n( R MOV P1,#3BH
- h: W$ K0 G" K* [ CALL DELAY # F( X; i% T/ N/ u
TD2RET:
. s4 ~4 |0 Z W; n4 w, L, K$ \! { RET
( t5 c# N) F3 d: S
9 h1 V( H( m& uTIMER3DISP:
3 G9 Y* p8 N _' t JNB 22H.6,BB63
+ h; {3 \. P+ N" e: v JB 20H.7,TMN3DISP
- w6 N- y6 t. b- c- CBB63:+ G# x# A" Y, D: @# U# g
MOV A,TM3DISP08 @% E6 Z7 v- H& P. r# ~
CALL DISPFOR% i' A8 M# ^: h. ~% f
MOV A,TM3DISP1( A9 T; \& l* @( F0 O' _6 _# c
CALL DISPTHI
) c* t) c8 U+ z) N: jTMN3DISP:6 L1 J: D# n0 c* g! f; }- E
JNB 22H.7,BB73
) u! Q+ d; s. \5 A4 ^" p; L( h JB 20H.7,THN3DISP
: ^2 K$ G9 ~* _BB73:" H& Y, m5 F) i3 @- S
MOV A,TH3DISP0& h) E' \5 u: V0 N' ~/ B8 p
CALL DISPSEC6 H/ Y) w0 W3 X
MOV A,TH3DISP1
" f7 T1 g4 h4 J( \3 R CALL DISPFIR
8 G" l, f1 h6 r# R0 o1 xTHN3DISP:0 y# y7 e8 I# {3 b% L" n" R
JNB 23H.7,TD3RET;定时是否开启标志位 ' K; v% v. b# x% m
MOV P1,#4BH6 ?& ?* h6 b4 ?( s) A/ ~
CALL DELAY & u3 \$ C3 z. |( l4 w
TD3RET:
2 a1 H. u1 w" u8 A8 l" f RET# z* H0 l! E& T+ r! U
;;;;;;;;;;;;;;;;;;;5 { e. X/ f6 N3 j v% Z* H4 Y+ l
DATEDISP: 3 x V* D* A) V; q# r6 m
JNB 20H.1,BB888 D' G2 j2 z& u* R& j# G' O& a
JB 20H.7,MONDISP" A+ }! D8 h: D# y9 T( _2 Q$ Q9 a
BB88:
$ S+ _$ s5 S3 d4 m& {" S7 u MOV A,DADISP0+ ]9 g( y. r* \/ a; Z6 q
CALL DISPSIX; D8 n! B+ @% l; S6 I8 {
MOV A,DADISP18 p4 z9 P4 }" i, k( [3 `5 o$ v
CALL DISPFIF' D. ]/ _; U1 r9 V# R9 q# K# a, z
MONDISP:# D& ]: Z4 Y5 ^4 U9 D
JNB 20H.2,BB99
- C2 h. s' G# W, B2 n1 u2 T3 d8 Q JB 20H.7,YENDISP
% I( g4 m4 E" `1 F$ z. x; `BB99:
8 O' a7 v2 L. Y- {5 q0 ^3 g MOV A,MODISP0
6 w% T+ i' i3 b/ v! W" L3 Z* Q CALL DISPFOR
# o$ p! D* D- R- {; N3 j1 c MOV A,MODISP18 M" ?5 O# r! i7 x t
CALL DISPTHI
% H. p- x7 A$ ~+ ]YENDISP:& z# M6 B9 z, X- X
JNB 20H.3,BB89
; \. T& p% N9 b0 Z8 ?# i4 x JB 20H.7,YDISRET" h r( h* Q8 Y: K! O
BB89:
7 ~4 m% _/ V9 \, U MOV A,YEDISP0
7 y4 }0 p5 E. ^* Q% M& b( ] CALL DISPSEC+ D9 |# h; R4 n% j: p5 _
MOV A,YEDISP1
; X1 M" i) r0 g8 s' U0 { CALL DISPFIR
5 \* E) t2 ]: GYDISRET:/ b3 o' G0 y& b$ _
RET
! S) k( S$ O% X% |& d9 d' R( ^0 g% [6 {* l/ N7 {; n2 s
;定时比较子程序
. h- H" d1 p5 Y# e) |( o& rCOMPARE:
* b/ C3 q( Q) J' f. p% F CLR 23H.0
( ?+ `6 V3 d0 P0 O; q' }. _* L SETB BEEPOUT0 A5 s' H- @8 f% J
MOV A,TIMER0M;取第二组寄存器的R4,即定时分的存放值
9 Q- } }3 D" ~ CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较 X' D/ Q( ]6 h8 o
MOV A,TIMER0H;取第二组寄存器的R2,即定时时的存入值
1 ?8 a, G" A' r CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
; k L# K& A& A5 v4 l SETB 23H.02 t \) [0 h. s' w. {% w7 J. ^
CLR BEEPOUT" }6 K& |: M/ o" C- d) r6 B2 l; ^
RET7 \9 q2 z$ _$ ^- g
COMPARE1:
: X T% w0 ~! Y# n9 P6 Z" B CLR 23H.2* y) \* R, ~, T
SETB BEEPOUT
6 q2 N" s# G% U+ z1 T+ K MOV A,TIMER1M;取第二组寄存器的R4,即定时分的存放值7 {; L2 c# A' U/ {5 v8 |0 H
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较
, G# L: Q V5 J% @3 h+ }: n6 L ~ MOV A,TIMER1H;取第二组寄存器的R2,即定时时的存入值* Z* `0 o: r' S" M% J- y9 Q" e
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
/ b- b3 z7 l0 O! y$ d6 l; v SETB 23H.2;定时时间到,准备开启BEEP. _: F4 K$ E8 w( r6 @
CLR BEEPOUT$ |( e* q, u) T+ u. w4 n. H4 Q
RET
! U/ I/ ~" A4 C: l& K4 t; cCOMPARE2:. m# C$ [) p1 O/ p- W6 ]! w
CLR 23H.4
# G6 u f/ ?6 a- Q SETB BEEPOUT
5 I6 ?* Y) E% H+ c# t MOV A,TIMER2M;取第二组寄存器的R4,即定时分的存放值- J# O1 l4 [1 \) F q' D) ^
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较
( Q5 V! K) ]) f) {$ j$ E MOV A,TIMER2H;取第二组寄存器的R2,即定时时的存入值4 Q+ I9 g. v1 p3 D$ F, I5 `
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较. D+ D; _" [4 N
SETB 23H.4;定时时间到,准备开启BEEP4 Z8 w+ y* F$ M
CLR BEEPOUT
; x' N" k D# v9 X RET
; V' S8 a- w8 i( X0 \5 o3 CCOMPARE3:
# s) N4 g$ X: N. w- K" t- n9 z CLR 23H.6
' ?' g, I( b7 z3 J3 f' F: o* T7 F0 `' ` SETB BEEPOUT: I/ ^) v6 {" `! t4 }
MOV A,TIMER3M;取第二组寄存器的R4,即定时分的存放值
0 {* H( S2 J; a: r0 Z' C v# E CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较3 K& v! |# [/ |8 _
MOV A,TIMER3H;取第二组寄存器的R2,即定时时的存入值
4 N* b: X/ T; G: z+ V- y' y" O CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
3 ]( S2 c, v4 d4 H( ?" W SETB 23H.6;定时时间到,准备开启BEEP g. h O! B" a$ f
CLR BEEPOUT% P) K/ `8 s2 O; D% D
NOTEQU:3 j: j0 M8 i7 u& \( L1 |
RET
n( R4 ^3 E, [% m3 [& p
; k: s9 f; i( a! p9 a;延时子程序
/ @2 z# x2 D2 Z5 z$ n3 R$ o2 DDELAY:
3 Q/ Q1 e0 `, x6 J- y& @( D MOV R7,#05FH
+ y7 I# y) R `& f' C# r6 r DJNZ R7,$
6 y8 e$ K7 @. R! B RET
3 `2 L; k4 a) Q. e2 X1 o) _: ^4 n V( @
;显示
& u1 n! F# V$ `3 C. {' Y& B5 B/ e. \* D
DISPFIR:. q/ r, W& ^; b% {
ORL A,#0FH
6 x1 M7 o4 C* N' }( n" i ANL A,#0F1H. h! \1 Z) o" q b: b, B7 }; @
MOV P1,A5 J- m* v* e! X, R+ f; F
CALL DELAY" Y, z, [: H% I: h' G8 v
RET: ^2 T' C. `6 V Z7 j
1 l* {5 E, A2 F2 k! {. tDISPSEC:, X& z, `' {7 H+ n0 ]( j. |5 a
ORL A,#0FH% A0 ~) R8 {. C. W2 E9 j
ANL A,#0F9H8 O* |& ?3 o0 M9 M/ o
MOV P1,A
" g$ ^2 h$ ^6 y: C b( E CALL DELAY4 e0 E0 x8 O/ ^8 f) K
RET+ m; B+ I% {( L" T) z$ J
2 G# G$ k n6 X! \8 CDISPTHI:- T# ^ B( c* \ `
ORL A,#0FH
$ O6 w1 G& {: Y) {+ b ANL A,#0F5H
$ v: ]5 S1 } h! {9 N0 a MOV P1,A
3 [5 j1 N+ k6 M1 g) s5 v P CALL DELAY
; T' ?/ [8 H1 {- y RET$ R3 b5 u6 @! S7 s: M0 z
* l9 g5 X4 B/ {' B! S7 ~
DISPFOR:7 U( o4 C! B# _; i, g5 N \- X
|
|