AT89C时钟程序之欧阳化创编.docx

上传人:b****9 文档编号:25718957 上传时间:2023-06-11 格式:DOCX 页数:7 大小:21.21KB
下载 相关 举报
AT89C时钟程序之欧阳化创编.docx_第1页
第1页 / 共7页
AT89C时钟程序之欧阳化创编.docx_第2页
第2页 / 共7页
AT89C时钟程序之欧阳化创编.docx_第3页
第3页 / 共7页
AT89C时钟程序之欧阳化创编.docx_第4页
第4页 / 共7页
AT89C时钟程序之欧阳化创编.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

AT89C时钟程序之欧阳化创编.docx

《AT89C时钟程序之欧阳化创编.docx》由会员分享,可在线阅读,更多相关《AT89C时钟程序之欧阳化创编.docx(7页珍藏版)》请在冰豆网上搜索。

AT89C时钟程序之欧阳化创编.docx

AT89C时钟程序之欧阳化创编

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WP2F:

p2}g7m4D_;c1785;;AT89C2051时钟程序;;电子爱好者社区yo`%R@*C'ibWW;v3E:

J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;电子爱好者社区2b/Xq/g`-j3k;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,电子爱好者社区c#m0^o.Y)Dg;P3.7为调整按钮,P1口为字符输出口,采用共阳显示管。

电子爱好者社区i"\'^dz4l_+r;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:

ixO,dx)n:

{}1785;;中断入口程序;;电子爱好者社区h3g%xZ8v"y;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&D^a]fB1785;电子爱好者社区t"T!

e*Iz6v9]}9qlORG0000H;程序执行开始地址3K!

g2?

O%QI)y1785LJMPSTART;跳到标号START执行电子爱好者社区X;c|P@8[_ORG0003H;外中断0中断程序入口电子爱好者社区3i;l`C(j%iJ2[ReRETI;外中断0中断返回}:

z+|(jbrjH^G1785ORG000BH;定时器T0中断程序入口电子爱好者社区4PDw}q"PAiuHLJMPINTT0;跳至INTTO执行1\&sSORG0013H;外中断1中断程序入口;W]gz8ZhKXfaW1785RETI;外中断1中断返回"d&Gsn"lzX^1785ORG001BH;定时器T1中断程序入口(aV/[c7Gb%`Z1785LJMPINTT1;跳至INTT1执行BI[g0];gN{E"W1785ORG0023H;串行中断程序入口地址vW$o@:

R1785RETI;串行中断程序返回&Ytp+do}N]$d@1785;电子爱好者社区H,U)US&Jzk)E^Z:

