|
楼主 |
发表于 2010-1-29 21:12:33
|
显示全部楼层
DATEUP: SETB RS0;用到寄存器组1$ m- J! @. p; L% g: l# w
INC R7;日加16 K' Z' {1 p3 \. p& g; _
MOV A,R7, W: \# q- [! e3 ]
MOV B,#100) G0 {4 g2 D; [
DIV AB
2 t$ }: s2 U$ v) k" \0 n! W MOV A,#10;余数继续分离十位和个位& B4 D1 y. `& ?# G
XCH A,B: d8 C0 Z2 ?& Z$ ^) D6 W4 F
DIV AB
" U. K' Q q z# h3 z SWAP A
! ?1 O, i/ H0 E/ b( n9 ^& g. E MOV DADISP1,A
1 ^5 P+ L6 E7 X MOV A,B
+ t: t# \1 K6 s! U. k/ D7 l SWAP A0 Q$ m" a4 e" k( a( Z
MOV DADISP0,A
0 k, U3 J% p5 D, V MOV A,R5;润年判断 M0 ?% W( y6 r
JZ ISRUN9 K$ H6 D' N8 E6 w+ b/ y0 `6 _
MOV B,#4% V; u7 P8 t/ D
DIV AB
) `' w7 Z' a4 M2 K5 T MOV A,B
+ N/ T6 M3 W& j! J [* B+ h JNZ NOTRUN8 c' e& Q) j9 _4 d
ISRUN:
. t+ t5 T% M: G1 ^# N1 n CJNE R6,#2,MONTH1;是润年,当前月是否为二月
: k& _2 d, A8 {, C CJNE R7,#30,TODUBACK0;是润年的二月,到29天?
: |1 e$ Y8 |( b4 y MOV R7,#1;日第一天( f; A S8 j6 m# X0 @
MOV DADISP0,#2FH
( e; j& C3 a0 B MOV DADISP1,#0FH
# b, P/ A' T" R# }2 S, O JMP MONTHUP;月份加一3 u9 T; v% ]; m. S: |" K
TODUBACK0:JMP TODUBACK
/ J3 m _$ ~6 HNOTRUN:) ^7 s/ M7 R& t+ }( g
CJNE R6,#2,MONTH1;不是润年是否当前月为二月0 Q s0 F1 Q. k+ J5 s0 g+ P
CJNE R7,#29,TODUBACK0;不是润年的二月,到28天?9 y6 O0 M3 B% ]: M# D" t3 y d
MOV R7,#1
% A' L; U9 e( ]* a* u& S( c1 O MOV DADISP0,#1FH/ r; c0 l6 B, c" T; t3 {
MOV DADISP1,#0FH
2 ~' \+ ]+ L( z. N6 q1 I! o- k1 q JMP MONTHUP& J, _) X& F- p: J& Q* u
MONTH1: 4 S/ ~. |# w y P: o% v2 r
JB 20H.0,BIGMONTH;大月吗?. Y6 b% Q" G8 m0 x0 ?6 H2 q0 h( ^
CJNE R7,#31,TODUBACK0;小月是否到了月底
* ^/ ]5 o, V- J. T MOV R7,#1;日重新开始
0 u% w9 } L w4 q* f3 M MOV DADISP0,#1FH
# g" t# |6 T% F/ {' E# u8 W MOV DADISP1,#0FH
/ }8 k) L# n- z3 X& c4 A JMP MONTHUP;跳到月加一# {% }. N8 n1 g' U
BIGMONTH:2 u$ Q. y3 a, y, e7 j& R" }6 _
CJNE R7,#32,TODUBACK;大月是否到了月底$ |& k9 J3 m. f+ A" S \3 x9 [/ S
MOV 7,#1;日重新开始
4 e I* F- L) i7 z1 q MOV DADISP0,#1FH: I$ z* {$ x/ N9 W! {- B
MOV DADISP1,#0FH
& `3 }5 f4 F6 T% P. ~5 {MONTHUP:INC R6;月加一: n3 [' f, }3 f
MOV A,R6
8 W1 T! {) X" L) [- m' | MOV B,#100
8 t( B+ f4 r2 t2 f. H DIV AB; T' c% h: y# ]5 ?: T( c! u
MOV A,#10;余数继续分离十位和个位
/ Q4 M8 U7 E5 U. l XCH A,B
l1 Y K& J" F DIV AB4 n+ g0 @: o b" Z2 }9 j) t8 S0 ]1 x
SWAP A
9 m& Q7 L" y8 k+ }3 q8 ] C: Z MOV MODISP1,A
! {# a' ~. z; F# O; l MOV A,B
7 _9 L$ L8 p6 S* x$ z, a+ ?. o/ V& h SWAP A
% q P/ T8 A5 X MOV MODISP0,A
0 {/ M1 P0 X1 N; Y! G L6 F CJNE R6,#13,BIGSMALL;判断是否到了年底1 i. P, d& @; H5 P' t
MOV R6,#1;月重新开始4 R: \8 w; I' F) m8 a: b* I9 k7 \1 x
MOV MODISP0,#1FH
/ z# i6 a" T: G0 | MOV MODISP1,#0FH& X" U1 a' N' M3 o: O
SETB 20H.0;一月大
$ `4 p: T8 f7 T0 i JMP YEARUP
+ M2 g1 }/ m0 _9 G9 t( G/ `BIGSMALL:1 f* a8 G8 ^! r) Z8 N/ I& r; J( `
CJNE R6,#8,OTHERCON;是八月,则仍为大月
6 @7 {/ l2 ~; b, `+ \3 v ^" W SETB 20H.0
4 T0 q' r8 N* @) |3 [3 a JMP TODUBACK
8 a; S( ?. Y- [" GOTHERCON:CPL 20H.0;不是八月,大小月与上一个月取反0 p- Z h5 A- ]- T% z5 V
JMP TODUBACK
6 s5 G7 s( o- OYEARUP: INC R5
3 R+ P' c+ _) I, I8 s, ^ MOV A,R50 D. ?6 v4 t e9 q0 l9 Y4 @
MOV B,#100
, M3 X4 L/ s8 o! B DIV AB# L6 V2 E( R% b! g7 T4 h7 x
MOV A,#10;余数继续分离十位和个位
1 Q2 ?0 t; }" ]6 k* E" u XCH A,B
& @5 E) Q% O- I+ R/ t) w5 E DIV AB/ D' b; W8 T+ b# E4 `
SWAP A* t) g% J0 h9 Z4 l
MOV YEDISP1,A- `: r! T) C- [$ b' ?7 O" c6 g
MOV A,B3 [% K$ B. f$ c
SWAP A# i7 X, r. @+ ]8 ^) Q
MOV YEDISP0,A
# C1 ^/ B: n8 I I; L* W' l9 p CJNE R5,#100,TODUBACK0 _6 \+ \/ C: P+ D
MOV R5,#00;新世纪
, P! l; p) T/ ~, C! j MOV YEDISP0,#0, k3 n5 t5 L$ D! \8 E
MOV YEDISP1,#0! H' O1 N2 Q5 \+ {6 u/ F. C" e
TODUBACK:: [) K/ Y2 G% p0 `4 ^
CLR RS08 C$ V) _3 Z" |0 q! s" C, w
RET- ?+ H$ Z' W1 j/ j, j
;时间显示子程序
$ f' s$ h3 g$ Q( n# uTIMEDISP:
7 @) Z8 {& V$ O8 {7 D JNB 20H.6,BB0
$ h- l& q( b! j: Z! X1 {8 A3 M6 o JB 20H.7,SNODISP
3 G) L P9 H' w: c9 B9 o& V% B5 fBB0:
$ ?* t3 @$ f& v9 U2 n( _ MOV A,SDISP03 C' B! | {# _# V& C
CALL DISPSIX& d( M4 D2 d/ M& ?; m5 z
; MOV A,20H% G5 c% Y+ F$ L' Z
MOV A,SDISP1" H" k$ f" b: s) P, E6 |
CALL DISPFIF
& g5 M/ h. k: YSNODISP:1 K) \8 ~* D8 a
JNB 21H.5,BB1' U/ E/ g8 J/ d1 {& T$ f' R8 d
JB 20H.7,MNODISP. y ^' K1 R3 u
BB1:) j# a& F' q. p6 J- C! A
MOV A,MDISP0
6 Z c' u3 s3 b CALL DISPFOR
/ u+ F2 v" E% W# U. g8 [+ ~ MOV A,MDISP1
7 l% l. O7 E8 u; b CALL DISPTHI
$ q# {' Z$ G) I+ i1 h8 {MNODISP:
- I! i% }0 |1 u JNB 21H.6,BB2
# B6 g( J# {. t( D s6 F JB 20H.7,HNODISP
4 j- w) z, N+ _+ h, V& x# xBB2:
6 l% D2 K7 D( z/ }3 o MOV A,HDISP0
( e' S R7 {! R CALL DISPSEC
( Z& L C4 f1 {; g& v MOV A,HDISP1
& K- i2 U* p1 O# f8 s CALL DISPFIR5 X5 j- i6 Z. U
HNODISP:RET
' W* ~+ j3 s, k' b; m. |WEEKDISP:
6 a1 U" F3 a3 o' o( U- G, ~9 U JNB 21H.7,BB3! m4 P! \* d T% n' o2 @
JB 20H.7,WNODISP1 o* \& q3 ?" j( \% G( W! r
BB3:" I* x& Z( U! t; _
MOV A,WEEKDISP0" S+ B! g" Y% l# d% @* D1 Y. ?
ORL A,#0FH
. g* p3 [' x s7 y7 y0 b ANL A,#0F7H- y2 t5 P E' p1 C3 K
MOV P1,A
* ^1 o; `8 f$ Z2 i) N h CALL DELAY
. F. g$ I* o& s; C- |WNODISP:: r% z4 K2 s, Z7 y @
RET
3 Z& {# Q) o- W: b; Z& V7 ?
+ ^) d- `- d# N. L;闹铃显示子程序
( {; Y7 l" ~$ {TIMER0DISP:
+ Y+ W- z# e0 m+ V6 K% X' v JNB 22H.0,BB6;设定分标志位3 K9 }& N: X2 h5 O9 D
JB 20H.7,TMN0DISP
8 P! Z, X W& `1 f3 u+ N7 ZBB6:) g. V9 f6 V4 Z, A0 u
MOV A,TM0DISP0 c8 f7 U/ Y3 P0 T
CALL DISPFOR( G% W6 G6 e' ]" u \' L; h3 H P
MOV A,TM0DISP1
' A F1 h% ]/ N CALL DISPTHI# U, V8 |& ~* `
TMN0DISP:1 [: Y; d- k J6 t
JNB 22H.1,BB75 ]& z% k2 F- \: ]1 @+ Y
JB 20H.7,THNODISP9 s# B$ X% ?& M+ o
BB7:
: A! i9 U) I* D2 m/ n3 _6 r MOV A,TH0DISP0
& l* D2 O. N; Z7 e CALL DISPSEC8 E# Z; F# {/ ]' p9 j! {$ i2 L
MOV A,TH0DISP1
! i( n% E3 n8 [9 f CALL DISPFIR! z, \0 }: Z, w
THNODISP:
2 c; N" a9 N5 @2 P/ ]. K JNB 23H.1,TDRET;定时是否开启标志位 / w z8 o, r3 l* A* \" X% y
MOV P1,#1BH
8 Q1 B% ^# k$ P& `; ?* j6 w CALL DELAY
; w; s- h! J( W: y* p" x4 QTDRET:. }1 I; l6 F$ f" l8 A" H) X
RET0 C( |) `0 S. O- k
TIMER1DISP:4 r! K" k; j/ Z, I
JNB 22H.2,BB61;设定分标志位
+ k! @7 n3 f1 }1 d: S, ? JB 20H.7,TMN1DISP
. t1 Q" v* T+ r4 E# _; dBB61: A/ f, J2 o. C8 [4 t5 s% l
MOV A,TM1DISP0
* R/ @1 {+ _( e( t+ V1 c CALL DISPFOR
, r; y6 W9 x+ s% Y7 u) r1 Q MOV A,TM1DISP1. ~( O4 v5 k$ }3 L' h+ y
CALL DISPTHI
2 E5 p6 {9 t$ X7 [/ J( u. d' H$ PTMN1DISP:
& M% i% [7 E" X c ?# W$ F2 R p JNB 22H.3,BB71
# v7 o5 ?0 L6 @4 C- P9 |" M JB 20H.7,THN1DISP" e+ H: G! q( ~( r d# @7 C) S6 a
BB71:5 s% t! p7 t+ v F0 F2 H
MOV A,TH1DISP0
% o' @: y/ n( s CALL DISPSEC
8 q: q9 O( K/ S/ R2 s MOV A,TH1DISP15 ^9 W- C i- B; J8 _
CALL DISPFIR/ Z; f, A! I+ z3 O" P$ t: E4 S
THN1DISP:" [' s* J5 n" s p; `: W* I# l3 b3 h: S
JNB 23H.3,TD1RET;定时是否开启标志位 ! I4 d J; F& B' u
MOV P1,#2BH
+ f0 i$ i2 y* ~. F CALL DELAY
j6 `5 N# t' M/ d0 ?. W) nTD1RET:, v% k# {5 Q% }: }6 X) _0 D
RET
: d: O3 Y3 `' x! ?;;;;;;;;;;;;;;;;;;;;;;;;
3 ^. e5 n9 C. y0 Z/ [9 |8 j9 R rTIMER2DISP:
, \! `! Y# A5 d; d8 A: Q& w" q( t JNB 22H.4,BB62* b; ^" b2 r" V$ W4 h( z# F
JB 20H.7,TMN2DISP$ u: ?$ B; D5 }7 F* F& p9 U
BB62:! j# H1 J" A* |9 w% m; J( h1 f4 e
MOV A,TM2DISP0
: k2 S" U- B; _8 b* b/ e5 J% r0 I CALL DISPFOR
3 x! M% F! R$ m+ Y* r' R8 b MOV A,TM2DISP1. V! _0 f; w$ f! J) K4 M4 {4 I
CALL DISPTHI4 S; {) y9 y5 O1 Z
TMN2DISP:# T% U' `* A( c. h9 a& \9 r. g8 N1 c
JNB 22H.5,BB72
7 j9 A- o2 n9 y- ^ JB 20H.7,THN2DISP
! d# P. \2 U* [ }5 fBB72:/ X" U4 `9 ]" K- s# `! M7 y
MOV A,TH2DISP0
! n6 j* j8 m! X9 n9 D6 y1 G0 M CALL DISPSEC
6 f% E& S8 j D, l2 J: e MOV A,TH2DISP1
4 Y b. w5 S8 ? U( W1 @$ F- S" d CALL DISPFIR
& k. N6 S7 ~; b$ X8 z0 J# h) dTHN2DISP:: \0 |, _ W( J7 z$ H" [3 ]
JNB 23H.5,TD2RET;定时是否开启标志位
7 @: S1 L. |+ V- b: n, M' e, p MOV P1,#3BH
/ x8 j" r$ \+ }& Z5 k4 x4 A CALL DELAY
+ ^2 k- Z- r) ~# B3 f8 RTD2RET:( L2 J4 x* ]$ `8 B' N& i/ x
RET
, M/ w9 @0 b. ]$ L8 Z5 d' D8 c* b3 `' O2 W
TIMER3DISP:
# T% p0 e9 l- H JNB 22H.6,BB63
L2 f; E0 y% I% \" N' D$ c$ I! Q JB 20H.7,TMN3DISP
3 g3 Y/ O: A! {3 q* _BB63:+ i& C9 g2 M& @1 O" _" w
MOV A,TM3DISP0
3 k$ x. p) h. B2 n" M( X CALL DISPFOR
1 U$ F* M! I' T3 T, V" f0 b! ?+ j MOV A,TM3DISP1* A$ p4 p4 V& x% g/ P& H# q5 e
CALL DISPTHI
% o+ u; h0 b+ ^! S" H7 G, |) QTMN3DISP: ^: S4 N: ^* D" N1 C7 ~
JNB 22H.7,BB73
8 A3 l6 |3 r9 p3 ?8 x. K$ B JB 20H.7,THN3DISP9 I- a( w1 J/ S, Z. f, ^
BB73:! }& T) \& b. U7 ?: L5 l
MOV A,TH3DISP0
& `+ g$ @: z0 I1 V# r& @7 o CALL DISPSEC
* A* k$ I a4 B, |7 K, ~! g. I MOV A,TH3DISP1% Q0 } Y& n6 {; w' @6 G
CALL DISPFIR 9 z5 B [2 m# P( a5 `5 i
THN3DISP:
# J% J' W) @7 { JNB 23H.7,TD3RET;定时是否开启标志位
( W$ F. t$ ]4 j* l1 j: V MOV P1,#4BH
, J P. X; i. H. u CALL DELAY
! q& r6 t v# s' k$ G+ hTD3RET:* j. \ D, J3 @+ f5 `: l- K" v( W( E
RET
3 k% v5 x% }7 Y1 S& S% i' I, B3 ]% t;;;;;;;;;;;;;;;;;;;
0 U( x7 c: y J. [ p7 O! vDATEDISP: 5 i2 b% c6 r: {: V& r
JNB 20H.1,BB88
4 q$ u+ p" K# n3 e/ W' D' j JB 20H.7,MONDISP8 R0 }+ f' U, q
BB88:
, a' p5 `( N( g: P, a MOV A,DADISP0
& O+ k' C( _' V( o: V& y CALL DISPSIX+ s2 [; v( I4 ^) n+ L
MOV A,DADISP1
. g4 ~9 P& q# @" K; @# m+ Z1 f CALL DISPFIF
/ d h/ ]# @' B) _MONDISP:
( g# f( F0 w8 g# A& g6 P JNB 20H.2,BB99) r% O. ~/ L) r6 j" C% R
JB 20H.7,YENDISP( i# t J* L! e2 I. z% k
BB99:
0 K" V* N/ A3 w+ `/ `: U8 } MOV A,MODISP0$ Z4 ~: h$ A- j M
CALL DISPFOR3 b! F. L% l8 ?7 i
MOV A,MODISP1
2 v. y" m: C) F" o$ U* A CALL DISPTHI N F. t0 Z$ c- L4 G
YENDISP:
0 }' h7 x' i8 m/ J Y JNB 20H.3,BB89
/ u3 {" N6 k9 e JB 20H.7,YDISRET
! T% \. z- U9 p: e& R2 ZBB89:
, i( e2 T7 O- T2 B6 F MOV A,YEDISP0
9 ]+ ?1 V# c4 U5 e) h CALL DISPSEC% s, I6 l. o/ B1 _4 [$ S% p& w
MOV A,YEDISP1
7 a. w* \" }# `. I6 y2 S CALL DISPFIR
2 m* P3 V# q, r) c: ?( S; AYDISRET:
$ N/ @. v$ {3 V8 I( f3 y. X RET
4 G- O& m9 v7 h+ ]7 X' d9 C1 z: q9 L$ B/ K. S9 \
;定时比较子程序
+ k* }8 o$ F- ~' n) e6 DCOMPARE:
& h, V" W6 O% d! Z# E% q" S$ | CLR 23H.0/ Z. R g2 a3 G) k6 N: y
SETB BEEPOUT }' \$ }6 Q$ S$ |, v' C
MOV A,TIMER0M;取第二组寄存器的R4,即定时分的存放值1 ?( r5 E- m; [( Z0 o- Q: U
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较0 u: u/ q: X6 f$ c2 G$ n, q, W7 x
MOV A,TIMER0H;取第二组寄存器的R2,即定时时的存入值: l% u5 t- O( d& g: A/ l, Y
CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较
/ i; s% [. k r3 k% q SETB 23H.0
6 x' t- c& F r CLR BEEPOUT! q M+ |6 y. d ?6 s N1 m6 ]2 K
RET4 ^) N, [' O, R+ x" C6 `+ r& }4 ?
COMPARE1:
# @2 E8 n1 c* U! r! J9 ~ CLR 23H.2
% J# S* @! e1 m. J0 p: ?- |/ C- U SETB BEEPOUT
& T) ]& K0 h9 n! J. t MOV A,TIMER1M;取第二组寄存器的R4,即定时分的存放值6 ^ Z. m* M5 \- ^9 b$ v; u1 g' t! [+ u
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较2 G8 W. v: O* C% @* `9 o
MOV A,TIMER1H;取第二组寄存器的R2,即定时时的存入值
% f$ d# {# i* B7 ~4 t% a! g CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较1 x3 g+ s" C0 Q! u
SETB 23H.2;定时时间到,准备开启BEEP8 p& N6 B4 V. \- t/ C( j+ G7 l# \
CLR BEEPOUT
/ o M8 ]" t6 U U8 R RET" a0 g: N3 o" u& r
COMPARE2:" V% U, D! L0 O# ~1 B, l& K
CLR 23H.42 p2 n% A2 T# P
SETB BEEPOUT% ?% D& t8 [9 Y) j2 L
MOV A,TIMER2M;取第二组寄存器的R4,即定时分的存放值 S4 {8 h/ T+ ]% ^+ j
CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较
: S4 d" ~. E3 d! k MOV A,TIMER2H;取第二组寄存器的R2,即定时时的存入值
* `0 c4 s) d! u9 I Y CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较! |! e* I5 y$ [! u
SETB 23H.4;定时时间到,准备开启BEEP& b+ w1 p2 S' l# |2 y) p
CLR BEEPOUT; A: U8 F6 a# u
RET
7 o: ]9 f% F' `, N* f/ |1 U* V: gCOMPARE3:
% r0 X( ]3 f! t% f6 o CLR 23H.6" E5 x6 w, k4 n/ T' k/ L) d
SETB BEEPOUT
# \+ X8 a |$ U4 Y- x MOV A,TIMER3M;取第二组寄存器的R4,即定时分的存放值
( u8 [& _+ J; k t4 l7 Z' D CJNE A,03H,NOTEQU;与寄存器第一组的R3比较,分比较! G/ u, v3 I& [. {3 J" {" j* U
MOV A,TIMER3H;取第二组寄存器的R2,即定时时的存入值
. c; {: {) C' q" e Z, R4 N( l) p CJNE A,02H,NOTEQU;与寄存器第一组的R2比较,时比较2 K2 y; U/ ~6 p) ?" g
SETB 23H.6;定时时间到,准备开启BEEP8 l+ `' L: p* B5 n3 K- `+ o% S
CLR BEEPOUT3 v% M6 ~+ k. t. [! C. }
NOTEQU:2 p, S8 h, \- c; T, [# c w
RET' l: ~. h; O6 k; S6 `! }
% ^" u1 R7 I' O2 w0 \4 D# R;延时子程序
& ~/ X# T8 P; ?6 p( UDELAY:
6 {/ w4 r+ ~' P' x MOV R7,#05FH/ e, ]0 m1 V( p' R
DJNZ R7,$
6 [* M2 S# s6 W; [ RET- h0 }: o4 P8 _) d7 `
2 ]2 A, O$ ^- J; {, f; f; o;显示 O/ e- x4 ?& F# o2 I2 U7 K
. u6 Y& r0 z) Z* VDISPFIR:/ p; a3 S1 \ ?, z, e# U% Q! f" ] K
ORL A,#0FH$ y& ]9 N$ P7 n
ANL A,#0F1H
* q d: t6 N' t A MOV P1,A
9 Q$ P0 g, o- q8 _3 z CALL DELAY* L( I$ O4 Z) Q! z0 L2 x! B
RET1 K5 L+ [5 D% o7 K- ?
; c% [( v- T+ `' x1 {) T" T
DISPSEC:
6 N9 g! t; z3 D. H. q ORL A,#0FH! ]2 ^3 n7 h6 a* \" ?6 U3 ]9 o
ANL A,#0F9H
0 L |; {9 H6 d& ]; K MOV P1,A% h3 z1 Z) q# N6 B' T* s
CALL DELAY& [, I9 `* Q( X1 \+ F+ p
RET
0 ?+ @' R& P9 f# f* W( Q' X0 G) I p2 [
DISPTHI:
: E6 b9 S( C B ORL A,#0FH( Q9 j8 D% \- C# C
ANL A,#0F5H
/ B9 @5 `( z4 @ MOV P1,A4 d: o- A# J. S# U: |$ @
CALL DELAY
# p7 P# a6 _& ~; p RET1 c+ h$ y, I7 b% |/ }5 X
; T& T* J, u5 H" [% e6 PDISPFOR:
4 w$ g, R. t# K. Q3 z% S |
|