李啟明 李傳芳
[摘 要]學(xué)習(xí)MCS51系列單片機(jī),需要了解MCS51系列單片機(jī)的學(xué)習(xí)要點(diǎn),這是學(xué)習(xí)MCS51系列單片機(jī)的捷徑。這篇文章的目的就是說(shuō)明MCS51系列單片機(jī)的學(xué)習(xí)要點(diǎn),并加以分析,供給讀者參考。
[關(guān)鍵詞]MCS51;讀寫(xiě)指令;堆棧;I/O ;中斷
掌握了微機(jī)的工作原理以及匯編程序的基本應(yīng)用方法,為學(xué)習(xí)MCS51系列單片機(jī)打下堅(jiān)實(shí)的基礎(chǔ),使學(xué)習(xí)MCS51系列單片機(jī)更加輕松簡(jiǎn)單。如果我們能夠?qū)W(xué)習(xí)MCS51系列單片機(jī)的要點(diǎn)提出來(lái),那就可以起到事半功倍的作用。
一、MCS51系列單片機(jī)存儲(chǔ)器讀寫(xiě)指令
在微機(jī)原理中的匯編語(yǔ)言程序里,無(wú)論是在內(nèi)外存儲(chǔ)器間傳送數(shù)據(jù)還是讀取程序存儲(chǔ)器的數(shù)據(jù),都是應(yīng)用MOV操作指令來(lái)完成。但是MCS51系列單片機(jī)有許多不同。首先是MSC51系列單片機(jī)的存儲(chǔ)器分為內(nèi)部數(shù)據(jù)存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器以及內(nèi)外部程序存儲(chǔ)器,其匯編語(yǔ)言程序讀寫(xiě)這些存儲(chǔ)器指令都有不同之處。例如讀寫(xiě)內(nèi)部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)用MOV指令即可,而讀寫(xiě)外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)則必須使用MOVX指令。讀內(nèi)外部程序存儲(chǔ)器的數(shù)據(jù)時(shí)也要使用MOVC指令。
二、MCS51系列單片機(jī)的堆棧和堆棧指令
無(wú)論是在微機(jī)原理還是在MCS51系列單片機(jī)中,堆棧的含義都是相同的,就是以“先進(jìn)后出”的方式。堆棧操作中有兩條指令:①是入棧指令PUSH,②是出棧指令POP。微機(jī)原理中,堆棧是按向下減少的,進(jìn)行PUSH指令操作時(shí),棧頂?shù)刂稴P減2后送回SP,再存入一個(gè)字?jǐn)?shù)據(jù)(即兩個(gè)字節(jié)數(shù)據(jù));POP指令是把當(dāng)前棧頂?shù)刂稴P所指的一個(gè)字?jǐn)?shù)據(jù)(即兩個(gè)字節(jié)數(shù)據(jù))取出后,棧頂?shù)刂稴P加2后送回SP。而在MCS51系列單片機(jī)中,堆棧是向上增長(zhǎng)的,PUSH指令入棧的數(shù)據(jù)只是一個(gè)字節(jié),且入棧時(shí)先將棧頂?shù)刂稴P自動(dòng)加1,然后才將數(shù)據(jù)壓入堆棧;而POP指令的操作則是先將堆棧中的一個(gè)字節(jié)數(shù)據(jù)彈出送給direct(存儲(chǔ)地址),然后棧頂?shù)刂稴P自動(dòng)減1。
三、MCS51系列單片機(jī)的I/O輸入輸出方式
在微機(jī)原理的課程中,進(jìn)行I/O輸入輸出必須擴(kuò)展連接外部的I/O元器件,如8155、8255 I/O芯片。8086/8088CPU采用I/O端口獨(dú)立編址形式。CPU用專(zhuān)門(mén)的I/O指令去訪問(wèn)I/O端口。輸入指令I(lǐng)N AX,PORT端口字信息送AX,以及IN AL,PORT端口字節(jié)信息送AL;輸出指令OUT? PORT, AX字信息送端口,以及OUT PORT, AL字節(jié)信息送端口。IN和OUT指令都提供了字和字節(jié)兩種使用方式,地址PORT就是專(zhuān)用的地址空間,而在MCS51系列單片機(jī)的輸入輸出就簡(jiǎn)單得多了,因?yàn)镸CS51系列單片機(jī)的芯片內(nèi)有四個(gè)雙向并行I/O端口P0~P3,每個(gè)端口都配有端口鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器,每個(gè)I/O口可以進(jìn)行字節(jié)輸入/輸出,也可以單獨(dú)進(jìn)行位輸入/輸出。在對(duì)I/O口進(jìn)行讀寫(xiě)操作時(shí),其讀寫(xiě)方式和讀寫(xiě)數(shù)據(jù)存儲(chǔ)器的方式是一樣的。例如讀寫(xiě)P1端口,其指令為MOV A,P1端口P1字節(jié)信息送A累加器,MOV P1,A字節(jié)信息送端口P1。單獨(dú)進(jìn)行位輸入輸出的指令為SETB P1.0把P1口的第0位置1,即輸出高電平;CLR P2.3 把P2口的第3位置0,即輸出低電平。
四、MCS51系列單片機(jī)的中斷
在微機(jī)原理的課程中,以8086/8088的中斷系統(tǒng)為例,該中斷系統(tǒng)可以處理256種不同的中斷。最多有256個(gè)中斷向量,每個(gè)中斷向量對(duì)應(yīng)一個(gè)中斷類(lèi)型碼,且每個(gè)中斷向量需要四位存儲(chǔ)地址,一共需要1k的存儲(chǔ)單元,中斷向量表安排在00000H~003FFH。在中斷響應(yīng)時(shí),CPU把中斷類(lèi)型碼乘于4,由此取得該中斷源的中斷向量地址指針,依據(jù)該指針可從中斷向量表中取出兩個(gè)字分別送入IP和CS,引導(dǎo)CPU去執(zhí)行中斷服務(wù)程序。所有在編制好中斷服務(wù)程序后,給中斷服務(wù)程序安排了存儲(chǔ)空間,還須將它的入口地址置入中斷向量表中與中斷類(lèi)型碼對(duì)應(yīng)的地址中,當(dāng)中斷到來(lái)時(shí),CPU才會(huì)根據(jù)中斷類(lèi)型碼自動(dòng)取出中斷向量,轉(zhuǎn)入中斷服務(wù)程序中。MCS51系列單片機(jī)的中斷系統(tǒng)具有三類(lèi)共五個(gè)中斷源,即INT0和INT1以及 T0、T1定時(shí)或計(jì)數(shù)溢出中斷和串行口發(fā)送或接受中斷。MCS51系列單片機(jī)的中斷系統(tǒng)也設(shè)置了中斷向量,但其向量地址是一一對(duì)應(yīng)固定的。INT0外部中斷向量地址是0003H,INT1外部中斷向量地址是0013H,T0定時(shí)/計(jì)數(shù)溢出中斷向量地址是000BH,T1定時(shí)/計(jì)數(shù)溢出中斷向量地址是001BH,串行發(fā)送或接受中斷向量地址是0023H。MCS51系列單片機(jī)發(fā)生中斷時(shí),其CPU會(huì)根據(jù)中斷類(lèi)型從各固定地址取出中斷服務(wù)程序的入口地址,轉(zhuǎn)入中斷服務(wù)程序中。
參考文獻(xiàn):
[1]許立梓,何小敏,高明琴,等.微型計(jì)算機(jī)原理及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2003.
[2]李明,畢萬(wàn)新.單片機(jī)原理與接口技術(shù)[M].大連:大連理工大學(xué)出版社,2014.
[作者單位]
廣東工業(yè)大學(xué)課室管理中心
(編輯:原琳娜)