MCS51系列單片機(jī)系統(tǒng)其應(yīng)用_第1頁(yè)
MCS51系列單片機(jī)系統(tǒng)其應(yīng)用_第2頁(yè)
MCS51系列單片機(jī)系統(tǒng)其應(yīng)用_第3頁(yè)
MCS51系列單片機(jī)系統(tǒng)其應(yīng)用_第4頁(yè)
MCS51系列單片機(jī)系統(tǒng)其應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用

實(shí)驗(yàn)四:時(shí)鐘實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:在實(shí)驗(yàn)三的基礎(chǔ)上,利用LED顯示字型的功能,應(yīng)用單片機(jī)的定時(shí)器及定時(shí)器中斷功能編制一程序,讓LED數(shù)碼顯示器上顯示出按精確秒信號(hào)的節(jié)律變化的字型,即電子時(shí)鐘。實(shí)驗(yàn)?zāi)康模?:掌握在RAM區(qū)內(nèi)開辟顯示緩沖區(qū)的方法。2:進(jìn)一步熟悉用LED數(shù)碼管顯示字型程序的設(shè)計(jì)方法。3:掌握定時(shí)器初始值的計(jì)算方法。4:掌握定時(shí)器的用法以及定時(shí)器中斷的控制。5:明確中斷子程序與一般子程序的區(qū)別及聯(lián)系。6:學(xué)會(huì)設(shè)計(jì)簡(jiǎn)單的數(shù)值比較程序,學(xué)會(huì)設(shè)計(jì)根據(jù)RAM中某一單元的內(nèi)容進(jìn)行查表的程序。實(shí)驗(yàn)要求:1:設(shè)計(jì)程序時(shí),應(yīng)在內(nèi)部RAM中開辟顯示緩沖區(qū),緩沖區(qū)內(nèi)首先設(shè)置時(shí)鐘的初始時(shí)間<12-00-00)。2:利用定時(shí)器的計(jì)數(shù)溢出產(chǎn)生中斷,從而產(chǎn)生秒信號(hào)。3:將LED數(shù)字顯示程序設(shè)計(jì)為子程序,將時(shí)、分、秒加“1”的溢出判斷在中斷服務(wù)子程序中進(jìn)行,主程序完成初始化后一直調(diào)用顯示子程序。程序的設(shè)計(jì)思路參考如下:1:將內(nèi)部的RAM中的78H—7FH這八個(gè)單元作為顯示緩沖區(qū),將時(shí)鐘要顯示的初值的數(shù)字<非字型代碼)置入這八個(gè)單元中,等待顯示子程序利用其中的數(shù)據(jù)去查出相應(yīng)的字型代碼,送出顯示。2:用有寄存器間接尋址功能的工作寄存器R0作為顯示緩沖區(qū)的指示器,將顯示緩沖區(qū)內(nèi)的數(shù)據(jù)與查表類指令發(fā)生聯(lián)系,以便按顯示緩沖區(qū)內(nèi)的數(shù)據(jù)查表。3:主程序初始化時(shí)首先將定時(shí)器中斷的總開關(guān)關(guān)閉,選擇一個(gè)定時(shí)器,設(shè)定該定時(shí)器的工作方式,將該定時(shí)器的兩個(gè)計(jì)數(shù)單元賦一預(yù)先設(shè)好的初始數(shù)據(jù)。開啟所有與所選擇的定時(shí)器有關(guān)的中斷開關(guān),但不啟動(dòng)計(jì)數(shù)器,作好準(zhǔn)備。4:當(dāng)主程序初始化完畢之后,開始調(diào)用顯示子程序之前開啟計(jì)數(shù)器,此時(shí)主程序即進(jìn)入無休止的調(diào)用顯示子程序的狀態(tài),隨時(shí)準(zhǔn)備著被定時(shí)器所中斷。5:在中斷子程序的入口處若有必要保護(hù)主程序在中斷時(shí)主要寄存器的狀態(tài),請(qǐng)務(wù)必執(zhí)行堆棧以保護(hù)中斷時(shí)CPU的現(xiàn)場(chǎng)。并且關(guān)閉所選擇的定時(shí)器的中斷允許控制位,但不要讓定時(shí)計(jì)數(shù)器停止計(jì)數(shù),重新對(duì)定時(shí)器的定時(shí)單元進(jìn)行賦值<與主程序初始化時(shí)所賦的值相同)。6:靠定時(shí)器溢出一次,不可能產(chǎn)生秒信號(hào),所以要在定時(shí)器溢出發(fā)生中斷,程序條入中斷服務(wù)程序后,不僅要給定時(shí)器重新賦值,而且要設(shè)計(jì)一個(gè)計(jì)數(shù)器,讓定時(shí)器溢出若干次,直到定時(shí)器定時(shí)的累積值達(dá)到1秒為止,然后對(duì)顯示緩沖區(qū)的秒位加“1”,在加“1”之后還要判斷是否產(chǎn)生進(jìn)位,然后加以處理,結(jié)果讓屏幕上所顯示的數(shù)字為時(shí)鐘的有效數(shù)值,即秒位與分位不能超出60,小時(shí)位則不能超出24<統(tǒng)一將時(shí)鐘設(shè)計(jì)為24小時(shí)制)。

