AT89C2051制電子鐘時(shí)鐘源程序_第1頁
AT89C2051制電子鐘時(shí)鐘源程序_第2頁
AT89C2051制電子鐘時(shí)鐘源程序_第3頁
AT89C2051制電子鐘時(shí)鐘源程序_第4頁
AT89C2051制電子鐘時(shí)鐘源程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精品 料推薦at89c2051制電子鐘時(shí)鐘源程序本程序來自于互聯(lián)網(wǎng),站長尚沒試驗(yàn),但是,該程序給出了詳細(xì)的說明,相信對(duì)大家很有幫助!因此,站長向原作者表示真誠謝意!;at89c2051時(shí)鐘程序;定時(shí)器 t0 、 t1 溢出周期為50ms , t0 為秒計(jì)數(shù)用,t1 為調(diào)整時(shí)閃爍用,;p3.7為調(diào)整按鈕,p1 口 為字符輸出口,采用共陽顯示管。;中斷入口程序;org 0000h; 程序執(zhí)行開始地址ljmpstart ;跳到標(biāo)號(hào)start 執(zhí)行org 0003h; 外中斷 0 中斷程序入口reti; 外中斷 0 中斷返回org 000bh; 定時(shí)器 t0 中斷程序入口ljmpintt0 ;跳至 i

2、ntto執(zhí)行org 0013h; 外中斷 1 中斷程序入口reti; 外中斷 1 中斷返回org 001bh; 定時(shí)器 t1 中斷程序入口ljmpintt1 ;跳至 intt1執(zhí)行org 0023h; 串行中斷程序入口地址reti; 串行中斷程序返回;主 程 序;1精品 料推薦;start: movr0,#70h; 清 70h-7ah共 11 個(gè)內(nèi)存單元movr7,#0bh;cleardisp: movr0,#00h;incr0;djnz r7,cleardisp;mov20h,#00h; 清 20h (標(biāo)志用)mov7ah,#0ah; 放入 熄滅符 數(shù)據(jù)movtmod,#11h; 設(shè) t0

3、、 t1 為 16 位定時(shí)器movtl0,#0b0h;50ms定時(shí)初值(t0 計(jì)時(shí)用)movth0,#3ch;50ms定時(shí)初值movtl1,#0b0h;50ms定時(shí)初值(t1 閃爍定時(shí)用)movth1,#3ch;50ms定時(shí)初值setb ea; 總中斷開放setb et0; 允許t0 中斷setb tr0; 開啟t0 定時(shí)器movr4,#14h;1秒定時(shí)用初值( 50ms 20 )start1: lcall display; 調(diào)用顯示子程序jnbp3.7,setmm1;p3.7 口為 0 時(shí)轉(zhuǎn)時(shí)間調(diào)整程序sjmp start1;p3.7 口為 1 時(shí)跳回 start1setmm1:ljmp s

4、etmm; 轉(zhuǎn)到時(shí)間調(diào)整程序setmm;1 秒計(jì)時(shí)程序;t0 中斷服務(wù)程序intt0: push acc; 累加器入棧保護(hù)push psw; 狀態(tài)字入棧保護(hù)clret0; 關(guān) t0 中斷允許clrtr0; 關(guān)閉定時(shí)器 t0mova,#0b7h; 中斷響應(yīng)時(shí)間同步修正adda,tl0; 低 8位初值修正movtl0,a; 重裝初值(低 8位修正值)mova,#3ch; 高 8位初值修正addc a,th0;movth0,a; 重裝初值(高 8位修正值)setb tr0; 開啟定時(shí)器 t0djnz r4, outt0;20 次中斷未到中斷退出addss: movr4,#14h;20 次中斷到( 1

5、 秒)重賦初值movr0,#71h; 指向秒計(jì)時(shí)單元(71h-72h )acall add1; 調(diào)用加 1 程序(加 1秒操作)mova,r3; 秒數(shù)據(jù)放入 a ( r3 為 2 位十進(jìn)制數(shù)組合)clrc; 清進(jìn)位標(biāo)志cjne a,#60h,addmm;addmm: jcoutt0; 小于 60 秒時(shí)中斷退出2精品 料推薦acall clr0; 大于或等于 60秒時(shí)對(duì)秒計(jì)時(shí)單元清0movr0,#77h; 指向分計(jì)時(shí)單元( 76h-77h)acall add1; 分計(jì)時(shí)單元加 1 分鐘mova,r3; 分?jǐn)?shù)據(jù)放入 aclrc; 清進(jìn)位標(biāo)志cjne a,#60h,addhh;addhh: jcou

