c51單片機(jī)-匯編自學(xué)教程_第1頁(yè)
c51單片機(jī)-匯編自學(xué)教程_第2頁(yè)
c51單片機(jī)-匯編自學(xué)教程_第3頁(yè)
c51單片機(jī)-匯編自學(xué)教程_第4頁(yè)
已閱讀5頁(yè),還剩130頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

畢業(yè)論文:C51單片機(jī)ー匯編自學(xué)教程單片機(jī)原理及應(yīng)用課程特點(diǎn)課程特點(diǎn)①知識(shí)點(diǎn)既分散又連貫,結(jié)構(gòu)和指令系統(tǒng)是基礎(chǔ);②與電子線路尤其是數(shù)字電子線路關(guān)系密切;學(xué)習(xí)方法學(xué)習(xí)方法①預(yù)習(xí)、復(fù)習(xí);②多動(dòng)手(硬件、軟件實(shí)驗(yàn));③多看參考書(shū)包括利用網(wǎng)上資料;④其它(上課、作業(yè)、答疑)。主要內(nèi)容主要內(nèi)容第一章 概述第二章MCS-51單片機(jī)的結(jié)構(gòu)和原理第三章MCS-51單片機(jī)的指令系統(tǒng)第四章MCS-51單片機(jī)的程序設(shè)計(jì)第五章MCS-51單片機(jī)的中斷系統(tǒng)第六章MCS-51單片機(jī)的串行接口第七章MCS-51單片機(jī)的系統(tǒng)擴(kuò)展第八章MCS-51單片機(jī)的測(cè)控接口部分第一章概述第一章概述?§1.1微型計(jì)算機(jī)與單片機(jī)巨大計(jì)算 中機(jī)小多片機(jī)(PC)AB單片機(jī)★單片機(jī)SCMCSingleChipMicroComputer 屬于微型機(jī)的ー種ーー具有一般微機(jī)的基本組成和功能又稱(chēng)為微控制器MCU(MicroControllerUnit)ー、微型機(jī)與單片機(jī)的基本組成對(duì)比CPU微型機(jī) 存儲(chǔ)器輸入/輸出接口地址總線DB微線CBCPUROMRAM I/O接口數(shù)據(jù)總線控制總微型機(jī)組成框圖程序存儲(chǔ)器 數(shù)據(jù)存儲(chǔ)器時(shí)鐘OSCROM RAMCPU中斷 各種I/O 定時(shí)器/計(jì)數(shù)器MCS-5!單片機(jī)組成框圖二、單片機(jī)的特點(diǎn)!優(yōu)異的性能價(jià)格比。2集成度高、體積小、有很高的可靠性。單片機(jī)把各功能部件集成在ー塊芯片上,內(nèi)部采用總線結(jié)構(gòu),減少了各芯片之間的連線,大大提高了單片機(jī)的可靠性與抗干擾能力。另外,其體積小,對(duì)于強(qiáng)磁場(chǎng)環(huán)境易于采取屏蔽措施,適合于在惡劣環(huán)境下工作。此外,程序多采取固化形式也可以提高可靠性。3控制功能強(qiáng)。為了滿足エ業(yè)控制要求,一般單片機(jī)的指令系統(tǒng)中均有極豐富的轉(zhuǎn)移指令、I/Oロ的邏輯操作以及位處理功能。單片機(jī)的邏輯控制功能及運(yùn)行速度均高于同一檔次的微機(jī)。4單片機(jī)的系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。三、單片機(jī)的應(yīng)用.單片機(jī)應(yīng)用的特點(diǎn)軟硬件結(jié)合、多學(xué)科交叉;應(yīng)用現(xiàn)場(chǎng)環(huán)境惡劣(電磁干擾、電源波動(dòng)、沖擊振動(dòng)、高低溫濕度等);應(yīng)用領(lǐng)域廣泛且意義重大(硬件軟化ー微控制技術(shù))。.單片機(jī)的應(yīng)用領(lǐng)域①在在工業(yè)自動(dòng)化方面(過(guò)程控制、數(shù)據(jù)采集和測(cè)控技術(shù)、機(jī)器人技術(shù)、機(jī)械電子計(jì)算機(jī)一體化技術(shù));②儀器儀表方面(測(cè)試儀表和醫(yī)療儀器ー數(shù)字化、智能化、高精度、小體積、低成本、便于增加顯示報(bào)警和自診斷功能);③在家用電器方面(冰箱、洗衣機(jī)、空調(diào)機(jī)、微波爐、電視機(jī)、音像設(shè)備等);④信息和通信產(chǎn)品方面(計(jì)算機(jī)的鍵盤(pán)、打印機(jī)、磁盤(pán)驅(qū)動(dòng)器;傳真機(jī)、復(fù)印機(jī)、電話機(jī)、考勤機(jī));⑤在軍事方面(飛機(jī)、大炮、坦克、軍艦、導(dǎo)彈、火箭、雷達(dá)等)。§1.2常用單片機(jī)系列介紹?1、綜述自單片機(jī)誕生以來(lái)的近30年中,單片機(jī)已有70多個(gè)系列的近500個(gè)機(jī)種。國(guó)際上較有名、影響較大的公司及他們的產(chǎn)品如下所述:?Intel公司的MCS—48、MCS-51,MCS-96系列;★?Motorola公司的6801、6802、6803、6805、68HC11系列產(chǎn)品;?Zilog公司的Z8、Super8系列產(chǎn)品;?仙童Fairchild公司和Mostek公司的F8、3870系列產(chǎn)品;?NEC公司的UCOM—87系列產(chǎn)品;?Rockwell公司的650〇、6501系列產(chǎn)品。?Atmel、PHILIPSヽLG等公司的51兼容機(jī)?!锔鶕?jù)近年來(lái)國(guó)外實(shí)地考察,Intel公司的單片機(jī)在市場(chǎng)上占有量為67%,其中MCS—51系列產(chǎn)品又占54%。在我們國(guó)內(nèi)雖然上述各公司的產(chǎn)品均有引進(jìn),但由于各種原因,至今在我國(guó)所應(yīng)用的單片機(jī)仍然是以MCS—48、MCS-51.MCS—96為主流系列。隨著這ー系列的深入開(kāi)發(fā),其主流系列的地位會(huì)不斷鞏固下去。因而我們?cè)诖酥饕榻BIntel公司的單片機(jī)系列。2、MCS-51系列和AT89系列單片機(jī)MCS-51系列MCS-5I是指由美國(guó)INTEL公司生產(chǎn)的一系列單片機(jī)的總稱(chēng),這ー系列單片機(jī)包括了好些品種,如8031,8051,8751,8951,8032,8052,8752,8952等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來(lái)的,所以人們習(xí)慣于用8051來(lái)稱(chēng)呼MCS-51系列單片機(jī),而8031是前些年在我國(guó)最流行的單片機(jī),所以很多場(chǎng)合會(huì)看到8031的名稱(chēng)。MCS-51系列單片機(jī)分類(lèi)片內(nèi)ROM形式定時(shí)/斷計(jì)數(shù)器源ROMRAM系列ROMEPREPRX16 552子系列80328052875289528KB256B3X16 6P1.0140VccPl.1239P0.0P1.2338P0.1P1.3437P0.2P1.4536P0.3P1.5635P0.4P1.6734P0.5P1.7833P0.651子系列80318051875189514KB128B2