7:為了使所設(shè)計(jì)的程序簡(jiǎn)短,建議將程序中相同的部分都設(shè)計(jì)成子程序。參考程序二例:<CJC7.ASM、CJC8.ASM)參考程序<CJC7,ASM與CJC8.ASM)的有關(guān)說明:程序一<CJC7.ASM)中編制了多個(gè)子程序,在程序的長(zhǎng)度上與參考程序二<CJC8.ASM)相當(dāng)。主程序略有不同,中斷服務(wù)程序則大有差別,但都能實(shí)現(xiàn)同一個(gè)目的<電子時(shí)鐘)。參考程序一:CJC7.ASMORG0000HAJMP0030HORG000BH ;定時(shí)器中斷入口地址AJMPINTT0 ;跳入中斷服務(wù)子程序MAIN: MOV78H,#00HMOV79H,#00HMOV7AH,#0AHMOV7BH,#00HMOV7CH,#00HMOV7DH,#0AHMOV7EH,#02HMOV7FH,#01H;顯示緩沖區(qū)初始化; MOVSP,#50HMOVR0,MOVSP,#50HMOVR0,#78HMOVTMOD,#01HMOVTH0,#17HMOVTL0,#0B8HSETB8CHSETB0AFHSETB0A9HMOVR6,#08HLOOP0: LCALLDISPSJMPLOOP0; DISP: MOVR1,#01HLOOP1: MOVA,@R0MOVCA,@A+DPTRMOVP0,AMOVP1,R1ACALLDELAYINCR0MOVA,R1CJNEA,#01H,LOOP1MOVR0,#78H;修改堆棧指針;給定顯示緩沖區(qū)首地址;設(shè)置定時(shí)器的定時(shí)方式;預(yù)置定時(shí)初值;開中斷、啟動(dòng)定時(shí)器;調(diào)用顯示子程序顯示1個(gè)數(shù)字;顯示8個(gè)數(shù)字RET。DELAY: MOVR3,#0FFH;中斷服務(wù)程序;定時(shí)器再次預(yù)置初值;中斷服務(wù)程序;定時(shí)器再次預(yù)置初值;保護(hù)現(xiàn)場(chǎng);到1秒否?;秒加“1”;到60秒否?;秒位清零;分加“1”;到60分否?;分位清零;小時(shí)加“1”;到24小時(shí)否?;小時(shí)位清零中斷返回DJNZR3,$MOVR4,#0FFHDJNZR4,$RET;0.5毫秒延時(shí)。 DATA: DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80HDB90H,0BFH ;顯示字型代碼表INTT0:MOVTH0,#17HMOVTL0,#0B8HPUSHACCPUSHPSWSETBPSW.3MOVA,30HDECAMOV30H,AJNZRETOMOV30H,#08HMOVR0,#79HACALLADD1MOVA,R2XRLA,#60JNZRETOACALLCLR0MOVR0,#7CHACALLADD1MOVA,R2XRLA,#60JNZRETOACALLCLR0MOVR0,#7FHACALLADD1MOVA,R2XRLA,#24JNZRETOACALLCLR0RETO: POPPSWPOPACC;恢復(fù)現(xiàn)場(chǎng)RETI

。 ADD1:MOVA,@R0;加“1”子程序DECR0SWAPAORLA,@R0;合并字節(jié)ADDA,#01H;加“1”DAAMOVR2,AANLA,#0FH;坼分字節(jié)MOV@R0,A;放入顯示緩沖區(qū)MOVA,R2INCR0ANLA,#0F0HSWAPAMOV@R0,A;放入顯示緩沖區(qū)。 CLR0:RET CLRAMOV@R0,ADECR0MOV@R0,ARET ;清零子程序參考程序二:CJC8.ASMORG0000HAJMP000EH ;主程序入口ORG000BH ;定時(shí)器中斷程序入口AJMPINTT0 ;跳入中斷服務(wù)程序ORG000EHMAIN: MOV78H,#00HMOV79H,#00HMOV7AH,#0AHMOV7BH,#00HMOV7CH,#00HMOV7DH,#0AHMOV7EH,#02HMOV7FH,#01H;顯示緩沖區(qū)初始化MOVR0,#78HMOVTMOD,#01HMOVTH0,#17HMOVTL0,#0B8HSETBTR0SETBET0SETBEA ;定時(shí)器的控制MOVR6,#08HLOOP0:LCALLDISP ;調(diào)用顯示程序SJMPLOOP0; DISP:MOVR1,#01H ;顯示子程序LOOP1: MOVA,@R0MOVCA,@A+DPTRMOVP0,AMOVP1,R1ACALLDELAYINCR0MOVA,R1RLAMOVR1,ACJNEA,#01H,LOOP1MOVR0,#78HRETDELAY: MOVR3,#0FFHDJNZR3,$MOVR4,#0FFHDJNZR4,$RET ;顯示用延時(shí)程序DATA: DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80HDB90H,0BFH ;顯示字型代碼表INTT0:MOVTH0,#17H;中斷服務(wù)程序MOVTL0,#0B8HPUSHACCDJNZR6,RETOINC78HMOVA,78HCJNEA,#0AH,RETOMOV78H,#00HINC79HMOVA,79HCJNEA,#06H,RETOMOV79H,#00HINC7BHMOVA,7BHCJNEA,#0AH,RETOINC7CHMOVA,7CHCJNEA,#06H,RETOMOV7CH,#00HINC77HINC7EHMOVA,77HCJNEA,#24,TEETRETO:MOV77H,#00HMOV7EH,#00HMOV7F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論