6、tt0; 小于 60分時(shí)中斷退出acall clr0; 大于或等于 60分時(shí)分計(jì)時(shí)單元清0movr0,#79h; 指向小時(shí)計(jì)時(shí)單元( 78h-79h)acall add1; 小時(shí)計(jì)時(shí)單元加1 小時(shí)mova,r3; 時(shí)數(shù)據(jù)放入 aclrc; 清進(jìn)位標(biāo)志cjne a,#24h,hour;hour: jcoutt0; 小于 24 小時(shí)中斷退出acall clr0; 大于或等于 24小時(shí)小時(shí)計(jì)時(shí)單元清0outt0: mov72h,76h; 中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù)移mov73h,77h; 入對(duì)應(yīng)顯示單元mov74h,78h;mov75h,79h;poppsw; 恢復(fù)狀態(tài)字(出棧)popacc;

7、恢復(fù)累加器setb et0; 開放t0 中斷reti; 中斷返回;閃動(dòng)調(diào)時(shí)程 序;t1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示intt1:pushacc; 中斷現(xiàn)場(chǎng)保護(hù)pushpsw;movtl1,#0b0h; 裝定時(shí)器t1 定時(shí)初值movth1,#3ch;djnzr2,intt1out;0.3秒未到退出中斷( 50ms中斷 6 次)movr2,#06h; 重裝 0.3 秒定時(shí)用初值cpl02h;0.3 秒定時(shí)到對(duì)閃爍標(biāo)志取反jb02h,flash1;02h位為 1 時(shí)顯示單元 熄滅 mov72h,76h;02h位為 0 時(shí)正常顯示mov73h,77h;mov74h,78h;mov75h,

8、79h;intt1out:poppsw; 恢復(fù)現(xiàn)場(chǎng)popacc;reti; 中斷退出flash1:jb01h,flash2;01h位為 1 時(shí),轉(zhuǎn)小時(shí)熄滅控制mov72h,7ah;01h位為 0 時(shí), 熄滅符 數(shù)據(jù)放入分mov73h,7ah; 顯示單元( 72h-73h ),將不顯示分?jǐn)?shù)據(jù)3精品 料推薦mov74h,78h;mov75h,79h;ajmpintt1out; 轉(zhuǎn)中斷退出flash2:mov72h,76h;01h 位為 1時(shí), 熄滅符 數(shù)據(jù)放入小時(shí)mov73h,77h; 顯示單元( 74h-75h),小時(shí)數(shù)據(jù)將不顯示mov74h,7ah;mov75h,7ah;ajmpintt1ou

9、t; 轉(zhuǎn)中斷退出;加 1 子 程序;add1: mova,r0; 取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到adecr0; 指向前一地址swap a;a 中數(shù)據(jù)高四位與低四位交換orla,r0; 前一地址中數(shù)據(jù)放入a 中低四位adda,#01h;a 加 1 操作daa; 十進(jìn)制調(diào)整movr3,a; 移入 r3寄存器anla,#0fh; 高四位變 0movr0,a; 放回前一地址單元mova,r3; 取回 r3 中暫存數(shù)據(jù)incr0; 指向當(dāng)前地址單元swapa;a 中數(shù)據(jù)高四位與低四位交換anla,#0fh; 高四位變 0movr0,a; 數(shù)據(jù)放入當(dāng)削地址單元中ret; 子程序返回;清零程序; 對(duì)計(jì)時(shí)單元復(fù)零用cl

10、r0: clra; 清累加器movr0,a; 清當(dāng)前地址單元decr0; 指向前一地址movr0,a; 前一地址單元清0ret; 子程序返回;時(shí)鐘調(diào)整程序; 當(dāng)調(diào)時(shí)按鍵按下時(shí)進(jìn)入此程序setmm: clret0; 關(guān)定時(shí)器t0 中斷clrtr0; 關(guān)閉定時(shí)器t0lcalldl1s; 調(diào)用 1 秒延時(shí)程序4精品 料推薦jbp3.7,closedis ;鍵按下時(shí)間小于1秒,關(guān)閉顯示(省電)movr2,#06h; 進(jìn)入調(diào)時(shí)狀態(tài),賦閃爍定時(shí)初值setbet1; 允許 t1 中斷setbtr1; 開啟定時(shí)器 t1set2: jnbp3.7,set1;p3.7 口為 0 (鍵未釋放) ,等待setb00h

