版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)系統(tǒng)及單片機(jī)開(kāi)發(fā)系統(tǒng)的認(rèn)識(shí)與使用項(xiàng)目一初識(shí)系統(tǒng)
簡(jiǎn)單實(shí)例初識(shí)系統(tǒng)請(qǐng)大家認(rèn)識(shí)一下這是何物
簡(jiǎn)單實(shí)例初識(shí)系統(tǒng)數(shù)字電子時(shí)鐘
簡(jiǎn)單實(shí)例初識(shí)系統(tǒng)該電子鐘如何設(shè)計(jì)數(shù)字電子鐘電路板初識(shí)系統(tǒng)單片機(jī)芯片數(shù)字電子鐘電路圖初識(shí)系統(tǒng)單片機(jī)芯片數(shù)字電子鐘設(shè)計(jì)思路初識(shí)系統(tǒng)1、硬件設(shè)計(jì)2、軟件設(shè)計(jì)總體設(shè)計(jì)數(shù)字電子鐘設(shè)計(jì)思路初識(shí)系統(tǒng)1、硬件電路圖設(shè)計(jì)數(shù)字電子鐘設(shè)計(jì)思路初識(shí)系統(tǒng)1、硬件電路板制作單片機(jī)芯片數(shù)字電子鐘設(shè)計(jì)思路初識(shí)系統(tǒng)2、軟件設(shè)計(jì)軟件程序項(xiàng)目一單片機(jī)系統(tǒng)及單片機(jī)開(kāi)發(fā)系統(tǒng)的認(rèn)識(shí)與使用初識(shí)系統(tǒng)1單片機(jī)的基本概念2單片機(jī)的組成結(jié)構(gòu)3*單片機(jī)開(kāi)發(fā)軟件的使用*虛擬平臺(tái)軟件的使用4燒錄軟件與仿真器的使用(本章不講)一、相關(guān)理論部分二、實(shí)際操作部分1單片機(jī)基本概念初識(shí)系統(tǒng)1、中央處理單元(運(yùn)算、控制)2、隨機(jī)存儲(chǔ)單元(數(shù)據(jù)存儲(chǔ))3、存儲(chǔ)器ROM(程序存儲(chǔ))4、輸入輸出I/O口(串行、并行輸出)一、什么是單片機(jī),與個(gè)人電腦的不同首先了解PC機(jī)的構(gòu)成:初識(shí)系統(tǒng)1、中央處理單元2、隨機(jī)存儲(chǔ)單元3、存儲(chǔ)器ROM4、輸入輸出I/O口PC機(jī)單片機(jī)整合在主板上整合在芯片中(MCU:MicroControlUnit)VS二、單片機(jī)的特點(diǎn)初識(shí)系統(tǒng)1、體積小、成本低2、穩(wěn)定可靠3、高性能、高速度4、壽命長(zhǎng)、適應(yīng)性強(qiáng)5、控制功能強(qiáng)三、單片機(jī)的發(fā)展初識(shí)系統(tǒng)總的來(lái)看,單片機(jī)發(fā)展的三個(gè)階段20世紀(jì)70年代是單片機(jī)發(fā)展的初級(jí)階段20世紀(jì)80年代是高性能單片機(jī)的發(fā)展階段20世紀(jì)90年代是單片機(jī)的高速發(fā)展階段初識(shí)系統(tǒng)從CPU的發(fā)展來(lái)看:CPU的字長(zhǎng):8位、16位、32位時(shí)鐘頻率:6MHz、12MHz、20MHz雙CPU結(jié)構(gòu):處理能力大大提高三、單片機(jī)的發(fā)展初識(shí)系統(tǒng)從片內(nèi)存儲(chǔ)器的發(fā)展來(lái)看:1、擴(kuò)大存儲(chǔ)容量早期單片機(jī)新型單片機(jī)RAM64~128B256BROM1~2KB8~16KB尋址范圍1~4KB64KB三、單片機(jī)的發(fā)展初識(shí)系統(tǒng)從片內(nèi)存儲(chǔ)器的發(fā)展來(lái)看:2、片內(nèi)EPROM開(kāi)始EEPROM化3、片內(nèi)程序的保密措施加強(qiáng)三、單片機(jī)的發(fā)展初識(shí)系統(tǒng)從片內(nèi)輸入輸出功能來(lái)看:早期單片機(jī):并行I/O接口、定時(shí)器、計(jì)數(shù)器現(xiàn)代單片機(jī):大功率I/O接口,可以直接驅(qū)動(dòng)VFD(熒光顯示管)、LCD(液晶顯示器)、LED(數(shù)碼顯示管);片內(nèi)有A/D、D/A轉(zhuǎn)換器,集成CRT控制器、正弦波發(fā)生器、聲音發(fā)生器、字符發(fā)生器、頻率合成器等三、單片機(jī)的發(fā)展四、單片機(jī)的分類(lèi)初識(shí)系統(tǒng)按用途分:通用單片機(jī)是一個(gè)基本芯片,內(nèi)部資源比較豐富,性能全面且通用性強(qiáng),覆蓋多種應(yīng)用需求。專(zhuān)用單片機(jī)針對(duì)某一種產(chǎn)品或者某一種控制應(yīng)用而專(zhuān)門(mén)設(shè)計(jì)的。設(shè)計(jì)時(shí)已使系統(tǒng)結(jié)構(gòu)最簡(jiǎn),軟硬件資源利用最優(yōu),可靠性以及經(jīng)濟(jì)成本最佳。四、單片機(jī)的廠家初識(shí)系統(tǒng)Intel公司:8048、8051、8096、80960Motorola公司:MC-6801、68H16、68HC32國(guó)產(chǎn):STC系列其他:Zilog公司、日本的NEC、荷蘭的PHILIPS五、單片機(jī)系統(tǒng)初識(shí)系統(tǒng)1、單片機(jī)系統(tǒng):2、單片機(jī)應(yīng)用系統(tǒng):3、單片機(jī)開(kāi)發(fā)系統(tǒng):初識(shí)系統(tǒng)六、單片機(jī)的應(yīng)用單片機(jī)在智能儀表中的作用單片機(jī)在機(jī)電一體化中的作用單片機(jī)在實(shí)時(shí)控制中的作用單片機(jī)在分布式多機(jī)系統(tǒng)中的應(yīng)用單片機(jī)在家用電器等消費(fèi)領(lǐng)域的應(yīng)用初識(shí)系統(tǒng)七、單片機(jī)的定義單片機(jī)是一種集成在電路芯片,
是采用超大規(guī)模集成電路技術(shù),
把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能
(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。在我們知道了單片機(jī)的基本概念之后,讓我們來(lái)做個(gè)小小實(shí)驗(yàn)訓(xùn)練吧單片機(jī)開(kāi)發(fā)軟件(KeiluVision2)的使用方法初識(shí)系統(tǒng)2
單片機(jī)的組成結(jié)構(gòu)51系列單片機(jī)的結(jié)構(gòu)框圖——總線(xiàn)型結(jié)構(gòu)初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)1、一個(gè)八位CPU運(yùn)算器程序計(jì)數(shù)器PC指令寄存器定時(shí)與控制部件算術(shù)和邏輯運(yùn)算加減乘除加1減1、比較等算數(shù)運(yùn)算與或異或求補(bǔ)循環(huán)等邏輯運(yùn)算布爾處理器初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)運(yùn)算器程序計(jì)數(shù)器PC指令寄存器定時(shí)與控制部件PC用來(lái)存放即將要執(zhí)行的指令地址共16位,可對(duì)64K的ROM直接尋址,PC低8位經(jīng)P0口輸出、高8位經(jīng)P2口輸出。1、一個(gè)八位CPU初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)運(yùn)算器程序計(jì)數(shù)器PC指令寄存器定時(shí)與控制部件指令寄存器存放指令代碼CPU執(zhí)行過(guò)程:ROM中讀取指令代碼送入指令寄存器中,經(jīng)過(guò)譯碼后與控制電路發(fā)出相應(yīng)的控制信號(hào)。1、一個(gè)八位CPU初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)運(yùn)算器程序計(jì)數(shù)器PC指令寄存器定時(shí)與控制部件時(shí)鐘電路:MCS-51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為XTAL1,輸出端為XTAL2。有兩種時(shí)鐘生成電路,內(nèi)部方式和外部方式。1、一個(gè)八位CPU初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)51系列4K,52系列8K1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)51系列128B,52系列256B1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM3、數(shù)據(jù)存儲(chǔ)器RAM初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)51系列2個(gè)16位定時(shí)/計(jì)數(shù)器52系列3個(gè)16位定時(shí)/計(jì)數(shù)器1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM3、數(shù)據(jù)存儲(chǔ)器RAM4、16位定時(shí)器/計(jì)數(shù)器初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)4個(gè)八位并行I/O口1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM3、數(shù)據(jù)存儲(chǔ)器RAM4、16位定時(shí)器/計(jì)數(shù)器5、32條可編程I/O口初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)可尋址64K外部數(shù)據(jù)存儲(chǔ)器(RAM)和64K外部程序存儲(chǔ)器(ROM)1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM3、數(shù)據(jù)存儲(chǔ)器RAM4、16位定時(shí)器/計(jì)數(shù)器5、32條可編程I/O口6、擴(kuò)展外部存儲(chǔ)器初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)可編程全雙工串行口1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM3、數(shù)據(jù)存儲(chǔ)器RAM4、16位定時(shí)器/計(jì)數(shù)器5、32條可編程I/O口6、擴(kuò)展外部存儲(chǔ)器7、一個(gè)串行口初識(shí)系統(tǒng)2.1
單片機(jī)的硬件結(jié)構(gòu)5個(gè)中斷源、2個(gè)中斷優(yōu)先級(jí)的中斷控制器1、一個(gè)八位CPU2、程序存儲(chǔ)器ROM3、數(shù)據(jù)存儲(chǔ)器RAM4、16位定時(shí)器/計(jì)數(shù)器5、32條可編程I/O口6、擴(kuò)展外部存儲(chǔ)器7、一個(gè)串行口8、中斷初識(shí)系統(tǒng)2.28051的引腳及基本電路單片機(jī)個(gè)頭有多大?初識(shí)系統(tǒng)2.28051的引腳及基本電路幾個(gè)不同的封裝形式一、QFP封裝方型扁平封裝目前商品的主流44個(gè)引腳初識(shí)系統(tǒng)2.28051的引腳及基本電路幾個(gè)不同的封裝形式二、PLCC封裝常見(jiàn)44個(gè)引腳初識(shí)系統(tǒng)2.28051的引腳及基本電路幾個(gè)不同的封裝形式三、DIP封裝體積較大適合學(xué)校培訓(xùn)40個(gè)引腳初識(shí)系統(tǒng)2.28051的引腳及基本電路實(shí)物圖引腳圖任務(wù):記住這40個(gè)引腳!初識(shí)系統(tǒng)2.28051的引腳及基本電路不怕:我有秘籍1、電源引腳幾乎所有的IC都必須接用電源,8051和其他IC相似,右上角接Vcc,左下角接Vss。所以8051的40腳為Vcc引腳,連接5V電壓;20腳為Vss(GND)引腳,必須接地。2、輸入/輸出接口Vcc(40腳)下是P039腳是P0的起始腳即:39~32腳為P0P0的對(duì)面就是P1即:1~8腳為P1P1的斜對(duì)角是P2即:21~28腳為P2P2的對(duì)面就是P3即:10~17腳為P33、復(fù)位引腳對(duì)8051而言,只要復(fù)位腳接高電平超過(guò)兩個(gè)機(jī)器周期(約2μs),即可產(chǎn)生復(fù)位操作。8051的Reset在P1和P3之間,即第九腳記憶方法:系統(tǒng)久久不動(dòng),就需要reset。其中“久久”即表示“9”號(hào)腳。4、頻率引腳微控制器都需要時(shí)鐘脈沖,作為接地引腳(Vss)上方的兩只腳就是時(shí)鐘脈沖引腳。即:18、19腳,分別是XTAL2和XTAL1。5、存儲(chǔ)器引腳8051既有內(nèi)部存儲(chǔ)器,也可以擴(kuò)展外部存儲(chǔ)器,具體使用哪個(gè)存儲(chǔ)器,需視31腳而定!31腳是EA,是一個(gè)使能引腳。EA=1時(shí),系統(tǒng)使用內(nèi)部存儲(chǔ)器;EA=0時(shí),系統(tǒng)使用外部存儲(chǔ)器。6、外部存儲(chǔ)器控制引腳30腳為地址鎖存允許信號(hào)ALE,其功能是在方位外部存儲(chǔ)器時(shí),送出一個(gè)將原本在P0中的地址(A0~A7)地址鎖存在外部鎖存器IC的信號(hào),讓P0空出來(lái),以傳輸數(shù)據(jù)。29腳為程序存儲(chǔ)器允許輸出端PSEN。通常此腳連接到外部存儲(chǔ)器(ROM)的OE腳,當(dāng)8051需要讀取外部存儲(chǔ)器的數(shù)據(jù)時(shí),此引腳就會(huì)輸出一個(gè)低電平信號(hào)。初識(shí)系統(tǒng)2.28051的引腳及基本電路再看一遍記住它初識(shí)系統(tǒng)基本電路——四個(gè)步驟Vcc(40)接+5V電源Vss(20)接地一、先接電源初識(shí)系統(tǒng)基本電路——四個(gè)步驟XTAL1(19)XTAL2(18)連接簡(jiǎn)單的石英振蕩晶體即可。8051的時(shí)鐘脈沖頻率一般為12MHz。當(dāng)然也可能更高。二、再接時(shí)鐘脈沖初識(shí)系統(tǒng)基本電路——四個(gè)步驟二、再接時(shí)鐘脈沖初識(shí)系統(tǒng)基本電路——四個(gè)步驟二、再接時(shí)鐘脈沖如果非得自行設(shè)計(jì)一個(gè)振蕩電路,可以用如下方法連接。初識(shí)系統(tǒng)基本電路——四個(gè)步驟三、復(fù)位電路Reset(9)接高電平超過(guò)兩個(gè)機(jī)器周期,即可產(chǎn)生復(fù)位動(dòng)作,本書(shū)例子中接2us以上即可。初識(shí)系統(tǒng)基本電路——四個(gè)步驟三、復(fù)位電路把EA接地,則采用外部存儲(chǔ)器把EA接Vcc,則采用內(nèi)部存儲(chǔ)器初識(shí)系統(tǒng)基本電路——四個(gè)步驟四、存儲(chǔ)器選擇電路EA(31)初識(shí)系統(tǒng)基本電路綜上所述:項(xiàng)次名稱(chēng)規(guī)格數(shù)量備注1805112MHz1個(gè)2石英振蕩晶體12MHz1個(gè)3電解電容10uF/25V1個(gè)4陶瓷電容30pF2個(gè)5電阻10K歐1個(gè)6按鈕開(kāi)關(guān)1個(gè)TACKSW初識(shí)系統(tǒng)基本電路——所需元件初識(shí)系統(tǒng)基本電路一一對(duì)應(yīng)陶瓷電容電解電容石英振蕩晶體電阻按鈕開(kāi)關(guān)4.1.2復(fù)位對(duì)于微機(jī)而言,復(fù)位RESET是一項(xiàng)很重要的歸零調(diào)整操作。8051的RESET是將高電平加到RESET腳上,時(shí)間超過(guò)2個(gè)機(jī)器周期以上,由于這個(gè)時(shí)間遠(yuǎn)遠(yuǎn)小于人的生理反映時(shí)間,所以可以這樣認(rèn)為:只要按RESET按鈕,就一定會(huì)復(fù)位!當(dāng)系統(tǒng)復(fù)位后,CPU內(nèi)部寄存器將回歸初始狀態(tài),如表所示。(書(shū)P.58,表4-1)復(fù)位后,片內(nèi)RAM的低128B的內(nèi)容不會(huì)發(fā)生改變,但特殊功能寄存器(SFR)的內(nèi)值會(huì)被初始化。另外,復(fù)位期間,單片機(jī)的ALE和PSEN端輸出高電平。SP的值為07H,在編程過(guò)程中必須改變SP的值,置為60H或70H。P0~P3口的值是0FFH。其余寄存器在使用前一般先賦值。在我們知道了單片機(jī)的組成結(jié)構(gòu)之后,讓我們來(lái)再做個(gè)小小實(shí)驗(yàn)訓(xùn)練吧單片機(jī)模擬軟件(Proteus)的使用方法補(bǔ)充內(nèi)容
前期課程準(zhǔn)備知識(shí)回顧補(bǔ)充內(nèi)容數(shù)制轉(zhuǎn)換
十六進(jìn)制二進(jìn)制十進(jìn)制補(bǔ)充內(nèi)容1、十進(jìn)制-二進(jìn)制十六進(jìn)制二進(jìn)制十進(jìn)制從十進(jìn)制轉(zhuǎn)換到二進(jìn)制:整數(shù)部分的轉(zhuǎn)換方法稱(chēng)為“除2取余法”。小數(shù)部分的轉(zhuǎn)換方法稱(chēng)為“乘2取整法”。補(bǔ)充內(nèi)容例:79=?從十進(jìn)制轉(zhuǎn)換到二進(jìn)制:整數(shù)部分的轉(zhuǎn)換方法稱(chēng)為“除2取余法”。小數(shù)部分的轉(zhuǎn)換方法稱(chēng)為“乘2取整法”。補(bǔ)充內(nèi)容1、十進(jìn)制-二進(jìn)制十六進(jìn)制二進(jìn)制十進(jìn)制從二進(jìn)制轉(zhuǎn)換到十進(jìn)制:將二進(jìn)制數(shù)的各個(gè)非零位分別乘以位權(quán)之后相加求和。補(bǔ)充內(nèi)容例:1010010B=?補(bǔ)充內(nèi)容練一練!1100110B=_____1001110B=_____0101010B=_____1101101B=_____55=______B44=______B33=______B22=______B補(bǔ)充內(nèi)容2、十六進(jìn)制-二進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制從二進(jìn)制轉(zhuǎn)換到十六進(jìn)制:4位二進(jìn)制數(shù)對(duì)應(yīng)于1位十六進(jìn)制數(shù)。補(bǔ)充內(nèi)容例:1011010B=?H從二進(jìn)制轉(zhuǎn)換到十六進(jìn)制:從后向前依次取四位,不足四位要補(bǔ)零補(bǔ)充內(nèi)容2、十六進(jìn)制-二進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制從十六進(jìn)制轉(zhuǎn)換到二進(jìn)制:將每1位十六進(jìn)制數(shù)用對(duì)應(yīng)的4位二進(jìn)制數(shù)替換補(bǔ)充內(nèi)容例:C3H=?B補(bǔ)充內(nèi)容十進(jìn)制二進(jìn)制十六進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制000000810008100011910019200102101010A300113111011B401004121100C501015131101D601106141110E701117151111F記住它,Haveatry!補(bǔ)充內(nèi)容練一練!10011010B=_____H110110B=_______H53H=___________BAEH=__________B補(bǔ)充內(nèi)容作業(yè)!1、將194轉(zhuǎn)換成二進(jìn)制數(shù)2、將二進(jìn)制數(shù)1011011B轉(zhuǎn)換為十六進(jìn)制數(shù)3、將十六進(jìn)制數(shù)7BH轉(zhuǎn)換為二進(jìn)制數(shù)4、將89轉(zhuǎn)換成十六進(jìn)制數(shù)項(xiàng)目二
霹靂燈的設(shè)計(jì)與制作進(jìn)入項(xiàng)目項(xiàng)目二霹靂燈的設(shè)計(jì)與制作先來(lái)玩一個(gè)簡(jiǎn)單的設(shè)計(jì)吧!任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管進(jìn)入任務(wù)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管硬件電路進(jìn)入任務(wù)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管軟件設(shè)計(jì)(1)設(shè)計(jì)思路利用LED的單向發(fā)光性能點(diǎn)亮LED,送一個(gè)低電平過(guò)去就可以了(2)流程圖(3)寫(xiě)程序一個(gè)“HelloWorld!”類(lèi)程序。Ok,let‘sgo.進(jìn)入任務(wù)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管軟件設(shè)計(jì)理論上可以這樣寫(xiě):ORG0000H;首行指定程序起始地址CLRP2.0;P2.0設(shè)為低電平END
;程序結(jié)束?如何點(diǎn)亮其它燈?進(jìn)入任務(wù)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管軟件設(shè)計(jì)理論上可以這樣寫(xiě):ORG0000H;首行指定程序起始地址CLRP2.0;
P2.0設(shè)為低電平END
;程序結(jié)束只要將P2.0改變成P2.1-P2.7即可進(jìn)入任務(wù)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管相關(guān)知識(shí)點(diǎn)1、單片機(jī)的輸出口2、基本程序進(jìn)入任務(wù)相關(guān)知識(shí)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管1、單片機(jī)輸出口*P0P0口為8位、可尋址的I/O端口,內(nèi)部結(jié)構(gòu)見(jiàn)書(shū)(P15,圖1.8)。特點(diǎn):1、P0內(nèi)部無(wú)上拉電阻,執(zhí)行輸出功能時(shí),外部必須接上拉電阻(10K歐即可)。2、若系統(tǒng)連接外部存儲(chǔ)器,則P0可以作為地址總線(xiàn)(A0~A7)及數(shù)據(jù)總線(xiàn)(D0~D7)的多功能引腳。任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管相關(guān)知識(shí)1、單片機(jī)輸出口*P1P1口為8位、可尋址的I/O端口,內(nèi)部結(jié)構(gòu)見(jiàn)書(shū)(P16,圖1.9)。特點(diǎn):1、P1內(nèi)部具有30K歐上拉電阻,執(zhí)行輸出功能時(shí),不需連接外部上拉電阻。相關(guān)知識(shí)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管1、單片機(jī)輸出口相關(guān)知識(shí)上拉電阻的作用任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管1、單片機(jī)輸出口*P2P2口為8位、可尋址的I/O端口,內(nèi)部結(jié)構(gòu)見(jiàn)書(shū)(P16,圖1.10)。特點(diǎn):
1、P2內(nèi)部具有30K歐上拉電阻,執(zhí)行輸出功能時(shí),不需連接外部上拉電阻。2、若系統(tǒng)連接外部存儲(chǔ)器,則P2可以作為地址總線(xiàn)(A8~A15)。相關(guān)知識(shí)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管1、單片機(jī)輸出口*P3P3口為8位、可尋址的I/O端口,內(nèi)部結(jié)構(gòu)見(jiàn)書(shū)(P17,圖1.11)。特點(diǎn):1、P3內(nèi)部具有30K歐上拉電阻,執(zhí)行輸出功能時(shí),不需連接外部上拉電阻。2、P3口的八個(gè)引腳功能各異,如下表所示。相關(guān)知識(shí)任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管1、單片機(jī)輸出口P3其他功能說(shuō)明P3.0RXD串行口的接收引腳P3.1TXD串行口的傳送引腳P3.2INT0INT0中斷輸入P3.3INT1INT1終端輸入P3.4T0Timer0輸入P3.5T1Timer1輸入P3.6WR寫(xiě)入外部存儲(chǔ)器控制引腳P3.7RD讀取外部存儲(chǔ)器控制引腳任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管相關(guān)知識(shí)1、單片機(jī)輸出口任務(wù)1:點(diǎn)亮單個(gè)發(fā)光二極管2、基本程序ORG0000H;首行指定程序起始地址CLRP2.0;P2.0設(shè)為低電平END
;程序結(jié)束相關(guān)知識(shí)項(xiàng)目二霹靂燈的設(shè)計(jì)與制作再來(lái)玩一個(gè)簡(jiǎn)單的設(shè)計(jì)吧!任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管如果同時(shí)點(diǎn)亮P2.0、P2.2、P2.4、P2.6所連的LED,應(yīng)該如何設(shè)計(jì)?*請(qǐng)描述軟硬件部分的設(shè)計(jì)。*并設(shè)計(jì)軟件程序。進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管硬件電路進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管軟件程序ORG0000HCLRP2.0CLRP2.2CLRP2.4CLRP2.6END可否考慮其他寫(xiě)法?1、CLR用別的指令來(lái)替代(同樣長(zhǎng)度)2、讓程序更簡(jiǎn)潔(3行)進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管軟件程序可不可以這樣寫(xiě)?ORG 0000HMOVP2,#0AAHEND問(wèn):為什么是AAH?進(jìn)入任務(wù)進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管軟件程序比較舒服的寫(xiě)法:
ORG0000HSTART:
MOVA,#0AAHMOVP2,AJMPSTARTEND相關(guān)知識(shí)點(diǎn)1、匯編程序的指令格式2、匯編語(yǔ)言的程序結(jié)構(gòu)3、任務(wù)設(shè)計(jì)相關(guān)指令進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管1、匯編程序的指令格式相關(guān)知識(shí)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管8051的源程序的指令代碼包括4個(gè)段,最左邊是標(biāo)簽字段(label),第二個(gè)字段是指令助記碼字段(mnemonic),第三個(gè)字段是操作數(shù)字段(operand),第四個(gè)字段是注釋字段(comment)。1、匯編程序的指令格式相關(guān)知識(shí)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管標(biāo)號(hào)助記碼操作數(shù)注釋ORG0START:MOVA,#0FH;00001111BL1:MOVP1,A;由P1輸出CALLDELAY;調(diào)用延遲子程序CPLA;對(duì)A取反JMPL1;跳至L1DELAY:MOVR7,#200;延遲子程序D1:MOVR6,#100DJNZR6,$DJNZR7,D1RETEND1、匯編程序的指令格式相關(guān)知識(shí)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管舉例2、匯編語(yǔ)言的程序結(jié)構(gòu)進(jìn)入任務(wù)任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管相關(guān)知識(shí)
ORG0000H(程序的起始句)START:MOVA,#0AAHMOVP2,AJMPSTART
END
(程序的結(jié)束句)其余黑色字部分為程序的主題語(yǔ)言3、任務(wù)設(shè)計(jì)相關(guān)指令任務(wù)2:點(diǎn)亮多個(gè)發(fā)光二極管相關(guān)知識(shí)數(shù)據(jù)轉(zhuǎn)移指令MOV項(xiàng)目二霹靂燈的設(shè)計(jì)與制作繼續(xù)來(lái)玩一個(gè)燈控設(shè)計(jì)吧!任務(wù)3:八燈交互閃爍實(shí)驗(yàn)進(jìn)入任務(wù)在學(xué)習(xí)任務(wù)3之前,先學(xué)習(xí)指令符號(hào)。相關(guān)知識(shí)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)相關(guān)知識(shí)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)Rn:當(dāng)前選中的工作寄存器組R0~R7共8個(gè)。工作寄存器組共有4組,默認(rèn)使用第0組,可以使用PSW的RS1和RS0的組合來(lái)選定其中的任一組。Ri:當(dāng)前選中的工作寄存器中可以作為地址指針(間址寄存器)的兩個(gè)工作寄存器(R0和R1)。direct:片內(nèi)RAM或特殊功能寄存器(SFR)的地址,為8位。x→y:將x的內(nèi)容傳送到y(tǒng),表示數(shù)據(jù)傳送的方向。相關(guān)知識(shí)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)#data:8位立即數(shù),即指令中直接給出的8位常數(shù)。#data16:16位立即數(shù),即指令中直接給出的16位常數(shù)。addr16:16位的地址。bit:片內(nèi)RAM或SFR的直接尋址位地址。@:間址寄存器的前綴。(x):x表示地址,加上括號(hào)表示該地址中的內(nèi)容。接著學(xué)習(xí)單片機(jī)尋址方式相關(guān)知識(shí)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)相關(guān)知識(shí)尋址方式☆直接尋址:直接尋址是直接在操作數(shù)字段中指定操作數(shù)所在位置的地址,包括特殊功能寄存器(如PSW、P1、P2等)。MOVA,20H;(20H)→AMOV30H,A;A→30H直接尋址方式可以訪問(wèn)一下三種存儲(chǔ)空間:●特殊功能寄存器區(qū)(只能以此形式訪問(wèn))●內(nèi)部數(shù)據(jù)存儲(chǔ)器的低128B●位地址空間任務(wù)3:八燈交互閃爍實(shí)驗(yàn)☆間接尋址:間接尋址是利用間址寄存器(R1或者R0,標(biāo)示為Ri)、基底寄存器(SP或DPTR)間接指示操作數(shù)所在位置的地址,而在間址寄存器或基底寄存器之左要加上“@”符號(hào)。
ANLA,@R0;A·((R0))→AINC@R0;((R0))+1●特別注意的是寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存儲(chǔ)器地址。相關(guān)知識(shí)尋址方式任務(wù)3:八燈交互閃爍實(shí)驗(yàn)☆寄存器尋址:寄存器尋址是利用寄存器(R0到R7)的內(nèi)容為操作數(shù)。INCR0;(R0)+1→R0DJNZR7,LOOP;將R7的內(nèi)容減一,判斷是否等于0,若不等于0,則跳到LOOP處;如果等于0,則繼續(xù)下條指令。相關(guān)知識(shí)尋址方式任務(wù)3:八燈交互閃爍實(shí)驗(yàn)☆立即尋址:立即尋址是直接在操作數(shù)字段放置操作數(shù),在操作數(shù)左邊必須放上#MOVA,#30H;30H→A把30H這個(gè)數(shù)送到A寄存器中。相關(guān)知識(shí)尋址方式任務(wù)3:八燈交互閃爍實(shí)驗(yàn)☆間址尋址:間址寄存器以16位的程序計(jì)數(shù)器PC或數(shù)據(jù)指針DPTR作為基寄存器,以8位的累加器A作為變址寄存器?;拇嫫骱妥冎芳拇嫫鞯膬?nèi)容相加形成16位的地址,該地址即為操作數(shù)的地址。MOVCA,@A+PC;(A+PC)→AMOVCA,@A+DPTR;(A+DPTR)→A相關(guān)知識(shí)尋址方式任務(wù)3:八燈交互閃爍實(shí)驗(yàn)指令對(duì)哪一個(gè)存儲(chǔ)器空間進(jìn)行操作是由指令的操作碼和尋址方式定的。對(duì)ROM只能采用立即尋址方式和間址尋址方式;特殊功能寄存器只能使用直接尋址方式,不能采用寄存器直接尋址。內(nèi)部RAM的低128字節(jié)(00H~7FH)既能用直接尋址,也能用間接尋址,操作指令最豐富。內(nèi)部RAM尋址用MOV外部RAM尋址用MOVX內(nèi)外ROM尋址用MOVC相關(guān)知識(shí)尋址方式任務(wù)3:八燈交互閃爍實(shí)驗(yàn)尋址方式尋址范圍寄存器尋址R0~R7A、B、C(CY)、AB(雙字節(jié))、DPTR(雙字節(jié))直接尋址內(nèi)部RAM低128位特殊功能寄存器內(nèi)部RAM位尋址區(qū)的128個(gè)位特殊功能寄存器中的可尋址位間接尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM[@R0,@R1,@SP(僅PUSH和POP)內(nèi)部數(shù)據(jù)存儲(chǔ)器單元的低4位(@R0,@R1)外部RAM或I/O口(@R0,@R1,@DPTR)立即尋址程序存儲(chǔ)器(常數(shù))間址尋址程序存儲(chǔ)器(@A+PC,@A+DPTR)相關(guān)知識(shí)尋址方式任務(wù)3:八燈交互閃爍實(shí)驗(yàn)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)要求:連接在P2上的8個(gè)LED,單數(shù)燈和雙數(shù)燈交替閃爍。應(yīng)該如何設(shè)計(jì)?*請(qǐng)描述軟硬件部分的設(shè)計(jì)。*并設(shè)計(jì)軟件程序。進(jìn)入任務(wù)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)進(jìn)入任務(wù)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)進(jìn)入任務(wù)流程圖及程序
ORG0000HSTART:MOVA,#0AAHMOVP2,AMOVA,#55HMOVP2,AJMPSTARTEND任務(wù)3:八燈交互閃爍實(shí)驗(yàn)進(jìn)入任務(wù)另一種寫(xiě)法
ORG0000HMOVA,#0AAHSTART:MOVP2,ACPLAJMPSTARTEND任務(wù)設(shè)計(jì)相關(guān)指令相關(guān)知識(shí)任務(wù)3:八燈交互閃爍實(shí)驗(yàn)CPLA反向指令跳轉(zhuǎn)指令JMPSTART項(xiàng)目二霹靂燈的設(shè)計(jì)與制作燈控設(shè)計(jì)越來(lái)越有意思啦!任務(wù)4:流水燈實(shí)驗(yàn)進(jìn)入任務(wù)任務(wù)4:流水燈實(shí)驗(yàn)進(jìn)入任務(wù)“流水燈”實(shí)驗(yàn)是從P2口輸出的8個(gè)LED中,從P2.0所連接的LED開(kāi)始亮,任何時(shí)候只有一個(gè)LED亮,即單燈左移,移到P2.7后再?gòu)膒2.0亮起,如此循環(huán),如右圖所示,另要求每個(gè)燈點(diǎn)亮的時(shí)間要保持0.1秒。任務(wù)4:流水燈實(shí)驗(yàn)進(jìn)入任務(wù)流水燈實(shí)驗(yàn)硬件任務(wù)4:流水燈實(shí)驗(yàn)進(jìn)入任務(wù)流水燈實(shí)驗(yàn)程序ORG0000H;****主程序部分***LOOP:MOVP2,#0FEHCALLDELAYMOVP2,#0FDHCALLDELAYMOVP2,#0FBHCALLDELAYMOVP2,#0F7HCALLDELAYMOVP2,#0EFHCALLDELAYMOVP2,#0DFHCALLDELAYMOVP2,#0BFHCALLDELAYMOVP2,#07FHCALLDELAYJMPLOOP;跳到LOOP處執(zhí)行;********延時(shí)子程序部分********DELAY:MOVR5,#10D1:MOVR6,#255D2:MOVR7,#250D3:DJNZR7,D3DJNZR6,D2DJNZR5,D1RETEND任務(wù)4:流水燈實(shí)驗(yàn)提出問(wèn)題1、燈如何左移?2、燈亮如何保持0.1秒?3、計(jì)次循環(huán)?4、有沒(méi)有簡(jiǎn)單的方法實(shí)現(xiàn)左移?任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題1、燈如何左移?若要LED燈亮,則P2輸出0即可,所以剛開(kāi)始時(shí)輸出1111,1110B,使最右邊的LED亮,其余不亮。之后再輸出:111111011111101111110111……011111111111111011111101任務(wù)4:流水燈實(shí)驗(yàn)提出問(wèn)題1、燈如何左移?2、燈亮如何保持0.1秒?3、計(jì)次循環(huán)?4、有沒(méi)有簡(jiǎn)單的方法實(shí)現(xiàn)左移?任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題2、燈亮如何保持0.1秒?每個(gè)燈約亮0.1秒,因此需要一個(gè)延時(shí)程序,利用幾次循環(huán),如圖所示:
任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題2、燈亮如何保持0.1秒?關(guān)于:$$在匯編中的意思是:本條指令起始地址。JBP2.3,$(JB:如果直接尋址位是1,則一直在此循環(huán),否則繼續(xù)下一行代碼的執(zhí)行。)DJNZR6,$(DJNZ:減1不為零跳轉(zhuǎn)指令,為0則繼續(xù)下一行代碼的執(zhí)行)任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題2、燈亮如何保持0.1秒?其中DJNZR6,$指令是對(duì)本身那條指令執(zhí)行R6次。對(duì)于12MHZ時(shí)鐘脈沖的8051而言,12個(gè)周期(1個(gè)機(jī)器周期)剛好是1us,整個(gè)子程序延時(shí)時(shí)間T為:任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題2、燈亮如何保持0.1秒?課堂練習(xí):1、設(shè)計(jì)一個(gè)0.01s的延時(shí)子程序。2、設(shè)計(jì)一個(gè)1s的延時(shí)子程序。答:1、T≈2×T6×T7=10^4μs=0.01s2、T≈2×T6×T7×T5=10^6μs=1s任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題2、燈亮如何保持0.1秒?ORG0000H;程序從0開(kāi)始;**************單燈左移部分**************START:MOVA,#0FEH;讓ACC的內(nèi)容為1111,1110BLOOP:MOVP2,A;從P2口輸出ACC的內(nèi)容RL
A;將ACC的內(nèi)容左移CALLDELAY;調(diào)用延遲子程序JMPLOOP;跳到LOOP處執(zhí)行;**************延時(shí)子程序部分**************DELAY:MOVR7,#200D1:MOVR6,#250DJNZR6,$DJNZR7,D1
RETEND任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題2、燈亮如何保持0.1秒?課堂練習(xí):1、設(shè)計(jì)一個(gè)單燈右移的程序。2、設(shè)計(jì)一個(gè)單燈右移滅燈的程序。3、設(shè)計(jì)一個(gè)雙燈右移的程序。任務(wù)4:流水燈實(shí)驗(yàn)提出問(wèn)題1、燈如何左移?2、燈亮如何保持0.1秒?3、計(jì)次循環(huán)?4、有沒(méi)有簡(jiǎn)單的方法實(shí)現(xiàn)左移?任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題3、計(jì)次循環(huán)?計(jì)次循環(huán)格式如下圖所示:其中Rn是記錄次數(shù)的寄存器,例如重復(fù)指令區(qū)域塊5次,則:任務(wù)4:流水燈實(shí)驗(yàn)提出問(wèn)題3、計(jì)次循環(huán)?循環(huán)50次如何做?循環(huán)500次如何做?任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題3、計(jì)次循環(huán)?
MOVR1,#10LOOP1:MOVR2,#50LOOP2:DJNZR2,LOOP2DJNZR1,LOOP1如果是下面這個(gè)程序會(huì)怎么樣?LOOP1:MOVR1,#10MOVR2,#50LOOP2:DJNZR2,LOOP2DJNZR1,LOOP1任務(wù)4:流水燈實(shí)驗(yàn)提出問(wèn)題1、燈如何左移?2、燈亮如何保持0.1秒?3、計(jì)次循環(huán)?4、有沒(méi)有簡(jiǎn)單的方法實(shí)現(xiàn)左移?任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題4、有沒(méi)有簡(jiǎn)單的方法實(shí)現(xiàn)左移?若要從左邊第一個(gè)LED亮,轉(zhuǎn)變成第二個(gè)亮,可以使用左轉(zhuǎn)指令:任務(wù)4:流水燈實(shí)驗(yàn)解決問(wèn)題4、有沒(méi)有簡(jiǎn)單的方法實(shí)現(xiàn)左移?ORG0000H;程序從0開(kāi)始;**************單燈左移部分**************START:MOVA,#0FEH;讓ACC的內(nèi)容為1111,1110BLOOP:MOVP2,A;從P2口輸出ACC的內(nèi)容RL
A;將ACC的內(nèi)容左移CALLDELAY;調(diào)用延遲子程序JMPLOOP;跳到LOOP處執(zhí)行;**************延時(shí)子程序部分**************DELAY:MOVR5,#10
;R5寄存器加載10次D1:MOVR6,#255
;R6寄存器加載255次D2:MOVR7,#250;R7寄存器加載250次D3:DJNZR7,D3;D3循環(huán)R7次DJNZR6,D2;D2執(zhí)行R6次DJNZR5,D1
;D1循環(huán)執(zhí)行R5次RET
;返回主程序END
;結(jié)束程序項(xiàng)目二霹靂燈的設(shè)計(jì)與制作你的燈控設(shè)計(jì)已經(jīng)很有水平啦!任務(wù)5:霹靂燈實(shí)驗(yàn)進(jìn)入任務(wù)任務(wù)5:霹靂燈實(shí)驗(yàn)解決問(wèn)題進(jìn)入任務(wù)霹靂燈是只有一個(gè)LED亮,由右向左移,再移回右邊,如此不斷的來(lái)回移動(dòng)。延時(shí)一秒。霹靂燈=左移+右移+循環(huán)任務(wù)5:霹靂燈實(shí)驗(yàn)解決問(wèn)題進(jìn)入任務(wù)霹靂燈是只有一個(gè)LED亮,由右向左移,再移回右邊,如此不斷的來(lái)回移動(dòng)。延時(shí)一秒。霹靂燈=左移+右移+循環(huán)任務(wù)5:霹靂燈實(shí)驗(yàn)解決問(wèn)題進(jìn)入任務(wù)任務(wù)5:霹靂燈實(shí)驗(yàn)解決問(wèn)題進(jìn)入任務(wù)ORG0000H;單燈左移部分****START:MOVA,#0FEHLOOP:MOVR0,#7LOOPL:MOVP2,ARLACALLDELAYDJNZR0,LOOPL;單燈右移部分****MOVR0,#7LOOPR:MOVP2,ARRACALLDELAYDJNZR0,LOOPRJMPLOOP;延時(shí)子程序部分****DELAY:MOVR5,#100D1:MOVR6,#255D2:MOVR7,#250
D3:DJNZR7,D3DJNZR6,D2DJNZR5,D1RETEND51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)如下圖所示:3.1.1程序存儲(chǔ)器(ROM)顧名思義,程序存儲(chǔ)器就是存放程序的地方,CPU將自動(dòng)從程序存儲(chǔ)器讀取所要執(zhí)行的指令代碼。MCS-51單片機(jī)可以選擇使用內(nèi)部程序存儲(chǔ)器或外部存儲(chǔ)器,內(nèi)、外程序存儲(chǔ)器的選擇可以通過(guò)對(duì)EA的設(shè)定來(lái)判定。EA=1,表示EA接高電平(Vcc);EA=0,表示EA接低電平(Vss)?!锶羰褂?031或者8032,由于內(nèi)部沒(méi)有程序存儲(chǔ)器,一定要使用外部存儲(chǔ)器,所以EA引腳必須接地?!锂?dāng)EA引腳接高電平時(shí),CPU將使用內(nèi)部程序存儲(chǔ)器,若程序超過(guò)4KB,CPU會(huì)自動(dòng)從外部存儲(chǔ)器中讀取超過(guò)部分的程序代碼?!锂?dāng)EA引腳接地時(shí),CPU將從外部程序存儲(chǔ)器讀取所要執(zhí)行的指令碼,而CPU內(nèi)部的程序存儲(chǔ)器形同虛設(shè)?!锂?dāng)CPU復(fù)位以后,程序?qū)某绦虼鎯?chǔ)器的0000H地址開(kāi)始執(zhí)行,如果沒(méi)有遇到跳轉(zhuǎn)指令,則按程序存儲(chǔ)器順序執(zhí)行。(P.22)3.1.2數(shù)據(jù)存儲(chǔ)器MCS-51的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是分開(kāi)的獨(dú)立區(qū)塊,所以訪問(wèn)數(shù)據(jù)存儲(chǔ)器時(shí),所使用的地址并不會(huì)與程序存儲(chǔ)器沖突。相對(duì)于程序存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器更為復(fù)雜。在8051中的數(shù)據(jù)存儲(chǔ)器也可以擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器。這兩部分可以并存,但所采用的指令不同。訪問(wèn)內(nèi)部數(shù)據(jù)時(shí)使用MOV訪問(wèn)外部數(shù)據(jù)時(shí)使用MOVX一、內(nèi)部數(shù)據(jù)存儲(chǔ)器內(nèi)部數(shù)據(jù)在結(jié)構(gòu)上可以分為兩個(gè)不同的存儲(chǔ)區(qū)域,即低128位(00H~7FH)和高128位(80H~FFH),但只有低128位是給用戶(hù)使用的,高128位是給專(zhuān)用寄存器使用的。一、內(nèi)部數(shù)據(jù)存儲(chǔ)器一、內(nèi)部數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)空間地址為00H~7FH,共128個(gè)單元。其中低32位(00H~1FH)被分成4個(gè)寄存器組(每組分別用R0~R7來(lái)表示);使用哪一組是由狀態(tài)控制字(PSW)來(lái)決定的。一、內(nèi)部數(shù)據(jù)存儲(chǔ)器一、內(nèi)部數(shù)據(jù)存儲(chǔ)器PSW的RS1(4)和RS0(3)來(lái)決定使用哪個(gè)寄存器區(qū)。一、內(nèi)部數(shù)據(jù)存儲(chǔ)器當(dāng)CPU復(fù)位時(shí),系統(tǒng)的堆棧指針(SP)指向地址07H,所以數(shù)據(jù)存入堆棧時(shí),將從08H開(kāi)始,也就是RB1中的R0的地址。為了避免沖突,通常會(huì)把堆棧指針移到30H之后。一、內(nèi)部數(shù)據(jù)存儲(chǔ)器位尋址區(qū):20H~2FH共16B的存儲(chǔ)器為可尋址區(qū),通常訪問(wèn)存儲(chǔ)器以B為單位,所謂可以“位尋址”是指可以指定訪問(wèn)某個(gè)位(bit)。在8051中,只要使用布爾運(yùn)算指令,即可進(jìn)行位操作。例如,要把20H存儲(chǔ)器地址的bit5設(shè)定為1,則可使用以下命令:
另外,從20H~2FH的16個(gè)字節(jié),共128位(16×8),也可以直接指定為0~127,對(duì)剛才的20H存儲(chǔ)器地址的bit5而言,可以指定為5同理,若要將25H存儲(chǔ)器地址的bit2清為0,則:CLR25H.2或(5×8+3=43)CLR43一、內(nèi)部數(shù)據(jù)存儲(chǔ)器一、內(nèi)部數(shù)據(jù)存儲(chǔ)器用戶(hù)RAM區(qū):用戶(hù)RAM區(qū)也稱(chēng)“一般數(shù)據(jù)與堆棧區(qū)”,地址為從30H~7FH的80B,用于存放一般數(shù)據(jù)與堆棧,堆棧指針指向07H。在程序中如果使用了PUSH、POP命令,最好把堆棧指針SP改向該區(qū)。例如:將SP移向0030H地址:一、內(nèi)部數(shù)據(jù)存儲(chǔ)器專(zhuān)用寄存器區(qū):80H~FFH之間的128B為專(zhuān)用功能寄存器(SFR)區(qū)。(這部分內(nèi)容以后詳細(xì)說(shuō)明)二、特殊功能寄存器寄存器01234567F8HFFHF0HBF7HE8HEFHE0HACCE7HD8HDFHD0HPSWD7HC8HT2CONT2MODRCAP2LRCAP2HTL2TH2CFHC0HC7HB8HIPSADENBFHB0HP3B7HA8HIESADDRAFHA0HP2A7H98HSCONSBUF9FH90HP197H88HTCONTMODTL0TL0TH0TH18FH80HP0SPDPLDPHPCON87HP0、P1、P2、P3P0、P1、P2、P3為MCS-51的四個(gè)輸入/輸出端口,其地址分別是80H、90H、A0H及B0H,稍后再詳細(xì)介紹這四個(gè)I/O口。SPSP為8位堆棧指針寄存器,其地址為81H。堆棧是一種特殊的數(shù)據(jù)保存方式,其數(shù)據(jù)的操作是先進(jìn)后出(FILO),當(dāng)數(shù)據(jù)以PUSH命令送入堆棧時(shí),SP自動(dòng)加1;若以POP命令從堆棧中取出數(shù)據(jù)時(shí),SP自動(dòng)減1。PUSHAPUSHBPUSHCPOPCPOPBPOPADPL和DPHDPL和DPH均為8位的數(shù)據(jù)指針寄存器,其地址分別為82H,83H。若以DPL為低八位,DPH為高八位,即可組成一個(gè)16位的數(shù)據(jù)指針寄存器,簡(jiǎn)稱(chēng)為DPTR,從而可以尋址64K。PCONPCON是電源控制寄存器,其地址為87H,其功能是設(shè)定CPU的電源方式。TCONTCON是定時(shí)器/計(jì)數(shù)器控制寄存器,其地址為88H,其功能是設(shè)定定時(shí)器/計(jì)數(shù)器的啟動(dòng)、記錄定時(shí)器/計(jì)數(shù)器溢出位,以及外部中斷的觸發(fā)方式。TMODTMOD是計(jì)數(shù)器/計(jì)數(shù)方式控制寄存器,其地址為89H,其功能是設(shè)定計(jì)數(shù)器計(jì)數(shù)的方式。TL0、TL1、TH0,TH1TL0和TH0是第一組定時(shí)器/計(jì)數(shù)器(Timer0)的計(jì)量寄存器,其地址是8AH和8CH,將二者結(jié)合即可進(jìn)行16位的定時(shí)/計(jì)數(shù);TL0和TH0是第二組定時(shí)器/計(jì)數(shù)器(Timer1)的計(jì)量寄存器,其地址是8BH和8DH,將二者結(jié)合即可進(jìn)行16位的定時(shí)/計(jì)數(shù);。SCON串行端口控制寄存器,其地址為98H,其功能是設(shè)定串行端口控制方式與標(biāo)志。SBUFSBUF是串行端口緩沖器,其地址為99H,這是由使用同一個(gè)地址的兩個(gè)寄存器所構(gòu)成,其中一個(gè)寄存器作為傳送數(shù)據(jù)用的緩存器,另一個(gè)寄存器作為接收數(shù)據(jù)用的緩存器,視指令來(lái)區(qū)分這兩個(gè)緩沖器。IEIE是中斷使能寄存器,其地址是A8H,其功能是啟用中斷功能。IPIP是中斷優(yōu)先級(jí)寄存器,其功能是設(shè)定中斷的優(yōu)先級(jí)。T2CON、RCAP2L、RCAP2H、TL2、TH2均為8032/8052所特有。PSWPSW是CPU的程序狀態(tài)字寄存器,其地址是D0H,其內(nèi)容如下:PSW.7:本位為進(jìn)位標(biāo)志位(CY),進(jìn)行加法(減法)運(yùn)算時(shí),若最左邊(MSB,即Bit7)產(chǎn)生進(jìn)位(借位),則本位將自動(dòng)設(shè)定為1,即CY=1;否則CY=0。PSW.6:輔助進(jìn)位(AC),進(jìn)行加法(減法)運(yùn)算時(shí),若bit3產(chǎn)生進(jìn)位(借位)則本位自動(dòng)設(shè)定為1,即AC=1;否則AC=0。PSW.5:用戶(hù)標(biāo)志位(F0),可由用戶(hù)自行設(shè)定。PSW.4與PSW.3:這兩位為寄存器組選擇位(RS1、RS0)。PSW.2:溢出標(biāo)志位(OV),進(jìn)行算術(shù)運(yùn)算時(shí),若發(fā)生溢出,則OV=1,否則OV=0。PSW.1:保留位,沒(méi)有提供任何服務(wù)。PSW.0:奇偶位(P),8051采用偶同位,若ACC中有奇數(shù)個(gè)1,則P=1;若ACC中有偶數(shù)個(gè)1,則P=0。ACCACC累加器又稱(chēng)為A寄存器,其地址是E0H,這個(gè)寄存器是CPU主要操作的位置,可以說(shuō)是最常用的寄存器。BB寄存器的地址是F0H,主要功能是配合A寄存器進(jìn)行乘法或除法運(yùn)算。進(jìn)行乘法運(yùn)算時(shí),乘數(shù)放在B寄存器,而運(yùn)算結(jié)果,高8位放在B寄存器;進(jìn)行除法運(yùn)算時(shí),除數(shù)放在B寄存器,而運(yùn)算結(jié)果,余數(shù)放在B寄存器。若不進(jìn)行乘法/除法運(yùn)算,B寄存器也可當(dāng)成一般寄存器使用。指令系統(tǒng)一數(shù)據(jù)轉(zhuǎn)移指令數(shù)據(jù)轉(zhuǎn)移指令一、數(shù)據(jù)復(fù)制指令二、查表法指令三、外部數(shù)據(jù)訪問(wèn)指令四、堆棧訪問(wèn)指令五、數(shù)據(jù)交換指令一、數(shù)據(jù)復(fù)制指令數(shù)據(jù)復(fù)制指令的功能是將源操作數(shù)的數(shù)據(jù)復(fù)制到目的操作數(shù)。如圖所示:以累加器A為目的操作數(shù)的指令(4條)以寄存器Rn為目的操作數(shù)的指令(3條)以直接地址direct為目的操作數(shù)的指令(5條)以間接地址為目的操作數(shù)的指令(3條)16位數(shù)據(jù)傳送指令(1條)MOVA,direct說(shuō)明:將存儲(chǔ)器(RAM)地址(direct)的內(nèi)容復(fù)制到ACC,即(direct)→ACC編譯后大?。?B執(zhí)行時(shí)間12個(gè)時(shí)鐘脈沖指令:MOVA,20H若執(zhí)行前:ACC=33H、存儲(chǔ)器(20H)地址的內(nèi)容為31H執(zhí)行后:ACC=31H、(20H)=31H范例ACC=?(20H)=?MOVA,Rn說(shuō)明:將寄存器Rn的內(nèi)容復(fù)制到ACC,即Rn→ACC編譯后大小:1B執(zhí)行時(shí)間12個(gè)時(shí)鐘脈沖指令:MOVA,R3若執(zhí)行前:ACC=33HR3=39H執(zhí)行后:ACC=39HR3=39H范例ACC=?R3=?MOVA,@Ri說(shuō)明:以間址寄存器Ri的內(nèi)容為地址,講存儲(chǔ)器中該地址內(nèi)的數(shù)據(jù)復(fù)制到ACC,即(Ri)→ACC編譯后大?。?B執(zhí)行時(shí)間12個(gè)時(shí)鐘脈沖指令:MOVA,@R0若執(zhí)行前:ACC=35HR0=21H(21H)=77H執(zhí)行后:ACC=77HR0=21H(21H)=77H范例ACC=?R0=?(21H)=?MOVA,#data說(shuō)明:將立即數(shù)data復(fù)制到ACC,即data→ACC編譯后大?。?B執(zhí)行時(shí)間12個(gè)時(shí)鐘脈沖指令:MOVA,#16若執(zhí)行前:ACC=12H執(zhí)行后:ACC=16范例ACC=?以累加器A為目的操作數(shù)的指令(4條)以寄存器Rn為目的操作數(shù)的指令(3條)以直接地址direct為目的操作數(shù)的指令(5條)以間接地址為目的操作數(shù)的指令(3條)16位數(shù)據(jù)傳送指令(1條)MOVRn,A說(shuō)明:將ACC的內(nèi)容復(fù)制到寄存器Rn,即ACC→Rn編譯后大小:1B執(zhí)行時(shí)間12個(gè)時(shí)鐘脈沖指令:MOVR5,A若執(zhí)行前:ACC=30H,R5=ABH執(zhí)行后:ACC=30H,R5=30H范例ACC=?R5=?MOVRn,#data說(shuō)明:將立即數(shù)data復(fù)制到Rn,即data→Rn編譯后大?。?B執(zhí)行時(shí)間12個(gè)時(shí)鐘脈沖指令:MOVR7,#20若執(zhí)行前:R7=00H執(zhí)行后:R7=20范例R7=?MOVRn,direct說(shuō)明:將存儲(chǔ)器地址(direct)的內(nèi)容復(fù)制到Rn,即:(direct)→Rn編譯后大?。?B執(zhí)行時(shí)間24個(gè)時(shí)鐘脈沖指令:MOVR2,20H若執(zhí)行前:R2=01H(20H)=D3H執(zhí)行后:R2=D3H(20H)=D3H范例R2=?(20H)=?以累加器A為目的操作數(shù)的指令(4條)以寄存器Rn為目的操作數(shù)的指令(3條)以直接地址direct為目的操作數(shù)的指令(5條)以間接地址為目的操作數(shù)的指令(3條)16位數(shù)據(jù)傳送指令(1條)MOVdirect,A說(shuō)明:將ACC的內(nèi)容復(fù)制到存儲(chǔ)器地址(direct),即:ACC→(direct)編譯后大小:2B執(zhí)行時(shí)間:12個(gè)時(shí)鐘脈沖指令:MOV20H,A若執(zhí)行前:ACC=ABH(20H)=A8H執(zhí)行后:ACC=ABH(20H)=ABH范例A=?(20H)=?MOVdirect,Rn說(shuō)明:將寄存器Rn的內(nèi)容復(fù)制到存儲(chǔ)器地址(direct),即:Rn→(direct)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVR0,26H若執(zhí)行前:R0=32H(26H)=5CH執(zhí)行后:R0=5CH(21H)=5CH范例R0=?(26H)=?MOVdirect1,diect2說(shuō)明:將存儲(chǔ)器(direct2)的內(nèi)容復(fù)制到存儲(chǔ)器地址(direct1),即(direct2)→(direct1)編譯后大小:2B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOV20H,30H若執(zhí)行前:(20H)=30H(30H)=20H執(zhí)行后:(20H)=20H(30H)=20H范例(20H)=?(30H)=?MOVdirect,@Ri說(shuō)明:將存儲(chǔ)器(direct2)的內(nèi)容復(fù)制到存儲(chǔ)器地址(direct1),即(direct2)→(direct1)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOV20H,@R0若執(zhí)行前:(20H)=00HR0=30H(30H)=34H執(zhí)行后:(20H)=34HR0=30H(30H)=34H范例(20)=?R0=?(30H)=?MOVdirect,#data說(shuō)明:將8位立即數(shù)data復(fù)制到存儲(chǔ)器地址(direct)即:data→(direct)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOV30H,#0FFH若執(zhí)行前:(30H)=34H執(zhí)行后:(30H)=0FFH范例(30H)=?以累加器A為目的操作數(shù)的指令(4條)以寄存器Rn為目的操作數(shù)的指令(3條)以直接地址direct為目的操作數(shù)的指令(5條)以間接地址為目的操作數(shù)的指令(3條)16位數(shù)據(jù)傳送指令(1條)MOV@Ri,A說(shuō)明:將ACC的內(nèi)容復(fù)制到以間址寄存器Ri內(nèi)容為地址的存儲(chǔ)器,即:ACC→(Ri)編譯后大?。?B執(zhí)行時(shí)間:12個(gè)時(shí)鐘脈沖指令:MOV@R1,A若執(zhí)行前:ACC=39H,R1=22H,(22H)=56H執(zhí)行后:ACC=39H,R1=22H,(22H)=39H范例ACC=?R1=?(22H)=?MOV@Ri,direct說(shuō)明:將(direct)地址的內(nèi)容復(fù)制到以間址寄存器Ri內(nèi)容為地址的存儲(chǔ)器,即:ACC→(Ri)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOV@R1,20H若執(zhí)行前:R1=21H,(21H)=56H,(20H)=0ABH執(zhí)行后:R1=21H,(21H)=0ABH,(20H)=0ABH范例R1=?(21H)=?(20H)=?MOV@Ri,#data說(shuō)明:將八位立即數(shù)data值復(fù)制到以間址寄存器Ri內(nèi)容為地址的存儲(chǔ)器,即:data→(Ri)編譯后大小:2B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOV@R1,#20若執(zhí)行前:R1=33H,(33H)=1CH執(zhí)行后:R1=33H,(33H)=20范例R0=?(33H)=?以累加器A為目的操作數(shù)的指令(4條)以寄存器Rn為目的操作數(shù)的指令(3條)以直接地址direct為目的操作數(shù)的指令(5條)以間接地址@Ri為目的操作數(shù)的指令(3條)16位數(shù)據(jù)傳送指令(1條)MOVDPTR,#data16說(shuō)明:將十六位立即數(shù)data16值復(fù)制到以數(shù)據(jù)指針寄存器DPTR,即:data16→DPTR編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVDPTR,#1234H若執(zhí)行前:DPTR=0000H執(zhí)行后:DPTR=1234H范例DPTR=?課堂訓(xùn)練:已知(70H)=60H,(60H)=20H,P1口當(dāng)前狀態(tài)是B7HMOVR0,#70HMOVA,@R0MOVR1,AMOVB,@R1MOV@R0,P1執(zhí)行完上述命令后(70H)=?B=?R1=?R0=?訓(xùn)練已知(70H)=60H,(60H)=20H,P1口當(dāng)前狀態(tài)是B7HMOVR0,#70H;70H→R0MOVA,@R0;60H→AMOVR1,A;60H→R1MOVB,@R1;20H→BMOV@R0,P1;B7H→70H執(zhí)行完上述命令后(70H)=B7H;B=20H;R1=60H;R0=70H作業(yè)一、修改命令中的錯(cuò)誤。1、MOV@R1,A2、MOVA,@R73、MOVA,#3000H4、MOVR7,@R15、MOV30H,A二、寫(xiě)出最終結(jié)果已知(70H)=55H,(55H)=60H,(60H)=20HMOVR0,#55HMOVR1,60HMOVA,@R0MOVB,AMOV@R0,A執(zhí)行完上述命令后:(70H)=?(55H)=?(60H)=?A=?B=?R1=?R0=?二、查表法指令(A與ROM的傳送指令)查表法指令的功能是將基底寄存器的內(nèi)容加上ACC的內(nèi)容,再以其和為地址,將該寄存器地址的內(nèi)容復(fù)制到ACC。如圖所示:MOVCA,@A+DPTR說(shuō)明:先將ACC的內(nèi)容與DPTR的內(nèi)容相加,再以其結(jié)果為地址(16位),將該寄存器地址的內(nèi)容復(fù)制到ACC,即:(ACC+DPTR)→ACC編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVCA,@A+DPTR若執(zhí)行前:ACC=02H,DPTR=0010H,(0012H)=3DH執(zhí)行后:ACC=3DH,DPTR=0010H,(0012H)=3DH范例ACC=?PC=?(0012H)=?MOVCA,@A+PC說(shuō)明:先將ACC的內(nèi)容與程序計(jì)數(shù)器PC的內(nèi)容相加,再以其結(jié)果為地址(16位),將該寄存器地址的內(nèi)容復(fù)制到ACC,即:(ACC+PC)→ACC編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVCA,@A+PC若執(zhí)行前:ACC=00H,PC=0020H,(0020H)=52H執(zhí)行后:ACC=52H,PC=0020H,(0020H)=52H范例ACC=?PC=?(0020H)=?查表指令(2條)MOVCA,@A+DPTR;一般DPTR放表的首地址,A放所查數(shù)據(jù)在表中的偏移;查表范圍為64KB空間,稱(chēng)為遠(yuǎn)程查表。MOVCA,@A+PC;PC的值為下條指令的地址,A放所查數(shù)據(jù)相對(duì)PC值的偏移;查表范圍為最大為256B空間,稱(chēng)為近程查表。例:近程查表設(shè)程序中的數(shù)據(jù)表格為:1010H:02H1011H:04H1012H:06H1013H:08H執(zhí)行程序:1000H:MOVA,#0DH1002H:MOVCA,@A+PC;(0DH+1003H)A1003H:MOVR0,A;(A)R0結(jié)果為:(A)=02H,(R0)=02H,(PC)=1004H例2遠(yuǎn)程查表設(shè)程序中的數(shù)據(jù)表格為:執(zhí)行程序:1000H:MOVA,#10H1002H:PUSHDPH1004H:PUSHDPL1006H:MOVDPTR,#7000H1009H:MOVCA,@A+DPTR;(10H+7000H)A100AH:POPDPL100CH:POPDPH
結(jié)果為:(A)=02H,(PC)=100EH,(DPTR)=原值7010H:02H7011H:04H7012H:06H7013H:08H片內(nèi)存儲(chǔ)器或存儲(chǔ)單元(片內(nèi)RAM)要與ROM交換數(shù)據(jù)都必須要經(jīng)過(guò)累加器A。例:把ROM中2000H單元的內(nèi)容送到R0中。MOVA,#00HMOVDPTR,#2000HMOVCA,@A+DPTRMOVR0,AMOVCR0,2000H是錯(cuò)誤的。在程序存儲(chǔ)器中有一平方表,從2000H單元開(kāi)始存放,如圖所示,試通過(guò)查表指令查找出6的平方。解:只要預(yù)先使用一條16位數(shù)據(jù)傳送指令,把表的首地址2000H送入DPTR,然后進(jìn)行查表就可以了。MOVA,#6;設(shè)定備查的表項(xiàng)MOVDPTR,#2000H;設(shè)置DPTR為表始址MOVCA,@A+DPTR;將A的平方值查表后送A如果需要查找其他數(shù)的平方,只需要將累加器A的內(nèi)容(變址)改一下即可。2000H02001H12002H42003H92004H162005H252006H362007H492008H642009H81三、外部數(shù)據(jù)訪問(wèn)指令(4條)外部數(shù)據(jù)訪問(wèn)指令的功能是訪問(wèn)外部擴(kuò)展存儲(chǔ)設(shè)備(RAM)的數(shù)據(jù)。如圖所示:MOVXA,@Ri說(shuō)明:以間址寄存器Ri的內(nèi)容作為地址(8位),將外部存儲(chǔ)器該地址的內(nèi)容復(fù)制到ACC即:(Ri)→ACC編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVXA,@R1若執(zhí)行前:ACC=00H,R1=60H,(60H)=79H執(zhí)行后:ACC=79H,R1=60H,(60H)=79H范例ACC=?R1=?(60H)=?MOVXA,@DPTR說(shuō)明:以DPTR的內(nèi)容作為地址(16位),將外部存儲(chǔ)器該地址的內(nèi)容復(fù)制到ACC即:(DPTR)→ACC編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVXA,@DPTR若執(zhí)行前:ACC=00H,DPTR=1122H,(1122H)=56H執(zhí)行后:ACC=56H,DPTR=1122H,(1122H)=56H范例ACC=?DPTR=?(1122H)=?MOVX@Ri,A說(shuō)明:以間址寄存器Ri的內(nèi)容作為地址(8位),將ACC的內(nèi)容復(fù)制到外部存儲(chǔ)器該地址里。即:ACC→(Ri)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVX@R0,A若執(zhí)行前:ACC=00H,R0=20H,(20H)=79H執(zhí)行后:ACC=00H,R0=20H,(20H)=00H范例ACC=?R0=?(20H)=?MOVX@DPTR,A說(shuō)明:以數(shù)據(jù)指針寄存器DPTR內(nèi)容作為地址(16位),將ACC的內(nèi)容復(fù)制到外部存儲(chǔ)器該地址中.即:ACC→(DPTR)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:MOVX@DPTR,A若執(zhí)行前:ACC=0EFH,DPTR=0012H,(0012H)=0AAH執(zhí)行后:ACC=0EFH,DPTR=0012H,(0012H)=0EFH范例ACC=?DPTR=?(0012H)=??jī)?nèi)外RAM的交換必須要經(jīng)過(guò)A;外部RAM沒(méi)有內(nèi)部RAM那么多的尋址方式,所以對(duì)外部RAM的操作不如對(duì)內(nèi)部RAM那么方便,很多運(yùn)算必須要經(jīng)過(guò)內(nèi)部RAM才能進(jìn)行。例:將片外RAM20H單元的內(nèi)容送到片內(nèi)RAM30H單元。MOVDPTR,#0020HMOVXA,@DPTRMOV30H,AMOVX30H,20H;是錯(cuò)誤的。將外部RAM2000H單元的內(nèi)容傳送至外部RAM3000H單元。解:8051單片機(jī)指令系統(tǒng)中沒(méi)有外部RAM兩個(gè)單元直接傳送數(shù)據(jù)的指令,只有外部RAM和累加器的傳送指令,要想實(shí)現(xiàn)題目中要求的功能,必須通過(guò)累加器A進(jìn)行。具體程序如下:MOVDPTR,#2000H;送源數(shù)據(jù)地址MOVXA,@DPTR;源數(shù)據(jù)送累加器MOVDPTR,#3000H;送數(shù)據(jù)目的地址MOVX@DPTR,A;累加器內(nèi)容送目的單元四、堆棧訪問(wèn)指令(2條)堆棧訪問(wèn)指令的功能是按堆棧指針訪問(wèn)堆棧數(shù)據(jù),堆棧具有先進(jìn)后出(FILO)的特性,適用于堆棧操作的操作數(shù)為RAM地址為direct的數(shù)據(jù),包括所有的特殊功能寄存器。PUSHdirect說(shuō)明:將堆棧指針寄存器SP的內(nèi)容+1,然后將direct地址的內(nèi)容復(fù)制到SP,即direct→(SP+1)編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:PUSHA若執(zhí)行前:ACC=8AH,SP=60H,(60H)=33H(61H)=45H執(zhí)行后:ACC=8AH,SP=61H,(60H)=33H(61H)=8AH范例ACC=?SP=?(60H)=?(61H)=?【例】設(shè)SP=60H,ACC=30H,B=70H,執(zhí)行下列命令PUSHACCPUSHBA=?B=?(61H)=?(62H)=?SP=?【例】設(shè)SP=60H,ACC=30H,B=70H,執(zhí)行下列命令PUSHACC;SP+1→SP,A→SP(=61H)PUSHB;SP+1→SP,B→SP(=62H)A=30B=70(61H)=30H(62H)=70HSP=62HPOPdirect說(shuō)明:以堆棧指針寄存器SP為地址,將存儲(chǔ)器中數(shù)據(jù)該復(fù)制到direct地址,然后SP-1,即(SP)→direct,SP-1→SP編譯后大?。?B執(zhí)行時(shí)間:24個(gè)時(shí)鐘脈沖指令:POPA若執(zhí)行前:ACC=00H,SP=61H,(60H)=33H(61H)=45H執(zhí)行后:ACC=45H,SP=60H,(60H)=33H(61H)=45H范例ACC=?SP=?(60H)=?(61H)=?【例】設(shè)SP=62H,(62H)=70H,(61H)=30H,執(zhí)行下列命令POPDPHPOPDPLDPTR=?SP=?注:DPTR=DPH組合DPL【例】設(shè)SP=62H,(62H)=70H,(61H)=30H,執(zhí)行下列命令POPDPH;SP→DPH,SP-1→SPPOPDPL;SP→DPL,SP-1→SPDPTR=7030HSP=60H(A)=20H,(B)=30H,分析執(zhí)行下面指令以后的結(jié)果。PUSHACCPUSHBPOPACCPOPB解:根據(jù)堆棧的“先入后出、后入先出”操作原則進(jìn)行分析,執(zhí)行上面指令以后結(jié)果為:(A)=30H,(B)=20H。解:根據(jù)堆棧的“先入后出、后入先出”操作原則進(jìn)行分析,執(zhí)行上面指令以后結(jié)果為:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)員工跨文化管理培訓(xùn)合同
- 加強(qiáng)孕產(chǎn)婦及兒童用藥管理
- 2025年度個(gè)人企業(yè)經(jīng)營(yíng)周轉(zhuǎn)貸款抵押合同模板2篇
- 二零二五年度綠色生態(tài)農(nóng)業(yè)項(xiàng)目合同書(shū)4篇
- 2025年度個(gè)人抵押車(chē)借款數(shù)據(jù)安全保密合同
- 2025年度農(nóng)業(yè)廢棄物資源化利用技術(shù)服務(wù)合同8篇
- 2025年度噴砂機(jī)銷(xiāo)售與產(chǎn)業(yè)升級(jí)合作合同4篇
- 課題申報(bào)參考:面向深度學(xué)習(xí)雙向調(diào)節(jié)學(xué)習(xí)困惑:聚焦多模態(tài)診斷與調(diào)節(jié)支架設(shè)計(jì)的研究
- 2025年度家庭影院定制裝修服務(wù)合同范本
- 2025版智能爬架租賃與維護(hù)一體化服務(wù)合同4篇
- 2024年山東省泰安市高考語(yǔ)文一模試卷
- 五年級(jí)上冊(cè)計(jì)算題大全1000題帶答案
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 北師大版物理九年級(jí)全一冊(cè)課件
- 2024年第三師圖木舒克市市場(chǎng)監(jiān)督管理局招錄2人《行政職業(yè)能力測(cè)驗(yàn)》高頻考點(diǎn)、難點(diǎn)(含詳細(xì)答案)
- RFJ 006-2021 RFP型人防過(guò)濾吸收器制造與驗(yàn)收規(guī)范(暫行)
- 盆腔炎教學(xué)查房課件
- 新概念英語(yǔ)課件NCE3-lesson15(共34張)
- GB/T 3683-2023橡膠軟管及軟管組合件油基或水基流體適用的鋼絲編織增強(qiáng)液壓型規(guī)范
- 電視劇《瑯琊榜》特色分析
- 5A+Chapter+1+Changes+at+home+課件(新思維小學(xué)英語(yǔ))
評(píng)論
0/150
提交評(píng)論