RST/VPD932PO.7RXD/P3.01031EA/VppTXD/P3.111805130ALE/PROGINTO/P3.21229PSENINTI/P3.31328P2.7TO/P3.41427P2.6Tl/P3.51526P2.5WR/P3.61625P2.4RD/P3.71724P2.3XTAL21823P2.2

XTAL11922P2.1XTAL11922P2.1Vss 20 21 P2.0AT89系列INTEL公司將MCS-5I的核心技術(shù)授權(quán)給了很多其它公司,所以有很多公司在做以8051為核心的單片機(jī),當(dāng)然,功能或多或少有些改變,以滿足不同的需求,其中89c51就是這幾年在我國(guó)非常流行的單片機(jī),它是由美國(guó)ATMEL公司開(kāi)發(fā)生產(chǎn)的?!?.3單片機(jī)的開(kāi)發(fā)過(guò)程這里所說(shuō)的開(kāi)發(fā)過(guò)程并不是一般書(shū)中所說(shuō)的從任務(wù)分析開(kāi)始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫(xiě)軟件的工作。在編寫(xiě)軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來(lái)了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來(lái)后,其控制字也就被確定了。然后用文本編緝器編寫(xiě)軟件,編寫(xiě)好后,用編譯器對(duì)源程序文件編譯、查錯(cuò),直到?jīng)]有語(yǔ)法錯(cuò)誤,除了極簡(jiǎn)單的程序外,一般應(yīng)用仿真機(jī)對(duì)軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫(xiě)片(將程序固化在EPROM中)。

目標(biāo)文件也就是最終EPROM的文件:020040FFFFFFFFORG0000H020040FFFFFFFFFFLJMPSTARTORG040HFFFFFFFFFFFFFFFFLJMPSTARTORG040HFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFSTART:MOVSP,#5FH;設(shè)堆棧FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFLOOP:NOPFFFFFFFFFFFFFFFFLJMPLOOP;循環(huán)FFFFFFFFFFFFFFFFENDEND:結(jié)束FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75815F00020043§1.4仿真、仿真器仿真是單片機(jī)開(kāi)發(fā)過(guò)程中非常重要的一個(gè)環(huán)節(jié),除了一些極簡(jiǎn)單的任務(wù),一般產(chǎn)品開(kāi)發(fā)過(guò)程中都要進(jìn)行仿真,仿真的主要目的是進(jìn)行軟件調(diào)試,當(dāng)然借助仿真器,也能進(jìn)行一些硬件排錯(cuò)。ー塊單片機(jī)應(yīng)用電路板包括單片機(jī)部份及為達(dá)到使用目的而設(shè)計(jì)的應(yīng)用電路,仿真就是利用仿真器來(lái)代替應(yīng)用電路板(稱(chēng)目標(biāo)機(jī))的單片機(jī)部份,對(duì)應(yīng)用電路部份進(jìn)行測(cè)試、調(diào)試。仿真分軟件模擬仿真和利用仿真器仿真兩類(lèi)。軟件模擬仿真是指用仿真軟件來(lái)模擬單片機(jī)運(yùn)行情況,一般我們學(xué)習(xí)指令系統(tǒng)時(shí)常用這種方式,它不能進(jìn)行硬件系統(tǒng)的調(diào)試和故障診斷。利用仿真器仿真利用仿真器以及微機(jī)可.以進(jìn)行軟硬件系統(tǒng)的調(diào)試和故障診斷。在仿真調(diào)試過(guò)程中,可以以各種運(yùn)行方式運(yùn)行程序(斷點(diǎn)、單步、跟蹤),還可以觀察到單片機(jī)內(nèi)部