11、; 鍵釋放,分調(diào)整閃爍標(biāo)志置1set4: jbp3.7,set3; 等待鍵按下lcalldl05s; 有鍵按下,延時(shí)0.5秒jnbp3.7,sethh; 按下時(shí)間大于0.5秒轉(zhuǎn)調(diào)小時(shí)狀態(tài)movr0,#77h; 按下時(shí)間小于0.5秒加 1 分鐘操作lcalladd1; 調(diào)用加 1 子程序mova,r3; 取調(diào)整單元數(shù)據(jù)clrc; 清進(jìn)位標(biāo)志cjnea,#60h,hhh; 調(diào)整單元數(shù)據(jù)與60比較hhh: jcset4; 調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn) set4循環(huán)lcallclr0; 調(diào)整單元數(shù)據(jù)大于或等于60 時(shí)清 0clrc; 清進(jìn)位標(biāo)志ajmpset4; 跳轉(zhuǎn)到 set4 循環(huán)closedis: s

12、etbet0; 省電( led 不顯示)狀態(tài)。開t0 中斷setbtr0; 開啟t0 定時(shí)器(開時(shí)鐘)close:jbp3.7,close; 無按鍵按下,等待。lcalldisplay; 有鍵按下,調(diào)顯示子程序延時(shí)削抖jbp3.7,close; 是干擾返回 close等待waith:jnbp3.7,waith; 等待鍵釋放ljmpstart1; 返回主程序( led 數(shù)據(jù)顯示亮)sethh: clr00h; 分閃爍標(biāo)志清除(進(jìn)入調(diào)小時(shí)狀態(tài))sethh1: jnbp3.7,set5; 等待鍵釋放setb01h; 小時(shí)調(diào)整標(biāo)志置1set6: jbp3.7,set7; 等待按鍵按下lcalldl05

13、s; 有鍵按下延時(shí) 0.5秒jnbp3.7,setout; 按下時(shí)間大于0.5秒退出時(shí)間調(diào)整movr0,#79h; 按下時(shí)間小于0.5秒加 1 小時(shí)操作lcalladd1; 調(diào)加 1 子程序mova,r3;clrc;cjnea,#24h,houu; 計(jì)時(shí)單元數(shù)據(jù)與24 比較houu: jcset6; 小于 24 轉(zhuǎn) set6循環(huán)lcallclr0; 大于或等于 24時(shí)清 0操作ajmpset6; 跳轉(zhuǎn)到 set6 循環(huán)setout: jnbp3.7,setout1; 調(diào)時(shí)退出程序。等待鍵釋放lcalldisplay; 延時(shí)削抖jnbp3.7,setout; 是抖動(dòng),返回setout 再等待cl

14、r01h; 清調(diào)小時(shí)標(biāo)志clr00h; 清調(diào)分標(biāo)志clr02h; 清閃爍標(biāo)志clrtr1; 關(guān)閉定時(shí)器 t15精品 料推薦clret1; 關(guān)定時(shí)器t1 中斷setbtr0; 開啟定時(shí)器t0setbet0; 開定時(shí)器t0 中斷(計(jì)時(shí)開始)ljmpstart1; 跳回主程序set1: lcalldisplay; 鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分)ajmpset2; 防止鍵按下時(shí)無時(shí)鐘顯示set3: lcalldisplay; 等待調(diào)分按鍵時(shí)時(shí)鐘顯示用ajmpset4set5: lcalldisplay; 鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí))ajmpsethh1; 防止鍵按下時(shí)無時(shí)鐘顯示set7: lc

15、alldisplay; 等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用ajmpset6setout1: lcalldisplay; 退出時(shí)鐘調(diào)整時(shí)鍵釋放等待ajmpsetout; 防止鍵按下時(shí)無時(shí)鐘顯示;顯示程序;顯示數(shù)據(jù)在70h-75h單元內(nèi),用六位led 共陽數(shù)碼管顯示,p1 口輸出段碼數(shù)據(jù),p3 口作; 掃描控制,每個(gè) led 數(shù)碼管亮 1ms 時(shí)間再逐位循環(huán)。display: movr1,#70h; 指向顯示數(shù)據(jù)首址movr5,#0feh; 掃描控制字初值play: mova,r5; 掃描字放入 amovp3,a; 從 p3口輸出mova,r1; 取顯示數(shù)據(jù)到 amovdptr,#tab; 取段碼表地址m

16、ovca,a+dptr; 查顯示數(shù)據(jù)對(duì)應(yīng)段碼movp1,a; 段碼放入 p1 口lcalldl1ms; 顯示 1msincr1; 指向下一地址mova,r5; 掃描控制字放入ajnbacc.5,endout;acc.5=0時(shí)一次顯示結(jié)束rla;a 中數(shù)據(jù)循環(huán)左移movr5,a; 放回r5 內(nèi)ajmpplay; 跳回 play 循環(huán)endout: setbp3.5; 一次顯示結(jié)束,p3 口復(fù)位movp1,#0ffh;p1口復(fù)位ret; 子程序返回tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh; 共陽段碼表012 34567 89不亮 ;延時(shí)程序;1ms延時(shí)程序, led 顯示程序用6精品 料推薦dl1ms: mo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論