j;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;x1FBr2Q;f1785;;主程序;;电子爱好者社区U[4O*T8q[;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;电子爱好者社区h/UhOj:

yl]P;电子爱好者社区g{k_e2~:

{9Q[4drSTART:

MOVR0,#70H;清70H-7AH共11个内存单元"R9Vf~GCX'r*X|l1785MOVR7,#0BH;!

Vl@4z1C,Gq4Lh%?

1785CLEARDISP:

MOV@R0,#00H;电子爱好者社区#KZ,Z{s5ncINCR0;0QF1C^'AM+[$[5bEH1785DJNZR7,CLEARDISP;电子爱好者社区kKOej%IMOV20H,#00H;清20H(标志用)!

tlT0nCF1785MOV7AH,#0AH;放入"熄灭符"数据(rbaB-[$OL+_1785MOVTMOD,#11H;设T0、T1为16位定时器K(Sr!

WN.nD6M1785MOVTL0,#0B0H;50MS定时初值(T0计时用)4g.Z0x\GwV1785MOVTH0,#3CH;50MS定时初值电子爱好者社区6m1zF{rTNAn9dMOVTL1,#0B0H;50MS定时初值(T1闪烁定时用)JM8nz$U,s4D.r-D$OQ1785MOVTH1,#3CH;50MS定时初值电子爱好者社区9G6S`mK9[3ollafSETBEA;总中断开放电子爱好者社区,l%nM:

~a'fqWSETBET0;允许T0中断J"sbY(g7vG/o6D1785SETBTR0;开启T0定时器J4ue#Oo`pT1785MOVR4,#14H;1秒定时用初值(50MS×20)电子爱好者社区"t@&wA#u`5sc[wSTART1:

LCALLDISPLAY;调用显示子程序Rq.H4N(\s1785JNBP3.7,SETMM1;P3.7口为0时转时间调整程序电子爱好者社区|7n.wZ0@PQ#faMSJMPSTART1;P3.7口为1时跳回START1-tq}nu\m1785SETMM1:

LJMPSETMM;转到时间调整程序SETMM电子爱好者社区}.X(M9mt;A)C;电子爱好者社区2i3@k|@)_"V$F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;D*ZG*Fdd1785;;1秒计时程序;;电子爱好者社区[5f"mb$G_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JboZhv5p.wuK1785;T0中断服务程序INTT0:

PUSHACC;累加器入栈保护电子爱好者社区ugz(__?

.uVPUSHPSW;状态字入栈保护9p5t}:

E]:

J1pu(s1785CLRET0;关T0中断允许电子爱好者社区{.D\8S0oR%x_CLRTR0;关闭定时器T0电子爱好者社区ThrjMMOVA,#0B7H;中断响应时间同步修正KH4RR9P1785ADDA,TL0;低8位初值修正电子爱好者社区&j"U(Kk+H*b8lMOVTL0,A;重装初值(低8位修正值)MOVA,#3CH;高8位初值修正*YaBg1x1785ADDCA,TH0;电子爱好者社区Xt+L)L,_CMOVTH0,A;重装初值(高8位修正值)$?

9r@6@7N1785SETBTR0;开启定时器T0电子爱好者社区{mqcSDJNZR4,OUTT0;20次中断未到中断退出电子爱好者社区|0@!

U|'OxADDSS:

MOVR4,#14H;20次中断到(1秒)重赋初值Si+|3xyTeH1785MOVR0,#71H;指向秒计时单元(71H-72H)'Y{cjew^1785ACALLADD1;调用加1程序(加1秒操作)cf4p,@S1785MOVA,R3;秒数据放入A(R3为2位十进制数组合)o3P7K;pC[rD3T1785CLRC;清进位标志电子爱好者社区N_#Cg:

ynJS5cCJNEA,#60H,ADDMM;电子爱好者社区,|8Z^#vUw+nADDMM:

JCOUTT0;小于60秒时中断退出电子爱好者社区-O4ygXI/GtPc'hACALLCLR0;大于或等于60秒时对秒计时单元清09n'BoxkZ1785MOVR0,#77H;指向分计时单元(76H-77H)电子爱好者社区K+QIj5iACALLADD1;分计时单元加1分钟电子爱好者社区^4VTwI;c~$dqG&WMOVA,R3;分数据放入A电子爱好者社区5k0R0fb9JrCLRC;清进位标志电子爱好者社区.f~P+~-dCJNEA,#60H,ADDHH;"?

V7e.X"jJ?

1785ADDHH:

JCOUTT0;小于60分时中断退出电子爱好者社区1U$\n].qIKNACALLCLR0;大于或等于60分时分计时单元清0电子爱好者社区.|mc3C6~9C5Y$B)tMOVR0,#79H;指向小时计时单元(78H-79H)电子爱好者社区^2k;yV_a3f#~ACALLADD1;小时计时单元加1小时]Rv3^6V1I1785MOVA,R3;时数据放入A电子爱好者社区us&I)[1@t_)TCLRC;清进位标志电子爱好者社区-ig9g"Dt$PKCJNEA,#24H,HOUR;0Z6nRFQns6_1785HOUR:

JCOUTT0;小于24小时中断退出XOqf6qq`"[{!

u:

\1785ACALLCLR0;大于或等于24小时小时计时单元清0电子爱好者社区ye1d?

#~KOUTT0:

MOV72H,76H;中断退出时将分、时计时单元数据移*nFE!

M&SgGv1g1785MOV73H,77H;入对应显示单元电子爱好者社区%R]7\-W`_MOV74H,78H;电子爱好者社区`KU#Y5?

F"tMOV75H,79H;电子爱好者社区dp:

zb,vPOPPSW;恢复状态字(出栈)电子爱好者社区o$CQ4YQ7]^|f1GPOPACC;恢复累加器7r&L%kdWj%Lz1785SETBET0;开放T0中断电子爱好者社区nZ5\"P"o@,O3g?

4mbGRETI;中断返回INTT1:

PUSHACC;中断现场保护|:

VA%yS0PUSHPSW;2x)nZmsDn&h[0MOVTL1,#0B0H;装定时器T1定时初值XP(F2g?

i&]:

iy0MOVTH1,#3CH;电子爱好者社区yL_JC(@uDJNZR2,INTT1OUT;0.3秒未到退出中断(50MS中断6次)\/C%]f'd`+pL~p,Z#z0MOVR2,#06H;重装0.3秒定时用初值aA/e8BA~'d:

J5DK;r0CPL02H;0.3秒定时到对闪烁标志取反电子爱好者社区7B1w!

H-m8]+g8oJB02H,FLASH1;02H位为1时显示单元"熄灭"4w&Q5p(z"_8~-DGk3U0MOV72H,76H;02H位为0时正常显示电子爱好者社区,S9_CfNK'm@)HxMOV73H,77H;电子爱好者社区gF"oK(s3AWMOV74H,78H;YlOQtr@)y9h0{8m0MOV75H,79H;电子爱好者社区i.Dt5n$b.x'I)Y\INTT1OUT:

POPPSW;恢复现场1h};hrI}S:

GX1U)B0POPACC;%J:

S(S;[}F$}{0RETI;中断退出Ft6o!

Z2Jj&a!

py0FLASH1:

JB01H,FLASH2;01H位为1时,转小时熄灭控制电子爱好者社区{jW3G4m'A9dMOV72H,7AH;01H位为0时,"熄灭符"数据放入分w!

O+hy/bbG4y0a$m0MOV73H,7AH;显示单元(72H-73H),将不显示分数据电子爱好者社区wvU7\p~9Q@|;f!

fMOV74H,78H;]A:

SNgdu(f0MOV75H,79H;电子爱好者社区2])\$sCar'@FAJMPINTT1OUT;转中断退出B(^Q`*uu@2F*_pr0FLASH2:

MOV72H,76H;01H位为1时,"熄灭符"数据放入小时电子爱好者社区%Z-f@]F4JtMOV73H,77H;显示单元(74H-75H),小时数据将不显示电子爱好者社区Hm2F-j&DMOV74H,7AH;电子爱好者社区BawGFG^Fa/]W.~MOV75H,7AH;电子爱好者社区`"R*g``:

YAJMPINTT1OUT;转中断退出电子爱好者社区E:

p$UgX@;电子爱好者社区8A`-osD;`)}q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_|!

[i6U"K0m0;;加1子程序;;电子爱好者社区,x"ilso-bj;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;电子爱好者社区UAPvTS]!

p|A;h-Bl5O$v6R5B0ADD1:

MOVA,@R0;取当前计时单元数据到A电子爱好者社区LM|-[QQDECR0;指向前一地址BWW6rO3ai0SWAPA;A中数据高四位与低四位交换Ik\DeW0ORLA,@R0;前一地址中数据放入A中低四位电子爱好者社区cOKVp)_2?

vADDA,#01H;A加1操作9X"z"q'[#@0DAA;十进制调整电子爱好者社区,w6`+z2j'AmMOVR3,A;移入R3寄存器电子爱好者社区f/W_n1e-c~KANLA,#0FH;高四位变0电子爱好者社区,rhud'[(FujMOV@R0,A;放回前一地址单元电子爱好者社区ly5Aij[:

wNgAMOVA,R3;取回R3中暂存数据电子爱好者社区;l,k*gi'Lt5S4f"SINCR0;指向当前地址单元电子爱好者社区l3e4~,T6H(Cr:

CSWAPA;A中数据高四位与低四位交换hPwc0T"]0ANLA,#0FH;高四位变0电子爱好者社区9|q(h@X$ir~^MOV@R0,A;数据放入当削地址单元中Z,RZ:

h*}cu7rO0RET;子程序返回电子爱好者社区0}TkO%PN8ZG9n;电子爱好者社区iWHzx;V%E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;J~^;w2Ku:

|.J0;;清零程序;;5n"zT.J1aHWZ$~0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;电子爱好者社区?

5c4Ob1xI;对计时单元复零用电子爱好者社区Q^4_6c4ZyCLR0:

CLRA;清累加器电子爱好者社区-{f3~&R*@LMOV@R0,A;清当前地址单元%B[Plb]bh0DECR0;指向前一地址电子爱好者社区_CbQ3~2K$s:

eTMOV@R0,A;前一地址单元清0电子爱好者社区efnn!

L.T9DRET;子程序返回电子爱好者社区2BauokC;电子爱好者社区X'NeP/^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wXI,n,Y-Ae0;;时钟调整程序;;电子爱好者社区'EN)OW'y\8Y4kR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;电子爱好者社区${{4o8ggE/[X;当调时按键按下时进入此程序}'G~?

]0SETMM:

cLRET0;关定时器T0中断电子爱好者社区@)GQ9[(w%WWCLRTR0;关闭定时器T0&}rPY4@n0LCALLDL1S;调用1秒延时程序:

Crb(XG'j]"e0JBP3.7,CLOSEDIS;键按下时间小于1秒,关闭显示(省电)Sr:

b})N6Mb0MOVR2,#06H;进入调时状态,赋闪烁定时初值A1[3@)aHk!

np0SETBET1;允许T1中断电子爱好者社区TX{f;c0j[!

uj,{SETBTR1;开启定时器T1电子爱好者社区u$Rep3N^SET2:

JNBP3.7,SET1;P3.7口为0(键未释放),等待电子爱好者社区H,C8T(Q6|1iR^:

P9C/YSETB00H;键释放,分调整闪烁标志置14Vj^z0Q#nJ?

'Jt0SET4:

JBP3.7,SET3;等待键按下电子爱好者社区|Irw.p%vLCALLDL05S;有键按下,延时0.5秒电子爱好者社区iR,]#i,~Z/N%kp_JNBP3.7,SETHH;按下时间大于0.5秒转调小时状态电子爱好者社区4yS,I"OU(Q%iDMOVR0,#77H;按下时间小于0.5秒加1分钟操作电子爱好者社区/Y"I)w*i7ZaVLCALLADD1;调用加1子程序电子爱好者社区0no2Xmh},A;Xs)_MOVA,R3;取调整单元数据!

E)w"q!

^4w:

zU5T0CLRC;清进位标志km:

QUJ'g0CJNEA,#60H,HHH;调整单元数据与60比较-^#I$s*n&N4Yy2lOJ0HHH:

JCSET4;调整单元数据小于60转SET4循环电子爱好者社区2gjz#O)JLCALLCLR0;调整单元数据大于或等于60时清0电子爱好者社区5NAPU7Y2{CLRC;清进位标志{lmm|H\0AJMPSET4;跳转到SET4循环.b6FS'x9w1K0CLOSEDIS:

SETBET0;省电(LED不显示)状态。

开T0中断电子爱好者社区cN.Pe(WSETBTR0;开启T0定时器(开时钟)电子爱好者社区3Ke,b+iCkG8eCLOSE:

JBP3.7,CLOSE;无按键按下,等待。

/~+^/P?

)@*r\Q0LCALLDISPLAY;有键按下,调显示子程序延时削抖4`2FOS4w.a&xp4T0JBP3.7,CLOSE;是干扰返回CLOSE等待电子爱好者社区W[?

@:

A+_WAITH:

JNBP3.7,WAITH;等待键释放电子爱好者社区ri`2GTit8x)DA(kLJMPSTART1;返回主程序(LED数据显示亮)电子爱好者社区&zHs\ZSETHH:

CLR00H;分闪烁标志清除(进入调小时状态).sbd|8D?

A0SETHH1:

JNBP3.7,SET5;等待键释放"XoUv-G'^x&w0SETB01H;小时调整标志置1电子爱好者社区tFg2D;t"S;ISET6:

JBP3.7,SET7;等待按键按下电子爱好者社区c\{*N)CPgLCALLDL05S;有键按下延时0.5秒2Q1ax%iWV5X0JNBP3.7,SETOUT;按下时间大于0.5秒退出时间调整.~e[']Ck9]0MOVR0,#79H;按下时间小于0.5秒加1小时操作ENRxi4N3f1eJnf0LCALLADD1;调加1子程序]`%r!

w*KM0MOVA,R3;电子爱好者社区Q$h*RAa3ssXCLRC;&txwv`k:

S&L0CJNEA,#24H,HOUU;计时单元数据与24比较'j*HT%|@f0HOUU:

JCSET6;小于24转SET6循环+{O,hfNd({6D(Z0LCALLCLR0;大于或等于24时清0操作电子爱好者社区1t8{"reo7o,FyhbEAJMPSET6;跳转到SET6循环$DK)ZP0gsE-u,?

0SETOUT:

JNBP3.7,SETOUT1;调时退出程序。

等待键释放mR:

qB!

CNF0LCALLDISPLAY;延时削抖?

x'b?

1rxb0JNBP3.7,SETOUT;是抖动,返回SETOUT再等待电子爱好者社区#ao-RR6TN"qCLR01H;清调小时标志o#]V"k-X)SHu0CLR00H;清调分标志.g,uQMiA(N,@0`O0CLR02H;清闪烁标志G:

z7T1Gx!

g0CLRTR1;关闭定时器T1&XpeW#]^0CLRET1;关定时器T1中断电子爱好者社区9ed"V#ntp)hFVpYSETBTR0;开启定时器T0电子爱好者社区a*t_,Aw{I+u$u"PESETBET0;开定时器T0中断(计时开始)电子爱好者社区3ZT]RNHHLJMPSTART1;跳回主程序#\S-C%VD[h0SET1:

LCALLDISPLAY;键释放等待时调用显示程序(调分)AdxG8J0AJMPSET2;防止键按下时无时钟显示电子爱好者社区9H*M1U\7IC3|goSET3:

LCALLDISPLAY;等待调分按键时时钟显示用电子爱好者社区aX:

w'X]IV]AJMPSET4电子爱好者社区t&J:

P8dwSET5:

LCALLDISPLAY;键释放等待时调用显示程序(调小时)电子爱好者社区)IB?

\}0JAJMPSETHH1;防止键按下时无时钟显示Z|,}9U@~*x0SET7:

LCALLDISPLAY;等待调小时按键时时钟显示用电子爱好者社区5w(rf6\4Em$FCAJMPSET6P6x)uR&Qv'},c0SETOUT1:

LCALLDISPLAY;退出时钟调整时键释放等待电子爱好者社区4Y$CcnPfvAJMPSETOUT;防止键按下时无时钟显示v%dH1c3wy:

S0;电子爱好者社区,P6X)WZ9G5QwyW%Jy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;N]&ZK*guPV%~0;;显示程序;;电子爱好者社区-]j4C*vwK];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'fVs*E'Kn%RrX0;显示数据在70H-75H单元内,用六位LED共阳数码管显示,P1口输出段码数据,P3口作电子爱好者社区r?

4kI;D;扫描控制,每个LED数码管亮1MS时间再逐位循环。

rd1t8iJ0DISPLAY:

MOVR1,#70H;指向显示数据首址电子爱好者社区`M6v7F`*P@WMOVR5,#0FEH;扫描控制字初值/o8V3V"[%l8e8gyE0PLAY:

MOVA,R5;扫描字放入A电子爱好者社区wX9UVAtl;BMOVP3,A;从P3口输出电子爱好者社区/|w,dU(@m)g.GMOVA,@R1;取显示数据到A电子爱好者社区5?