存儲(chǔ)器、寄存器等的狀態(tài)演示實(shí)驗(yàn)ーP!口的LED顯示第二章 MCS-51系列單片機(jī)的結(jié)構(gòu)和原理的結(jié)構(gòu)和第二章的結(jié)構(gòu)和原理有關(guān)MCS-51機(jī)的性能特點(diǎn),在第一章已作了簡(jiǎn)單介紹,本節(jié)將進(jìn)ー步詳細(xì)介紹它的結(jié)構(gòu),使大家對(duì)它的性能有更深入的了解MCS-51的典型產(chǎn)品是8051、8031、8751〇8051是ROM型單片機(jī),內(nèi)部有4KR0M;8031無(wú)片內(nèi)ROM,875I片內(nèi)有4KEPR0M;89C51片內(nèi)有4KFPER0M〇除此以外,它們的內(nèi)部結(jié)構(gòu)及引腳完全相同。本章將以MCS-5I系列的8051為典型例子,詳細(xì)介紹單片機(jī)的結(jié)構(gòu)、性能、存儲(chǔ)器結(jié)構(gòu)及工作原理等內(nèi)容。通過(guò)對(duì)這些內(nèi)容的掌握,可以起到舉一反三、觸類(lèi)旁通的作用?!?.1MCS-51單片機(jī)的結(jié)構(gòu)以8051為例給出的單片機(jī)功能方塊圖如下。由圖可見(jiàn),在這ー塊芯片上,集成了一臺(tái)微型計(jì)算機(jī)的各個(gè)部分。其中主要有CPU、存儲(chǔ)器、可編程I/O、定時(shí)/計(jì)數(shù)器、串行□等。各部分通過(guò)內(nèi)部總線相連程序存儲(chǔ)器存儲(chǔ)器時(shí)鐘OSCROM RAMCPU中斷 各種I/O 定時(shí)器/計(jì)數(shù)器MCS-5!單片機(jī)組成框圖8051的內(nèi)部結(jié)構(gòu)展開(kāi)圖128X8 RAM地址寄存器 P3ロP1ロP2ロ P0ロRAM

SP 中斷控制鎖存器 鎖存器鎖存器鎖存器定時(shí)/計(jì)數(shù)器串行I/Oロ寄存器B 累加器A數(shù)據(jù)指針DPTR4KX8指令寄存器IRROM緩沖器暫存器1暫存器2指令譯碼器ID程序計(jì)數(shù)器PC增PC增器AR字PSWALU2.1.1CPU算術(shù)/邏輯部件ALUArithmeticLogicUnit累加器ACCAccumulator程序狀態(tài)字寄存器PSWProgramStatusWord暫存寄存器U 指令寄存器IR控制器指令譯碼器ID程序計(jì)數(shù)器PC定時(shí)控制與條件轉(zhuǎn)移邏輯電路2.1.28051的片內(nèi)存儲(chǔ)器8051單片機(jī)與一般微機(jī)的存儲(chǔ)器配置方式很不相同。一般微機(jī)通常只有一個(gè)邏輯空間,可以隨意安排ROM或RAM。訪問(wèn)存儲(chǔ)器時(shí),同一地址對(duì)應(yīng)唯一的存儲(chǔ)單元,可以是ROM也可以是RAM,并用同類(lèi)訪問(wèn)指令。而MCS-51則不同:8051在物理結(jié)構(gòu)上設(shè)計(jì)成程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器獨(dú)立分開(kāi)的哈佛結(jié)構(gòu):片內(nèi)程序存儲(chǔ)器4KB(ROMOOOOH~OFFFH)片內(nèi)數(shù)據(jù)存儲(chǔ)器128B(RAM00H~7FH)2.1.38051的I/O端口8051有四個(gè)8位并行雙向I/OロP0、Pl、P2、P3,ー個(gè)串行口。2.1.48051的特殊功能寄存器SFR8051內(nèi)部有21個(gè)特殊功能寄存器,分別叫SP、IE、IP、PCON (與內(nèi)部RAM統(tǒng)ー 編 址 80H?FFH )new★§2.2MCS-51單片機(jī)的存儲(chǔ)器組織8051在物理結(jié)構(gòu)上有四個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器、片外數(shù)據(jù)存儲(chǔ)器。FFFFHFFFFH64KB64KBROM

RAMI/O程序存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器1000HOFFFHFFH4KBSFR80HEA0ROM7FH0000H EA1OOHRAM 0000H片內(nèi)8051在邏輯上,即從用戶角度上8051有三個(gè)存儲(chǔ)空間:片內(nèi)外統(tǒng)ー編址的程序存儲(chǔ)器片內(nèi)外不統(tǒng)ー編址的數(shù)據(jù)存儲(chǔ)器特殊功能寄存器(片內(nèi))★訪問(wèn)這幾個(gè)不同的邏輯空間時(shí),采用的指令:片內(nèi)外程序存儲(chǔ)器空間ーーM0VC片內(nèi)數(shù)據(jù)存儲(chǔ)器空間和SFRーーMOV片外數(shù)據(jù)存儲(chǔ)器地址空間ーーMOVXー、程序存儲(chǔ)器及地址空間作用ー程序存儲(chǔ)器用于存放編好的程序和表格常數(shù)。①8051片內(nèi)有4K字節(jié)ROM,片外用16位地址線最多可擴(kuò)展64K字節(jié)ROM,兩者是統(tǒng)ー編址的?!锶绻鸈A端保持高電平,805I執(zhí)行片內(nèi)前4KBROM地址OOOOH-OFFFH中的程序。當(dāng)尋址范圍超過(guò)4KB(1000H-FFFFH)時(shí),則從片外存儲(chǔ)器取指令★當(dāng)EA端保持低電平時(shí),8051的所有取指令操作均在片外程序存儲(chǔ)器中進(jìn)行,這時(shí)片外存儲(chǔ)器可以從0000H開(kāi)始編址。②在程序存儲(chǔ)器中,有6個(gè)單元具有特殊功能OOOOH:8051復(fù)位后,PC=OOOOH,即程序從000OH開(kāi)始執(zhí)行指令。0003H:外部中斷〇入口。OOOBH:定時(shí)器〇溢出中斷入口。0013H:外部中斷1入口001BH:定時(shí)器1溢出中斷入口。0023H:串行口中斷入口。使用時(shí),通常在這些入口地址處存放一條絕對(duì)跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起始地址,或者從0000H起始地址跳轉(zhuǎn)到用戶設(shè)計(jì)的初始程序上。二、數(shù)據(jù)存儲(chǔ)器及地址空間

片外RAM64KB,地址范圍0000H'FFFFH數(shù)據(jù) 使用時(shí)只能用M0VX指令訪問(wèn)存儲(chǔ)器片內(nèi)RAM128B,地址范圍00H?7FH使用MOV指令訪問(wèn),可以進(jìn)行堆棧操作片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖7FH通用RAM區(qū)①由PSW中的2位RSI、RSO來(lái)決定80B哪ー組為當(dāng)前工作寄存器:80BRSI、RSO00選〇組RSI、RSO01選1組RSI、RSO10選2組RSI、RSO11選3組②在位地址區(qū),每ー個(gè)BIT都有一個(gè)30H地址,共!6X8128位2FH位地址區(qū)2FH16B 20H寄存器區(qū)寄存器3組1FH 4組32B4組32B寄存器〇組OOH片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖06H通用RAM區(qū)80BRSI、RSO00R6R303H30H位地址區(qū) 2FH 寄存器區(qū)TOC\o"1-5"\h\zR2 02H16B 20H寄存器3組1FH 4組32B01H寄存器2組 .00HR000HR0片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖7FHR7OFH通用RAM區(qū)OEHR5 ODHR4OCHR3OBH16B 20H寄存器3組1FH 4組32B09H寄存器2組OOHR1OOH寄存器RO 08H片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖通用RAM區(qū)80B . RSI、RSO1016HR6R313H30H位地址區(qū) 2FH 寄存器區(qū)TOC\o"1-5"\h\zR2 12H16B 20H寄存器3組1FH 4組32B11H寄存器2組 .寄存器 〇 組 OOHRO 1OH片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖7FHR71FH通用RAM區(qū)R5 1DHR41CHR31BHR21AHR216B 20H寄存器3組1FH 4組32B19H寄存器2組R1寄存器 〇 寄存器 〇 組RO 18H00H片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖7FHD7D6D5D4D3D2DIDO7FHD7D6D5D4D3D2DIDO7FH78H2FH通用RAM區(qū) 77H70H2EH80B . 6FH68H2DH. 67H60H2CH5FH58H2BH