Ul$PR.rXMOVDPTR,#TAB;取段码表地址(Z:

A9s9n6|0{0MOVCA,@A+DPTR;查显示数据对应段码电子爱好者社区$f+f5\I$eMOVP1,A;段码放入P1口ER^X/n1|0LCALLDL1MS;显示1MS电子爱好者社区f'\V(K+H&J5csINCR1;指向下一地址电子爱好者社区.__[|rBMOVA,R5;扫描控制字放入A电子爱好者社区sV&O,v{!

UFzJNBACC.5,ENDOUT;ACC.5=0时一次显示结束电子爱好者社区J:

[EwIFp"aoRLA;A中数据循环左移电子爱好者社区o`"U|Vn~#D4M%aMOVR5,A;放回R5内电子爱好者社区n_M)_U*]AJMPPLAY;跳回PLAY循环%@(]-oQ3Y{#X:

|\|0ENDOUT:

SETBP3.5;一次显示结束,P3口复位wH1]M6GPI0MOVP1,#0FFH;P1口复位,cDCm+yj"Z*y0RET;子程序返回K$mzD#f,Y(|P0TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH%Xpu5GT;a0;共阳段码表"0""1""2""3""4""5""6""7""8""9""不亮"电子爱好者社区*FsFWg(~Z'ZsZ;mmmM'x_R0dp0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;]kkE_8UQ4OpQ0;;延时程序;;电子爱好者社区9ye-{oy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;电子爱好者社区2|/EP(?

3Uv;电子爱好者社区~-Kk"M%Xy3P2\B;J;1MS延时程序,LED显示程序用电子爱好者社区6|(^r.o4h*@\L(I-YDL1MS:

MOVR6,#14H电子爱好者社区i1~[Q$z'rnDL1:

MOVR7,#19H电子爱好者社区yX:

G*O[CDL2:

DJNZR7,DL2z4l3`,k/W}T0DJNZR6,DL1#@nt)m7F{yB#o0RET.DWj3r:

Ot"S$H7P"eu0;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象(a_YLYJw0DS20MS:

ACALLDISPLAY电子爱好者社区2BLE_bl1rACALLDISPLAY电子爱好者社区PVa[OACALLDISPLAY电子爱好者社区G#H"a3`s%ra7]*FRET"G:

dqA4P0a\0;延时程序,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1