57H50H2AH48H29H4FH40H28H位地址區(qū)47H38H30H27H3FH30H位地址區(qū)26H2FH37H20H24H寄存器2組. 1FH1FH23H寄存器1組. 17H10H22H寄存器〇組OOHOFH 08H21HO7H06H05H04HO3HO2HO1HOOH20H片內(nèi)數(shù)據(jù)存儲(chǔ)器空間分布圖通用RAM區(qū)80B通用RAM區(qū)共80個(gè)字節(jié),作為一般的數(shù)據(jù)緩沖區(qū)并可設(shè)置堆棧區(qū)16B 20H寄存器3組1FH寄存器〇組OOH三、特殊功能寄存器(21個(gè)字節(jié))SFRSpecialFunctionalRegister見(jiàn)書(shū)P20表2-2①與ALU相關(guān)的(3個(gè))ARegisterAccumulator:累加器,通常用A或ACC表示??勺止?jié)尋址EOH,也可位尋址EOH~E7H它是ー個(gè)寄存器,而不是ー個(gè)做加法的部件。在運(yùn)算器做運(yùn)算時(shí)其中一個(gè)數(shù)一定是在ACC中。BRegister:暫存寄存器。暫存寄存器。在做乘、除法時(shí)放乘數(shù)或除數(shù)及結(jié)果。PSWProgramStatusWord):PSW是8位寄存器,用于作為程序運(yùn)行狀態(tài)的標(biāo)志。這是ー個(gè)很重要的部件,里面存放了CPU工作時(shí)的很多狀態(tài),借此,我們可以了解CPU的當(dāng)前狀態(tài),并作出相應(yīng)的處理。當(dāng)CPU進(jìn)行各種邏輯操作或算術(shù)運(yùn)算時(shí),為反映操作或運(yùn)算結(jié)果的狀態(tài),把相應(yīng)的標(biāo)志位置1或清〇。這些標(biāo)志的狀態(tài),可由專(zhuān)門(mén)的指令來(lái)測(cè)試,也可通過(guò)指令來(lái)讀出。它為計(jì)算機(jī)確定程序的下ー步進(jìn)行方向提供依據(jù)。PSW寄存器中各位的名稱(chēng)及位置如上所示,下面說(shuō)明各標(biāo)志位的作用。它的各位功能如下:PSW位地址D7HD6HD5HD4HD3HD2HD1HDOHCY ACFORS1RSOOVPPSW位地址D7HD6HD5HD4HD3HD2HD1HDOHCYACFORSIRSOOVP?CY:進(jìn)位標(biāo)志。加減運(yùn)算時(shí),保存最高位進(jìn)位、借位狀態(tài)。?AC:半進(jìn)位標(biāo)志。例:78H+97H01111000+10010111100001111有進(jìn)位CY1 沒(méi)有半進(jìn)位AY0PSW位地址 D7H D6HD5HD4HD3HD2HD1HDOHCYAC FORSIRSOOVP?RSI、RSO:工作寄存器組選擇位。0 0 選擇工作寄存器0組0 1 選擇工作寄存器1組1 0 選擇工作寄存器2組1 1 選擇工作寄存器3組?P:奇偶校驗(yàn)位,它用來(lái)表示累加器A內(nèi)容中二進(jìn)制數(shù)位“1”的個(gè)數(shù)的奇偶性。若為奇數(shù),則P1,否則為〇。例:某運(yùn)算結(jié)果是78H(01111000),P〇〇PSW位地址 D7H D6HD5HD4HD3HD2HD1HDOHCYACFORSIRSOOV?FO:用戶標(biāo)志位。作為軟件標(biāo)志,由編程人員決定何時(shí)使用。?ov:溢出標(biāo)志位。有符號(hào)數(shù)運(yùn)算時(shí),如果發(fā)生溢出,0V置“1”,否則清“0''②與指針相關(guān)的(2個(gè))SPStackPointer:堆棧指針,8位寄存器,用來(lái)指定堆棧的棧頂位置,初值為07Ho它是加1計(jì)數(shù).DPTRDataPointer(分成DPH、DPL兩個(gè)):數(shù)據(jù)指針可.以用它來(lái)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器中的任ー單元,也可以作為通用寄存器來(lái)用,由我們自已決定如何使用。③與端口相關(guān)的(7個(gè))PO、Pl、P2、P3:四個(gè)并行輸入/輸出口的寄存器。它里面的內(nèi)容對(duì)應(yīng)著管腳的輸出。SCONSerialControlRegisterSBUFSerialDateBufferPCONPowerControlRegister④與定時(shí)/計(jì)數(shù)器相關(guān)的(6個(gè))TMODTimer/CounterModeRegister定時(shí)器工作模式寄存器。ICONTimer/CounterControlRegister定時(shí)器控制寄存器。THO、TL0ヽTH1、TL1:分別是TO、T1的記數(shù)初值寄存器。③與中斷相關(guān)的(2個(gè))IPInterruptPriorityRegisterIEInterruptEnableRegister課堂練習(xí)及思考題(P30)題2、7、8、10補(bǔ)充題:1.下列是關(guān)于8031單片機(jī)存儲(chǔ)空間的描述,分析其對(duì)錯(cuò):a.特殊功能寄存器容量為21B,沒(méi)有位地址。b.外部數(shù)據(jù)存儲(chǔ)器容量可達(dá)64kB,字節(jié)地址和位地址范圍均為0000H-FFFFHc.程序存儲(chǔ)器容量可達(dá)64kB,字節(jié)地址和位地址范圍均為0000H-FFFFHd,內(nèi)部數(shù)據(jù)存儲(chǔ)器容量為128B,字節(jié)地址和位地址范圍均為00H-7FHe.特殊功能寄存器容量為21B,有一部分特殊功能寄存器具有位地址f.程序存儲(chǔ)器容量可達(dá)64kB,地址范圍為0000H?FFFFHoMCS-5!單片機(jī)的工作寄存器組如何選擇?若PSW的RSI、RS0位的內(nèi)容是01,那么此時(shí)工作寄存器R1的字節(jié)地址是多少?MCS-51內(nèi)部RAM的寄存器區(qū)ー共有多少個(gè)存儲(chǔ)單元?分為多少組?每組有多少個(gè)存儲(chǔ)單元?分別以什么作為寄存器名?8051存儲(chǔ)空間的結(jié)構(gòu)與8086/8088有什么不同?它的物理結(jié)構(gòu)是怎樣的?MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器容量是多少?它有什么特點(diǎn)?§2.3MCS-51單片機(jī)的并行端口結(jié)構(gòu)與操作8051單片機(jī)有4個(gè)I/O端口,每個(gè)端口都是8位準(zhǔn)雙向口,共占32根引腳。每個(gè)端口都包括ー個(gè)鎖存器即專(zhuān)用寄存器P〇?P3、ー個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。通常把4個(gè)端口籠統(tǒng)地表示為P0?P3在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這4個(gè)端口的每ー位都可以作為準(zhǔn)雙向通用I/O端口使用。在具有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,P2口作為高8位地址線,P0口分時(shí)作為低8位地址線和雙向數(shù)據(jù)總線。8051單片機(jī)4個(gè)I/O端口線路設(shè)計(jì)的非常巧妙,學(xué)習(xí)I/O端口邏輯電路,不但有利于正確合理地使用端ロ,而且會(huì)給設(shè)計(jì)單片機(jī)外圍邏輯電路有所啟發(fā)。下面簡(jiǎn)單介紹一下輸入/輸出端口結(jié)構(gòu)。2.3.1P0口和P2的結(jié)構(gòu)ー、P0ロ的結(jié)構(gòu)下圖為P0口的某位PO.nn〇、7結(jié)構(gòu)圖,它由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電路及控制電路組成。從圖中可以看出,P0ロ既可以作為I/O用,也可以作為地址/數(shù)據(jù)線用。VCC地址/數(shù)據(jù)VCC讀鎖存器 控制T1PO.nP0ロ內(nèi)部總線 DQ T2引腳寫(xiě)鎖存器 CLKQ MUX讀引腳1、P0口作為普通I/Oロ①輸出時(shí)CPU發(fā)出控制電平“0”封鎖“與”門(mén),將輸出上拉場(chǎng)效應(yīng)管T1截止,同時(shí)使多路開(kāi)關(guān)MUX把鎖存器與輸出地址/數(shù)據(jù) VCC讀鎖存器 控制T1PO.nP0ロ內(nèi)部總線 DQ T2引腳寫(xiě)鎖存器 CLKQ MUX讀引腳驅(qū)動(dòng)場(chǎng)效應(yīng)管T柵極接通。故內(nèi)部總線與P0口同相。由

于輸出驅(qū)動(dòng)級(jí)是漏極開(kāi)路電路,若驅(qū)動(dòng)NMOS或其它拉流負(fù)載時(shí),需要外接上拉電阻。P0的輸出級(jí)可驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。地址/數(shù)據(jù)VCC讀鎖存器控制T1PO.nP0ロ內(nèi)部總線DQT2引腳寫(xiě)鎖存器CLKQMUX

②輸入時(shí)ーー分讀引腳或讀鎖存器讀引腳:由傳送指令MOV實(shí)現(xiàn);下面一個(gè)緩沖器用于讀端口引腳數(shù)據(jù),當(dāng)執(zhí)行一條由端口輸入的指令時(shí),讀脈沖把該三態(tài)緩沖器打開(kāi),這樣端口引腳上的數(shù)據(jù)經(jīng)過(guò)緩沖器讀入到內(nèi)部總線。地址/數(shù)據(jù) VCC讀鎖存器 控制T1PO.nP0內(nèi)部總線T2寫(xiě)鎖存器CLKQMUX讀引腳②輸入時(shí)ーー分讀引腳或讀鎖存器讀鎖存器:有些指令如:ANLPO,A稱(chēng)為“讀ー改ー寫(xiě)”指令,需要讀鎖存器。上面一個(gè)緩沖器用于讀端口鎖存器數(shù)據(jù)。地址/數(shù)據(jù) VCC讀鎖存器 控制T1寫(xiě)鎖存器 CLKQ MUX讀引腳**原因:如果此時(shí)該端口的負(fù)載恰是ー個(gè)晶體管基極,且原端口輸出值為1,那么導(dǎo)通了的PN結(jié)會(huì)把端口引腳高電平拉低;若此時(shí)直接讀端口引腳信號(hào),將會(huì)把原輸出的“1”電平誤讀為“〇”電平?,F(xiàn)采用讀輸出鎖存器代替讀引腳,圖中,上面的三態(tài)緩沖器就為讀鎖存器Q端信號(hào)而設(shè),讀輸出鎖存器可避免上述可能發(fā)生的錯(cuò)誤。**地址/數(shù)據(jù) VCC讀鎖存器T1PO.nPOロ內(nèi)部總線 DQ T2引腳寫(xiě)鎖存器 CLKQ MUX讀引腳準(zhǔn)雙向口:從圖中可以看出,在讀入端口數(shù)據(jù)時(shí),由于輸出驅(qū)動(dòng)FET并接在引腳上,如果T2導(dǎo)通,就會(huì)將輸入的高電平拉成低電平,產(chǎn)生誤讀。所以在端口進(jìn)行輸入操作前,應(yīng)先向端口鎖存器寫(xiě)“1”,使T2截止,引

腳處于懸浮狀態(tài),變?yōu)楦咦杩馆斎?。這就是所謂的準(zhǔn)雙向口。地址/數(shù)據(jù)VCC讀鎖存器控制T1PO.nP0ロ內(nèi)部總線DQT2引腳寫(xiě)鎖存器CLKQ MUX讀引腳2、P0作為地址/數(shù)據(jù)總線2、P0作為地址/數(shù)據(jù)總線在系統(tǒng)擴(kuò)展時(shí),P0端口作為地址/數(shù)據(jù)總線使用時(shí),分為:?P0引腳輸出地址/數(shù)據(jù)信息。VCC地址/數(shù)據(jù)VCC讀鎖存器 控制內(nèi)部總線 DQ引腳PO.nP0T2寫(xiě)鎖存器 CLKQ MUX2、P0作為地址/數(shù)據(jù)總線2、P0作為地址/數(shù)據(jù)總線CPU發(fā)出控制電平“1”,打開(kāi)“與”門(mén),又使多路開(kāi)關(guān)MUX把CPU的地址/數(shù)據(jù)總線與T2柵極反相接通,輸出地址或數(shù)據(jù)。由圖上可以看出,上下兩個(gè)FET處于反相,構(gòu)成了推拉式的輸出電路,其負(fù)載能力大大增強(qiáng)。地址/數(shù)據(jù) VCC讀鎖存器 控制T1PO.nP0寫(xiě)鎖存器 CLKQ MUX讀引腳2、P0作為地址/數(shù)據(jù)總線ーー真正的雙向口2、P0作為地址/數(shù)據(jù)總線?P0引腳輸出地址/輸入數(shù)據(jù)輸入信號(hào)是從引腳通過(guò)輸入緩沖器進(jìn)入內(nèi)部總線。此時(shí),CPU自動(dòng)使MUX向下,并向P0口寫(xiě)“1”,“讀引腳”控制信號(hào)有效,下面的緩沖器打開(kāi),外部數(shù)據(jù)讀入內(nèi)部總線。VCC地址/數(shù)據(jù)VCC讀鎖存器T1PO.nP0ロT2寫(xiě)鎖存器CLKQMUXT2寫(xiě)鎖存器CLKQMUX內(nèi)部總線讀引腳二、P2的內(nèi)部結(jié)構(gòu)1.P2口作為普通I/OロCPU發(fā)出控制電平“〇” ,使多路開(kāi)關(guān)MUX倒向鎖存器輸出Q端,構(gòu)成一個(gè)準(zhǔn)雙向口。其功能與P1相同P2ロ讀鎖存器內(nèi)部總線 DQ引腳寫(xiě)鎖存器 CLKQ MUX讀引腳2.P2口作為地址總線vccP2.n在系統(tǒng)擴(kuò)展片外程序存儲(chǔ)器擴(kuò)展數(shù)據(jù)存儲(chǔ)器且容量超過(guò)256B用MOVX@DPTR指令時(shí),CPU發(fā)出控制電平“1”,使多路開(kāi)關(guān)MUX倒內(nèi)部地址線。此時(shí),P2輸出高8位地址。VCC地址捽制讀鎖存器RP2.nP2□內(nèi)部總線DQT引腳寫(xiě)鎖存器CLKQMUX2.3.2Plロ、P3口的內(nèi)部結(jié)構(gòu)①P1口的一位的結(jié)構(gòu)它由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電路組成——準(zhǔn)雙向口VCC讀鎖存器P1ロ內(nèi)部總線 DQ TPl.n引腳②P3的內(nèi)部結(jié)構(gòu)②P3的內(nèi)部結(jié)構(gòu)ー、作為通用!/Oロ與P1口類(lèi)似——準(zhǔn)雙向口W1TOC\o"1-5"\h\z第二輸出功能 VCC讀鎖存器 WRP3ロ內(nèi)部總線 DQ TP3.n引腳第二輸入功能②P3的內(nèi)部結(jié)構(gòu)②P3的內(nèi)部結(jié)構(gòu)二、P3第二功能Q1P3此時(shí)引腳部分輸入Q1、W1,部分輸出Q1、W輸出第二輸出功能 VCC讀鎖存器 WP3ロ內(nèi)部總線P3.n引腳寫(xiě)鎖存器 CLKQ讀引腳第二輸入功能P3第二功能各引腳功能定義:P3P3.0:RXD串行口輸入P3.1:TXD串行口輸出P3.2:INTO外部中斷〇輸入P3.3:INT1外部中斷1輸入P3.4:TO定時(shí)器〇外部輸入P3.5:T!定時(shí)器1外部輸入P3.6:WR外部寫(xiě)控制P3.7:RD外部讀控制課堂復(fù)習(xí)課堂復(fù)習(xí)補(bǔ)充題:LMCS-51單片機(jī)的哪些端口,有兩種功能?分別是什么功能?2.在系統(tǒng)擴(kuò)展片外程序存儲(chǔ)器時(shí),P2□是否可以再作為通用I/Oロ?3,某控制程序有如下片段:MOVPl,#00HMOVPl,#OFFHMOVA,Pl執(zhí)行后結(jié)果不正常,請(qǐng)問(wèn)為什么會(huì)出現(xiàn)這種情況,如何修改程序,才能保證輸入的數(shù)據(jù)正常?§2.4MCS-51單片機(jī)片外總線和復(fù)位MCS-51單片機(jī)片外總線配置地址總線:P2□(高8位A15~A8)和POD(低8位A7~AO)可尋址64KBO數(shù)據(jù)總線:P0ロ(D7?DO)捽制總線:ALE、PSEN、WR、RD總線地址鎖存器總線ALEPSEN控制WR總線RD2.4.2MCS-51單片機(jī)復(fù)位RST高電平2個(gè)機(jī)器周期任何單片機(jī)在工作之前都要有個(gè)復(fù)位的過(guò)程,復(fù)位是什么意思呢?對(duì)單片機(jī)來(lái)說(shuō),是程序還沒(méi)有開(kāi)始執(zhí)行,是在做準(zhǔn)備工作ーー初始狀態(tài)。顯然,準(zhǔn)備工作不需要太長(zhǎng)的時(shí)間,復(fù)位需要不少于24個(gè)時(shí)鐘周期的時(shí)間就可以了如何進(jìn)行復(fù)位呢?只要在單片機(jī)的RST引腳上加上高電平,就可以了。為了達(dá)到這個(gè)要求,可以用很多種方法,見(jiàn)圖。復(fù)位后,PC指向0000H,使單片機(jī)從起始地址0000H開(kāi)始執(zhí)行程序。ー、復(fù)位電路(兩種)+5V RST上電復(fù)位電路ー、復(fù)位電路(兩種)+5V RSTR8051上電且開(kāi)關(guān)復(fù)位二、復(fù)位后單片機(jī)的狀態(tài)復(fù)位后各寄存器的狀態(tài)PCOOOOH程序入口PCPO、Pl、P2、P3OFFH可以直接輸入SP 07H(棧底已經(jīng)設(shè)好)PSW 00H(選擇〇組寄存器)其余大部分都是〇4.3MCS-5!單片機(jī)最小系統(tǒng)最小系統(tǒng)ーー最少外部電路條件下,可以獨(dú)立工作的單片機(jī)系統(tǒng)。+5VRST8051§2.5MCS-51單片機(jī)片時(shí)序CPU時(shí)序及有關(guān)概念pl4~15計(jì)算機(jī)工作要有嚴(yán)格的時(shí)序。事實(shí)上,計(jì)算機(jī)更象一個(gè)大鐘,什么時(shí)候分針動(dòng),什么時(shí)候秒針動(dòng),什么時(shí)候時(shí)針動(dòng),都有嚴(yán)格的規(guī)定,一點(diǎn)也不能亂?;緯r(shí)序單位:.振蕩周期:晶體振蕩器的周期。.狀態(tài)周期:振蕩周期2分頻,也稱(chēng)時(shí)鐘周期。.機(jī)器周期:ー個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期。.指令周期:執(zhí)行一條指令的時(shí)冋。INTEL對(duì)每一條指令都給出了它的指令周期數(shù),MCS-51單片機(jī)的所有指令中,有一些完成得比較快,只要ー個(gè)機(jī)器周期就行了,有一些完成得比較慢,得要2個(gè)機(jī)器周期,還有兩條指令要4個(gè)機(jī)器周期オ行第三章MCS-5I指令系統(tǒng)InstructionSet§3.1概述7種尋址方式,111條指令單字節(jié)指令:49條字節(jié)數(shù) 雙字節(jié)指令:45條三字節(jié)指令:17條單周期指令:64條運(yùn)算速度 雙周期指令:45條四周期指令:2條數(shù)據(jù)傳送類(lèi):29條算術(shù)運(yùn)算類(lèi):24條功能 邏輯運(yùn)算類(lèi):24條控制轉(zhuǎn)移類(lèi):17條17條常用符號(hào)Rn:工作寄存器中的寄存器Rn、R1…R7之一,Ri:工作寄存器中的寄存器RO或R1#data:8位立即數(shù)#datal6:16位立即數(shù)direct:片內(nèi)RAM或SFR的地址(8位)Bit:片內(nèi)RAM或SFR的位地址addrll:11位目的地址addrl6:16位目的地址rel:補(bǔ)碼形式的8位地址偏移量。偏移范圍為T(mén)28?127/:位操作指令中,該位求反后參與操作,不影響該位X:片內(nèi)RAM的直接地址或寄存器X:相應(yīng)地址單元中的內(nèi)容:箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi)2 尋址方式! 立即尋址 操作數(shù)存在程ImmediateAddressing 序存儲(chǔ)器操作數(shù)就包含在指令代碼中,在操作碼之后,稱(chēng)為8086/8088MCS-51MOVAL,80HMOVAL,0F5H如:MOVPl,#80HMOVAL,0F5HMOVBX,1245HMOVR7,#0F5HMOVBX,1245HMOVDPTR,#1245H3.2.2 直接尋址DirectAddressing直接使用數(shù)所在單元的地址找到了操作數(shù),所以稱(chēng)這種方法為直接尋址。

操作數(shù)在SFR、內(nèi)部RAM、位地址空間。如:MOVA,OOH8086/8088CPU8086/8088CPUMOVC,60HMOVA,OFOH MOVAL,[2000H]3.2.3 寄存器尋址RegisterAddressing對(duì)選定的工作寄存器RMOVC,60HMOVA,OFOH MOVAL,[2000H]3.2.3 寄存器尋址RegisterAddressing對(duì)選定的工作寄存器R〇?R7、累加器A、通用寄存器B、地址寄存器DPTR中的數(shù)進(jìn)行操作。例:MOVA,R0;將R0工作寄存器中的數(shù)據(jù)送到累加器A中去。MOVAL,BL(8086CPU的寄存器尋址方式)MOVAL,BL(8086CPU的寄存器尋址方式)提ー個(gè)問(wèn)題:我們知道,工作寄存器就是內(nèi)存單元的一部分,如果我們選擇工作寄存器組〇,則RO就是RAM的OOH單元,那么這樣ー來(lái),MOVA,OOH和MOVA,RO不就沒(méi)什么區(qū)別了嗎?的確,這兩條指令執(zhí)行的結(jié)果是完全相同的,都是將00H單元中的內(nèi)容送到A中去,但是執(zhí)行的過(guò)程不同,執(zhí)行第一條指令需要2個(gè)機(jī)器周期,而第二條則只需要1個(gè)機(jī)器周期,第一條指令變成最終的目標(biāo)碼要兩個(gè)字節(jié)(E5H00H),而第二條則只要一個(gè)字節(jié)(E8H)就可以了。3.2.4寄存器間接尋址RegisterIndirectAddressing把地址放在另外一個(gè)寄存器中,根據(jù)這個(gè)寄存器中的數(shù)值決定該到哪個(gè)單元中取數(shù)據(jù)。?R0,R1ーー8位地址,片內(nèi)低128字節(jié)或片外?DPTR——16位,片外64KB操作數(shù)在7MCS-51片內(nèi)RAM中?8086/8088CPUMOVAL,[BX]如:MOVAL,[BX]操作數(shù)在MOVXA,@R0MOVAX,[SI]MOVXA,@R0片外RAM中MOVXA,@DPTR操作數(shù)在片外RAM中3.2.5 變址尋址基址+變址Base-Register-plus-index-Register-IndirectAddressing以DPTR或PC為基址寄存器,累加器A為變址寄存器。把兩者內(nèi)容相加,結(jié)果作為操作數(shù)的地址。常用于查表操作。 操作數(shù)在程?MCS-51 序存儲(chǔ)器中MOVCA,@A+DPTR;A+DPTR—AMOVCA,@A+PCPC+1-PC,A+PC—A?8086/8088CPUMOVAL,[BX+SI]MOVAX,[BP+DI]如:MOVCA,@A+DPTR設(shè)DPTR2000H,AEOH程序存儲(chǔ)區(qū)204700DPH2040H93EODPL2041HALU指令代碼20E0H 4720E0H如:MOVCA,?A+PC設(shè)AEOH程序存儲(chǔ)區(qū) 指令代碼E045當(dāng)前PCALU2040H2041H2120H83472121H 452121H3.2.6 相對(duì)尋址改變PCRelativeAddressing將PC中的當(dāng)前內(nèi)容與指令第二

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論