單片機2011上課件_第1頁
單片機2011上課件_第2頁
單片機2011上課件_第3頁
單片機2011上課件_第4頁
單片機2011上課件_第5頁
已閱讀5頁,還剩176頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及應(yīng)用2012.2前言

計算機系統(tǒng)逐漸形成了通用計算機系統(tǒng)和嵌入式計算機系統(tǒng)兩大分支。

嵌入式計算機系統(tǒng)具有體積小、功耗和成本低廉的特點,廣泛應(yīng)用于工業(yè)測控領(lǐng)域,完成數(shù)據(jù)處理、模擬仿真、圖像處理、網(wǎng)絡(luò)通信等功能。

嵌入式技術(shù)應(yīng)用:家用電器、汽車、機器人、儀器儀表,在核電儀控系統(tǒng)中也有大量的應(yīng)用。以典型代表80C51單片機為例,從系統(tǒng)設(shè)計和開發(fā)角度,對廣泛應(yīng)用于核儀控領(lǐng)域的嵌入式計算機技術(shù)有一個初步了解前言課程簡介: 通過本課程的學(xué)習(xí),掌握80C51單片機的硬件基本結(jié)構(gòu)、內(nèi)部各種功能部件的工作原理及編程控制、指令系統(tǒng)以及各種常用硬件接口的設(shè)計,學(xué)習(xí)如何根據(jù)工程開發(fā)任務(wù)的要求,實現(xiàn)80C51單片機應(yīng)用系統(tǒng)的設(shè)計。前言教學(xué)形式及考核方式:課堂教學(xué)(理論授課)、閉卷考試總成績=平時成績+考試成績第1章緒論

單片機(singlechipmicrocomputer),指將CPU、RAM、ROM、定時器/計數(shù)器以及輸入/輸出接口電路等計算機主要部件集成在一塊集成電路上的微型計算機。

是典型的MCU(MicrocontrollerUnit)§1.1單片機發(fā)展過程單片機的發(fā)展歷程

20世紀70年代隨著微處理器研制成功,出現(xiàn)了單片機,1976年Intel公司的MCS-48;Motorola公司的6801、6802;Zilog公司的Z-8等,典型產(chǎn)品MCS-51(80c51、80c52……)8位機,MCS-96是16位機SCM---------->MCU---------->SoC(始于20世紀90年代中期)SingleChipMicrocomputerMicroControllerUnitSystemOnChip各公司典型產(chǎn)品(1)美國Intel公司

MCS-51系列及其增強型、擴展型系列;(2)美國ATMEL公司89C51、89C52、89C55、89S52等;(3)荷蘭PHILIPS公司8xC552系列;(4)美國Motorola半導(dǎo)體公司(飛思卡爾)6801系列等.MCS-51和80C51簡介第一代

1976年,MCS-48

將計算機CPU和外圍芯片集成到一個芯片上第二代

MCS-51的8051、8052

技術(shù)特點是向外部接口電路擴展——擴大了存儲器空間RAM和ROM。8031與8051及8751內(nèi)部結(jié)構(gòu)基本相同,區(qū)別在于8031不含片內(nèi)程序存儲器,8751片內(nèi)程序存儲器為EPROM第三代

80C51

技術(shù)特點是CMOS化,集成度高,速度快,功耗低。80C51是以MCS-51的HCMOS基礎(chǔ)上發(fā)展而來,結(jié)構(gòu)與MCS-51基本相同,主要對外部接口進行了擴展。從應(yīng)用和設(shè)計開發(fā)角度兩者區(qū)別不大。

值得注意的是,在單片機硬件發(fā)展的同時,單片機軟件開發(fā)語言也發(fā)生了變化,高級語言已經(jīng)逐漸替代匯編語言MCS-51和80C51簡介(1)基本型

典型產(chǎn)品:8031/8051/8751內(nèi)部RAM增到256字節(jié),8052、8752的內(nèi)部程序存儲器擴展到8KB,16位定時器/計數(shù)器增至3個。(3)低功耗型

典型產(chǎn)品:80C31/87C51/80C51。采用CMOS工藝,適于電池供電或其它要求低功耗的場合。(2)增強型

典型產(chǎn)品:8032/8052/8752§1.2

單片機與嵌入式系統(tǒng)1、嵌入式系統(tǒng)通用計算機與嵌入式計算機嵌入式計算機通用計算機工業(yè)控制器智能儀表PC機大型計算機工作站航空、航天機器人嵌入式系統(tǒng)發(fā)展趨勢目前,隨著ARM處理器在全球的流行,32位/64位RISC嵌入式微處理器已經(jīng)成為中高端嵌入式應(yīng)用和設(shè)計的主流。

民用領(lǐng)域包括數(shù)碼產(chǎn)品、智能家電等以及工業(yè)及軍用領(lǐng)域應(yīng)用多種應(yīng)用對系統(tǒng)的功能和性能上提出了更多和更高的要求:多功能化多核結(jié)構(gòu)處理器更低功耗更寬的工作電壓范圍更先進的工藝和更小的封裝低噪聲布線技術(shù)RISC和CISC的比較RISC(reducedinstructionsetcomputer):精簡指令集計算機,計算機中約20%的指令承擔(dān)了80%的工作,IBM研究中心于1974年提出了RISC的概念CISC(ComplexInstructionSetComputer):復(fù)雜指令集計算機,早期的計算機部件比較昂貴,主頻低,運算速度慢。為了提高運算速度,人們不得不將越來越多的復(fù)雜指令加入到指令系統(tǒng)中,以提高計算機的處理效率。RISCCPU包含有較少的單元電路,因而面積小、功耗低;而CISCCPU包含有豐富的電路單元,因而功能強、面積大、功耗大。RISC機器在一條指令執(zhí)行的適當(dāng)?shù)胤娇梢皂憫?yīng)中斷;而CISC機器是在一條指令執(zhí)行結(jié)束后響應(yīng)中斷。由于RISC指令系統(tǒng)的確定與特定的應(yīng)用領(lǐng)域有關(guān),故RISC機器更適合于專用機;而CISC機器則更適合于通用機。嵌入式系統(tǒng)的特點嵌入式系統(tǒng)一般是面向特定應(yīng)用的,具有低功耗、體積小、高集成度等特點;軟件上量體裁衣;與應(yīng)用有機結(jié)合在一起,生命周期較長;為提高速度和可靠性,軟件固化在存儲芯片或單片機中。嵌入式系統(tǒng)的應(yīng)用領(lǐng)域1、家用電器2、辦公自動化3、商業(yè)營銷4、工業(yè)自動化5、智能儀表與智能傳感器6、汽車電子與航空航天電子核電站中哪些地方用到了嵌入式系統(tǒng)?數(shù)字化分布式儀表控制系統(tǒng)總體縱向分為四層

2)系統(tǒng)級(控制層):執(zhí)行信號采集、數(shù)據(jù)處理和執(zhí)行保護與控制功能。該級包括:反應(yīng)堆保護系統(tǒng)、數(shù)據(jù)采集與處理系統(tǒng)、反應(yīng)堆控制系統(tǒng)等;

3)

機組級(過程信息處理層):處理一個機組的所有數(shù)據(jù),執(zhí)行機組的監(jiān)測、控制和信息顯示功能,是人機接口的界面。主要包括:主控室,數(shù)據(jù)處理和顯示系統(tǒng)以及報警系統(tǒng),應(yīng)急控制室等;1)

現(xiàn)場級(輸入/輸出層):執(zhí)行過程輸入和輸出功能。它是系統(tǒng)級與核電站工藝設(shè)備之間信號傳遞的橋梁;4)

電站級(管理層):處理所有機組公用數(shù)據(jù)。單片機核儀表相比較模擬電路儀表,單片機核儀表有以下特點:電氣結(jié)構(gòu)簡單,儀表的可靠性高;實現(xiàn)一機多路測量;具有故障診斷功能,維修快捷,操作簡化;可實現(xiàn)模擬電路難以實現(xiàn)的數(shù)學(xué)運算,提高測量精度;在相同結(jié)構(gòu)上,采用不同軟件可滿足儀表不同需要,實現(xiàn)處理硬件結(jié)構(gòu)通用化。思考題及習(xí)題1.除了單片機這一名稱之外,單片機還可稱為()和()。2.單片機的發(fā)展大致分為哪幾個階段?3.MCS-51系列單片機的基本型芯片分別為哪幾種?它們的差別是什么?4.MCS-51系列單片機與80C51系列單片機的異同點是什么?

5.在家用電器中使用單片機應(yīng)屬于微計算機的 (A)輔助設(shè)計應(yīng)用 (B)測量、控制應(yīng)用 (C)數(shù)值計算應(yīng)用 (D)數(shù)據(jù)處理應(yīng)用7.說明單片機主要應(yīng)用在哪些領(lǐng)域?8.微處理器、微計算機、微處理機、CPU、單片機它們之間有何區(qū)別?6.8051與8751的區(qū)別是:(A)內(nèi)部數(shù)據(jù)存儲單元數(shù)目的不同;(B)內(nèi)部數(shù)據(jù)存儲器的類型不同;(C)內(nèi)部程序存儲器的類型不同;(D)內(nèi)部的寄存器的數(shù)目不同?!?.1

單片機的基本組成CPU運算部件控制部件BRAMP0口P2口ROM(EPROM)串行口

C/T中斷系統(tǒng)SFRP1口8P3口888XTAL1XTAL2PSENALEEARESETVccVss1.微處理器2.數(shù)據(jù)存儲器3.程序存儲器4.I/O口5.串行口6.定時/計數(shù)器7.中斷系統(tǒng)8.特殊功能寄存器片內(nèi)總線按功能可分成8個部件,通過片內(nèi)單一總線連接起來控制方式:SFR對各功能部件集中控制1、中央處理器(CPU) 和通用處理器基本相同,只是增加了“面向控制”的處理功能,如位處理、查表、乘除法運算、跳轉(zhuǎn)指令、狀態(tài)檢測以及中斷處理等。2、數(shù)據(jù)存儲器(RAM) 單片機中采用隨機存儲器RAM存儲工作變量和數(shù)據(jù),分為片內(nèi)RAM和片外RAM。一般單片機內(nèi)部RAM的容量為65~256字節(jié)。寄存器在邏輯上劃分在片內(nèi)RAM中。3、程序存儲器(ROM) 應(yīng)用程序一般不需改變,因此需永久保存,采用ROM,也分為片內(nèi)和片外。程序芯片類型包括ROM、PROM(掩模ROM)、EPROM以及E2PROM等。ROMPROMEPROMEEPROM7、中斷系統(tǒng)

80C51有5個中斷源(2個外部中斷、2個定時/計數(shù)器中斷、1個串行中斷),支持2級中斷嵌套和中斷優(yōu)先級設(shè)置(通過設(shè)置IP實現(xiàn))。默認優(yōu)先級如下表8、特殊功能寄存器(SFR) 特殊功能寄存器在物理上存在于片內(nèi)RAM中,在邏輯上功能獨立,80C51共定義了21個SFR,用以存放相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)。中斷源入口地址優(yōu)先權(quán)說明外部中斷00003H最高來自P3.2的外部中斷請求定時器0000BHT0溢出使中斷請求標志位TF0有效外部中斷10013H來自P3.3的外部中斷請求定時器1001BHT1溢出使中斷請求標志位TF0有效串行口0023H最低發(fā)送/接受一幀信息后使TI/RI有效80C51的封裝形式有40引腳雙列直插(DIP)和44引腳方型扁平式(QFP)§2.280C51單片機的引腳功能和結(jié)構(gòu)框圖

PC=PC+1§2.380C51單片機的結(jié)構(gòu)和特點1.中央控制器與運算器一起構(gòu)成中央處理器,主要包括程序計數(shù)器PC、指令寄存器IR、指令譯碼器、條件轉(zhuǎn)移邏輯電路及定時控制邏輯電路。(1)程序計數(shù)器PC和數(shù)據(jù)指針DPTRPC(16位)存放著下一條將要從程序存儲器取出的指令的地址。①基本工作方式,程序計數(shù)器自動加1②執(zhí)行條件或無條件跳轉(zhuǎn)指令,程序計數(shù)器被置入新的數(shù)值程序流向發(fā)生變化

如:JMP@A+DPTR③執(zhí)行調(diào)用指令或響應(yīng)中斷時:(PC當(dāng)前值)堆棧(程序入口地址或中斷矢量地址)PC程序遇到RET或RETI時,(棧頂)PCPC的工作方式如下:

MOV DPTR,#7EFFH MOVX@DPTR,A MOV R7,#20 LOOP: DJNZ R7,LOOP MOVXA,@DPTR MOV R0,A INC DPH MOVXA,@DPTR MOV R1,A RETPCDPTR是一個功能16位特殊功能寄存器,主要用途是片外數(shù)據(jù)存儲器尋址的地址寄存器:例如MOVX A,@DPTR讀MOVX@DPTR,A寫DPTR除作為16位寄存器,還可以分成2個8位寄存器使用——DPH和DPL,例如INCDPHPC與DPTR的異同?(2)指令寄存器IR(存放指令操作碼)、指令譯碼器及控制邏輯

條件轉(zhuǎn)移邏輯電路主要用來控制程序的分支轉(zhuǎn)移,有如下幾種:進位標志位、溢出標志位、奇偶標志位、累加器為0狀態(tài)、F0、位尋址空間(1)算數(shù)邏輯單元ALU2.運算器(2)累加器A(3)B寄存器(4)程序狀態(tài)子PSW(5)暫存寄存器(1)算數(shù)邏輯單元ALU(ArithmeticLogicalUnit)寄存器立即數(shù)直接尋址單元內(nèi)部RAM寄存器B進位/借位算數(shù)邏輯運算可完成的操作:帶進位和不帶進位的加、減及8位乘、除法邏輯運算ANL、ORL和XRL增量或減量運算INC、DEC位操作運算:置位、復(fù)位、取反等左移位、右移位半字節(jié)交換BCD碼修正運算計算結(jié)果(2)累加器A(Accumulator

)是ALU單元的輸入之一,又是ALU結(jié)果的存放單元是數(shù)據(jù)傳送的中轉(zhuǎn)站,不僅數(shù)據(jù)傳送,還包括查表操作,例如:MOVA,R2;

MOVCA,@A+DPTR;例如:ADDA,R2;

JZLOOP1;(3)B寄存器——在乘除法運算中作為ALU的輸入之一乘法中,ALU的兩個輸入分別是A(積的低8位),B(積的高8位)除法中,A作為被除數(shù)和商,B作為除數(shù)和余數(shù)。(4)程序狀態(tài)字PSW(ProgramStatusWord)PSW是1個逐位定義的8位的寄存器D7D6D5D4D3D2D1D0CPF1OVRS0RS1F0AC奇偶標志位空溢出標志位用戶標志位半進位標志(DA中用)進位標志寄存器選擇控制位3.時鐘電路及CPU的時序(1)時鐘電路80C51單片機時鐘電路主要包括:振蕩器及定時控制元件、內(nèi)部時鐘發(fā)生器、ALE信號內(nèi)部時鐘方式外部時鐘方式

C1和C2典型值通常選擇為30pF左右。晶體的振蕩頻率在1.2MHz~12MHz之間。某些高速單片機芯片的時鐘頻率已達40MHz。(2)時序定時單位80C51時序定時單位共有4個:節(jié)拍(時鐘周期)、狀態(tài)(周期)、機器周期、指令周期節(jié)拍與狀態(tài):一個狀態(tài)包括兩個節(jié)拍,其前半周期對應(yīng)的節(jié)拍稱為P1,后半周期對應(yīng)的節(jié)拍稱為P2。機器周期:一個機器周期有6個狀態(tài)(S1~S6),由于一個狀態(tài)包含2個節(jié)拍,所以共有12個節(jié)拍(S1P1,S1P2,S2P1,…S6P2)指令周期:執(zhí)行一條指令所需的時間,80C51根據(jù)指令的不同,可包含1、2、4個機器周期(3)80C51指令時序80C51共有111條指令,按指令字長可分為:單字節(jié)、雙字節(jié)和三字節(jié)指令按周期數(shù)可分為:單字節(jié)單周期、單字節(jié)雙周期、雙字節(jié)單周期、雙字節(jié)雙周期、三字節(jié)雙周期以及單字節(jié)4周期指令。MOVX指令(單字節(jié)雙周期)§2.480C51單片機的存儲結(jié)構(gòu)和地址空間80C51單片機的存儲器采用Harvard結(jié)構(gòu)——程序存儲器和數(shù)據(jù)存儲器截然分開,各有自己的尋址方式、尋址空間和控制系統(tǒng)。在物理上有4個存儲空間:程序存儲器:片內(nèi)程序存儲器; 片外程序存儲器。數(shù)據(jù)存儲器:片內(nèi)數(shù)據(jù)存儲器; 片外數(shù)據(jù)存儲器。在邏輯上有3個存儲地址空間:片內(nèi)、片外統(tǒng)一的64KB程序存儲器地址空間;片內(nèi)256(或384)字節(jié)數(shù)據(jù)存儲器地址空間;片外64KB數(shù)據(jù)存儲器地址空間;存儲器空間劃分若單片機的端接“1”,則805l片內(nèi)程序存儲器占用0000H-0FFFH的最低4K字節(jié),故當(dāng)尋址范圍在1000H-FFFFH時,則從片外程序存儲器取指令;若單片機的端接”0”,則MCS-51系列單片機均在片外程序存儲器中取指令。PC值指向程序指令操作碼單元,則程序執(zhí)行該指令操作;PC值指向常數(shù)、表格單元,則實現(xiàn)取數(shù)、查表操作。因此,程序存儲器的操作為程序運行與查表操作兩類。8051片內(nèi)有4k字節(jié)的ROM/EPROM,片外用16位地址線擴充64K字節(jié)的ROM,兩者是統(tǒng)一編址的。80C5180C52工作寄存器:00H~1FH位尋址區(qū):20H~2FH數(shù)據(jù)緩沖器:30H~7FH內(nèi)部數(shù)據(jù)存儲器(00H~FFH)外部數(shù)據(jù)存儲器(0000H~FFFFH)特殊功能寄存器(SFR):80H~FFH(1)程序存儲器80C51的程序存儲器主要用于存放:應(yīng)用程序、表格等固定常數(shù)80C51的程序存儲器分為片內(nèi)和片外,訪問通過引腳電平?jīng)Q定;程序存儲器的某些單元被保留用于特定程序入口地址;EA片內(nèi)程序存儲器類型有:掩膜ROM、OPTROM和MTBROM(EPROM、E2PROM)復(fù)位或非屏蔽中斷0000H外部中斷00003H計時器T0溢出000BH外部中斷10013H計時器T1溢出001BH串行口中斷0023H計時器T2/T2EX下降沿002BH(2)數(shù)據(jù)存儲器

片內(nèi)數(shù)據(jù)存儲器工作寄存器:內(nèi)部RAM的最低32個字節(jié)(00H~FFH),共分4組,每組8個(R0~R7)特殊功能寄存器(SFR):P0~P3口寄存器、定時/計數(shù)器寄存器串口數(shù)據(jù)緩沖器、I/O端口鎖存器以及各種控制寄存器和狀態(tài)寄存器。地址:80H~F0H字節(jié)尋址區(qū)(數(shù)據(jù)緩沖器):位尋址區(qū):內(nèi)部RAM的20H~2FH,這16個單元的位地址范圍是00H~7FHPSW.4(RS1)PSW.3(RS0)當(dāng)前使用的工作寄存器組000組(00H~07H)011組(08H~0FH)102組(10H~17H)113組(18H~1FH)內(nèi)部RAM的最低32個字節(jié)(00H~FFH),共分4組,每組8個(R0~R7),工作寄存器通過設(shè)置PSW的相應(yīng)位進行選擇,如下表所示D7D6D5D4D3D2D1D0CPF1OVRS0RS1F0AC寄存器選擇控制位PSW字節(jié)地址位地址765432102FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H字節(jié)地址與位地址之間的關(guān)系低位地址高位地址89ABCDEF0P0P1P2P3PSWACCB1SP2DPL3DPH4567PCON8TCONSCONIEIPT2CON9TMODSBUFATL0RCAP2LBTL1RCAR2HCTH0TL2DTH1TH2EF特殊功能寄存器(SFR)的空間分布特殊功能寄存器(SFR)的名稱和地址§2.580C51單片機的布爾(位)處理器與字節(jié)處理器對應(yīng),80C51還設(shè)置了一個結(jié)構(gòu)完整、功能極強的布爾(位)處理器,具有以下設(shè)置:位處理器中的累加器:CY

根據(jù)CY的狀態(tài),程序轉(zhuǎn)移:JCrel、JNCrel.位尋址的RAM:

RAM中的0~127位(包含在20H~2FH)位尋址的寄存器:

特殊功能寄存器中的位尋址位,例如PSW位尋址的并行I/O口:

并行I/O口中的可以位尋址的位,P1.0位操作指令系統(tǒng):

置位、清零、取反、位邏輯運算等等§2.680C51單片機的工作方式1.復(fù)位方式(1)復(fù)位操作——單片機的初始化操作,擺脫死鎖狀態(tài)

引腳RST加上大于2個機器周期(即24個時鐘振蕩周期)的高電平就可使單片機復(fù)位。復(fù)位時,PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。

除PC之外,復(fù)位操作還對其它一些寄存器有影響,見表。

SP=07H,P0-P3的引腳均為高電平。

在復(fù)位有效期間,ALE腳和PSEN*腳均為高電平,內(nèi)部RAM的狀態(tài)不受復(fù)位的影響。00HTCON0000HPC

00HTMOD0×××0000BPCON0×000000BIE不定SBUF

××000000BIP00HSCON0FFHP0~P300HTH10000HDPTR00HTL107HSP00HTH000HPSW00HTL000HACC復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)寄存器(2)復(fù)位信號及其產(chǎn)生整個復(fù)位電路分片內(nèi)、外兩部分。外部電路產(chǎn)生復(fù)位信號(RST)送施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在S5P2時刻對觸發(fā)器的輸出采樣,再得到內(nèi)部復(fù)位操作需要的信號。上電自動復(fù)位電平方式脈沖方式2.程序執(zhí)行方式3.低功耗工作方式(通過電源控制寄存器PCON設(shè)置)單片機復(fù)位后PC=0000H,因此程序總是從地址0000H開始的,但一般程序不是真正從0000H開始,因此得在0000H開始的單元中存放一條無條件轉(zhuǎn)移指令,以便跳轉(zhuǎn)到實際程序的入口。(1)待機方式(2)掉電方式待機方式的進入:PCON的IDL置1,CPU時鐘中斷,與CPU有關(guān)寄存器凍結(jié)待機方式的退出:引入外部中斷,PCON的IDL置0,退出待機,進入程序執(zhí)行方式掉電方式的進入:PCON的PD置1,單片機停止一切工作,但RAM中保存原有數(shù)據(jù)掉電方式的退出:Vcc恢復(fù)正常后,硬件復(fù)位信號持續(xù)10ms,退出掉電方式思考與練習(xí)?80C51系列單片機在片內(nèi)集成了哪些主要邏輯功能部件?各個邏輯部件的主要功能是什么?80C51存儲器在結(jié)構(gòu)上有何特點?在物理上和邏輯上各有哪幾種地址空間?訪問片內(nèi)RAM和片外RAM的指令格式有何區(qū)別?程序計數(shù)器(PC)作為不可尋址寄存器有哪些特點?數(shù)據(jù)指針DPTR有哪些特點?與PC有何異同?片內(nèi)RAM低128單元劃分為哪三個部分?各部分主要功能是什么?80C51單片機的時鐘周期、機器周期、指令周期是如何設(shè)置的?當(dāng)主頻為12MHz時,一個機器周期等于多少微秒?執(zhí)行一條最長的指令需要多少微秒?使單片機復(fù)位有幾種方法?復(fù)位后機器的初始狀態(tài)如何,即各寄存器及RAM中的狀態(tài)如何?第3章80C51單片機的指令系統(tǒng)§3.1

概述1.

指令分類(111條指令)按指令所占的字節(jié)來分:

(1)單字節(jié)指令49條;

(2)雙字節(jié)指令45條;

(3)三字節(jié)指令17條。按指令的執(zhí)行時間來分:

(1)1個機器周期(12個時鐘振蕩周期)指令64條

(2)2個機器周期(24個時鐘振蕩周期)指令45條(3)只有乘、除2條指令的執(zhí)行時間為4個機器周期2.

指令格式兩部分組成,即操作碼和操作數(shù)。操作碼用來規(guī)定指令進行什么操作操作數(shù)則是指令操作的對象有單字節(jié)指令、雙字節(jié)指令、三字節(jié)不同長度的指令,格式不同:(1)單字節(jié)指令:指令只有一個字節(jié),操作碼和操作數(shù)同在一個字節(jié)中 例:

ADDA,Rn、NOP、RET(2)雙字節(jié)指令:一個字節(jié)為操作碼,另一個字節(jié)是操作數(shù)。 例:

MOVA,#5EH(3)三字節(jié)指令:操作碼占一個字節(jié),操作數(shù)占二個字節(jié)。其中操作數(shù) 既可能是數(shù)據(jù),也可能是地址 例:

MOV5EH,#5EH§3.2

尋址方式和地址空間尋址方式就是在指令中說明操作數(shù)所在地址的方法。共7種尋址方式1.立即尋址操作數(shù)在指令中直接給出,需在操作數(shù)前面加前綴“#”例如:

MOVA,#3AH;2.直接尋址操作數(shù)直接以單元地址的形式給出:

MOVA,3AH;

尋址范圍:(1)內(nèi)部RAM的128個單元(00H~7FH)(2)特殊功能寄存器。除了以單元地址的形式外,還可用寄存器符號的形式給出。例如:MOVA,80H與

MOVA,P0是等價的。操作數(shù)在寄存器中

MOVA,Rn;(Rn)→A,n=0~7表示把寄存器Rn的內(nèi)容傳送給累加器A,尋址范圍包括:(1)4組通用工作寄存區(qū)共32個工作寄存器。(2)部分特殊功能寄存器,例如A、B

以及數(shù)據(jù)指針寄存器DPTR等。3.寄存器(直接)尋址INCR04.寄存器間接尋址寄存器中存放的是操作數(shù)的地址,在寄存器的名稱前面加前綴標志“@”,訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器的低256個字節(jié)時,只能采用R0或R1作為間址寄存器。例如:

MOVA,@Ri

;i=0或1

其中Ri中的內(nèi)容為40H,把內(nèi)部RAM40H單元內(nèi)容送A。ANLA,@R11尋址范圍:(1)訪問內(nèi)部RAM低128個單元,其通用形式為@Ri(2)對片外數(shù)據(jù)存儲器的64K字節(jié)的間接尋址,例如:MOVXA,@DPTR(3)片外數(shù)據(jù)存儲器的低256字節(jié),例如:MOVXA,@Ri(4)堆棧區(qū)堆棧操作指令PUSH(壓棧)和POP(出棧)使用堆棧 指針(SP)作間址寄存器。出棧序列入棧序列為12345,不可能的出棧序列?54321B)321543214531452E)32451

5.相對尋址在相對尋址的轉(zhuǎn)移指令中,給出了地址偏移量,以“rel”表示,即把PC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址:

目的地址=轉(zhuǎn)移指令所在的地址+轉(zhuǎn)移指令的字節(jié)數(shù)+rel

偏移量rel是一帶符號的8位二進制數(shù)補碼數(shù)。JC80H1002H6.變址尋址(1)即基址寄存器+變址寄存器間址尋址方式尋址方式以DPTR或PC作基址寄存器,以累加器A作為變址寄存器。

例如:指令MOVCA,@A+DPTR

其中A的原有內(nèi)容為05H,DPTR的內(nèi)容為0400H,該指令執(zhí)行的結(jié)果是把程序存儲器0405H單元的內(nèi)容傳送給A。說明:(1)本尋址方式是專門針對程序存儲器的尋址方式,尋址范圍可達到64KB。(2)本尋址方式的指令只有3條:

MOVCA,@A+DPTR

MOVCA,@A+PC

JMP@A+DPTR6.變址尋址(2)MOVCA,@A+DPTR(A)=54H(DPTR)=3F21H(3F75H)=7FH7.位尋址(1)80C51有位處理功能,可以對數(shù)據(jù)位進行操作,例如: MOVC,40H

是把位40H的值送到進位位C。尋址范圍包括:(1)內(nèi)部RAM中的位尋址區(qū)。位有兩種表示方法,例如,40H;另一種是單元地址加上位,例如,(28H).0,指的是28H單元中的最低位。它們是等價的(2)特殊功能寄存器中的可尋址位可尋址位在指令中有如下4種的表示方法:a.直接使用位地址,例如:PSW.5的位地址為0D5H;b.位名稱的表示方法,例如:PSW.5是F0標志位,可使用F0表示該位。c.單元地址加位數(shù)的表示方法,例如:(0D0H).5。d.特殊功能寄存器符號加位數(shù)的表示方法,例如:PSW.5。7.位尋址(2)Rn當(dāng)前寄存器區(qū)的8個工作寄存器R0~R7(n=0~7)。Ri當(dāng)前選中的寄存器區(qū)中可作間接尋址寄存器的2個寄存器R0、R1(i=0,1)。Direct

直接地址,即8位的內(nèi)部數(shù)據(jù)存儲器單元或特殊功能寄存器的地址。#data

包含在指令中的8位立即數(shù)。#data16

包含在指令中的16位立即數(shù)。rel

相對轉(zhuǎn)移指令中的偏移量,為8位的帶符號補碼數(shù)DPTR

數(shù)據(jù)指針,可用作16位的數(shù)據(jù)地址寄存器。bit

內(nèi)部RAM或特殊功能寄存器中的直接尋址位。C(或Cy)進位標志位或位處理機中的累加器。addr1111位目的地址addr1616位目的地址@間接尋址寄存器前綴,如@Ri,@A+DPTR(X)X中的內(nèi)容。((X))

由X尋址的單元中的內(nèi)容。→箭頭右邊的內(nèi)容被箭頭左邊的內(nèi)容所取代。指令中符號的意義:§3.3

指令系統(tǒng)1.數(shù)據(jù)傳送類指令(28條)使用最頻繁的一類指令,通用格式: MOV<目的操作數(shù)>,<源操作數(shù)>屬“復(fù)制”性質(zhì),而不是“搬家”數(shù)據(jù)傳送類指令不影響標志位,Cy、Ac和OV,但不包括奇偶標志位P。目的操作數(shù)源操作數(shù)ARndirect@Ri#dataA√√√√Rn√√√direct√√√√√@Ri√√√(1)以累加器為目的操作數(shù)的指令

MOVA,Rn;(Rn)→A,n=0~7

MOVA,@Ri;((Ri))→A,i=0,1 MOVA,direct;(direct)→A

MOVA,#data;#data→A

例如:

MOVA,R6;(R6)→A,寄存器尋址

MOVA,70H;(70H)→A,直接尋址

MOVA,@R0;((R0))→A,間接尋址

MOVA,#78H;78H→A,立即尋址(2)

以Rn為目的操作數(shù)的指令

MOVRn,A;(A)→Rn,n=0~7

MOVRn,direct;(direct)→Rn,n=0~7

MOVRn,#data;#data→Rn,n=0~7功能:是把源操作數(shù)的內(nèi)容送入當(dāng)前一組工作寄存器區(qū)的R0~R7中的某一個寄存器。MOVA,RnRnARi@RiMOVA,@RiA畫出指令“MOVA,#data;#data→A”執(zhí)行時的存儲器中數(shù)據(jù)傳遞狀況圖(3)以直接地址direct為目的操作數(shù)的指令

MOVdirect,A ;(A)→direct MOV direct,Rn ;(Rn)→direct,n=0~7

MOVdirect1,direct2;(direct2)→direct1

MOVdirect,@Ri ;((Ri))→direct MOV direct,#data ;

#data→direct功能:把源操作數(shù)送入直接地址指出的存儲單元。direct指的是內(nèi)部RAM或SFR的地址。(4)以寄存器間接地址為目的操作數(shù)的指令

MOV@Ri,A;(A)→((Ri)),i=0,1 MOV@Ri,direct;(direct)→((Ri))

MOV@Ri,#data;#data→((Ri))(5)16位數(shù)傳送指令

(目的地址傳送指令)

MOVDPTR,#data16;#data16→DPTR唯一的16位數(shù)據(jù)的傳送指令,立即數(shù)的高8位送入DPH,立即數(shù)的低8位送入DPL。(一般傳送片外數(shù)據(jù)存儲器地址)(6)堆棧操作指令80C51內(nèi)部RAM中可以設(shè)定一個后進先出(LIFO-LastInFirstOut)的區(qū)域稱作堆棧.堆棧指針SP指出堆棧的棧頂位置。進棧指令

PUSHdirect先將棧指針SP加1,然后把direct中的內(nèi)容送到棧指針SP指示的內(nèi)部RAM單元中。例如

當(dāng)(SP)=60H,(A)=30H,(B)=70H時,執(zhí)行:

PUSHACC ;(SP)+1=61H→SP,(A)→61H

PUSHB ;(SP)+1=62H→SP,(B)→62H結(jié)果:

(61H)=30H,(62H)=70H,(SP)=62H出棧指令

POPdirectSP指示的棧頂(內(nèi)部RAM單元)內(nèi)容送入direct字節(jié)單元中,棧指針SP減1.例如:

當(dāng)(SP)=62H,(62H)=70H,(61H)=30H,執(zhí)行:

POPDPH;((SP))→DPH,(SP)-1→SP

POPDPL

;((SP))→DPL,(SP)-1→SP結(jié)果:(DPTR)=7030H,(SP)=60H(7)累加器A與外部數(shù)據(jù)存儲器傳送指令 MOVXA,@DPTR ;((DPTR))→A,讀外部RAM/IO

MOVXA,@Ri ;((Ri))→A,讀外部RAM/IO

MOVX @DPTR,A ;(A)→((DPTR)),寫外部RAM/IO

MOVX @Ri,A ;(A)→((Ri)),寫外部RAM/IO功能:讀外部RAM存儲器或I/O中的一個字節(jié),或把A中一個字節(jié)的數(shù)據(jù)寫到外部RAM存儲器或I/O中。注意:RD*或WR*信號有效。采用DPTR間接尋址,高8位地址(DPH)由P2口輸出,低8位地址(DPL)由P0口輸出。采用Ri(i=0,1)間接尋址,可尋址片外256個單元的數(shù)據(jù)存儲器。Ri內(nèi)容由P0口輸出。8位地址和數(shù)據(jù)均由P0口輸出,可選用其它任何輸出口線來輸出高于8位的地址(一般選用P2口輸出高8位的地址)。MOV后“X”表示單片機訪問的是片外RAM存儲器或I/O。(8)查表指令

共兩條,用于讀程序存儲器中的數(shù)據(jù)表格的指令,均采用基址寄存器加變址寄存器間接尋址方式。

MOVCA,@A+PC以PC作基址寄存器,A的內(nèi)容作為無符號整數(shù)和PC中的內(nèi)容(下一條指令的起始地址)相加后得到一個16位的地址,該地址指出的程序存儲單元的內(nèi)容送到累加器A。注意:PSEN*信號有效。例如:(A)=30H,執(zhí)行地址1000H處的指令

1000H:MOVCA,@A+PC本指令占用一個字節(jié),執(zhí)行結(jié)果將程序存儲器中1031H的內(nèi)容送入A。優(yōu)點:不改變特殊功能寄存器及PC的狀態(tài),根據(jù)A的內(nèi)容就可以取出表格中的常數(shù)。缺點:表格只能存放在該條查表指令后面的256個單元之內(nèi),表格的大小受到限制,且表格只能被一段程序所利用。例如(DPTR)=8100H(A)=40H執(zhí)行指令

MOVCA,@A+DPTR本指令的執(zhí)行結(jié)果只和指針DPTR及累加器A的內(nèi)容有關(guān),與該指令存放的地址及常數(shù)表格存放的地址無關(guān),因此表格的大小和位置可以在64K程序存儲器中任意安排,一個表格可以為各個程序塊公用。兩條指令是在MOV的后面加C,“C”是CODE的第一個字母,即代碼的意思。(9)字節(jié)交換指令

XCHA,Rn

XCHA,direct

XCHA,@Ri 例如:

(A)=80H,(R7)=08H,(40H)=F0H(R0)=30H,(30H)=OFH執(zhí) 行下列指令:

XCHA,R7;(A)與(R7)互換

XCHA,40H;(A)與(40H)互換

XCHA,@R0;(A)與((R0))互換

結(jié)果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H(10)半字節(jié)交換指令

XCHDA,@Ri 累加器的低4位與內(nèi)部RAM低4位交換。 例如:(R0)=60H,(60H)=3EH,(A)=59H 執(zhí)行完XCHDA,@RO

指令,則(A)=5EH,(60H)=39H。2.算術(shù)操作類指令單字節(jié)的加、減、乘、除法指令,都是針對8位二進制數(shù)。執(zhí)行的結(jié)果對Cy、Ac、OV

三種標志位有影響。但增1和減1指令不影響上述標志。(1)加法指令

共有4條加法運算指令: ADDA,Rn ;(A)+(Rn)→A,n=0~7

ADDA,direct ;(A)+(direct)→A

ADDA,@Ri ;(A)+((Ri))→A,i=0,1 ADDA,#data ;(A)+#data→A使用加法指令時,要注意累加器A中的運算結(jié)果對各個標志位的影響:如果位7有進位,則置“1”進位標志Cy,否則清“0”Cy如果位3有進位,置“1”輔助進位標志Ac,否則清“0”Ac(Ac為PSW寄存器中的一位)如果位6有進位,而位7沒有進位,或者位7有進位,而位6沒有,則溢出標志位OV置“1”,否則清“0”O(jiān)V。

溢出標志位OV的狀態(tài),只有在帶符號數(shù)加法運算時才有意義。當(dāng)兩個帶符號數(shù)相加時,OV=1,表示加法運算超出了累加器A所能表示的帶符號數(shù)的有效范圍(2)帶進位加法指令標志位Cy參加運算,因此是三個數(shù)相加。共4條: ADDC A,Rn ;(A)+(Rn)+C→A,n=0~7 ADDC A,direct ;(A)+(direct)+C→A

ADDC A,@Ri ;(A)+(Ri)+C→A,i=0,1

ADDC A,#data ;(A)+#data+C→A

例:(A)=85H,(20H)=FFH,Cy=1,執(zhí)行指令:

ADDCA,20H結(jié)果:(A)=85H,Cy=1,Ac=1,OV=0,P=1

(A中1的位數(shù)為奇數(shù))(3)增1指令5條增1指令:

INCA

INCRn;n=0~7

INCdirect

INC@Ri;i=0,1

INCDPTR不影響PSW中的任何標志。第5條指令I(lǐng)NCDPTR,是16位數(shù)增1指令。指令首先對低8位指針DPL的內(nèi)容執(zhí)行加1的操作,當(dāng)產(chǎn)生溢出時,就對DPH的內(nèi)容進行加1操作,并不影響標志Cy的狀態(tài)。(4)十進制調(diào)整指令用于對BCD碼十進制數(shù)加法運算結(jié)果的內(nèi)容修正。指令格式:

DAA兩個BCD碼按二進制相加之后,必須經(jīng)本指令的調(diào)整才能得到正確的壓縮BCD碼的和數(shù)。二進制數(shù)的加法運算原則并不能適用于十進制數(shù)的加法運算,有時會產(chǎn)生錯誤結(jié)果。例如:(a)3+6=90011+0101=1001運算結(jié)果正確(b)7+8=150111+1000=1111運算結(jié)果不正確(c)9+8=171001+1000=00001C=1結(jié)果不正確二進制數(shù)加法指令不能完全適用于BCD碼十進制數(shù)的加法運算,對結(jié)果作有條件的修正——十進制調(diào)整

出錯原因和調(diào)整方法:

BCD碼只用了其中的10個,6個沒用到的編碼。(1010,1011,1100,1101,1110,1111)為無效碼凡結(jié)果進入或者跳過無效碼編碼區(qū)時,其結(jié)果就是錯誤的。調(diào)整的方法是把結(jié)果加6調(diào)整,即所謂十進制調(diào)整修正。修正方法應(yīng)是:(a)累加器低4位大于9或輔助進位位Ac=1,則進行低4位加6修正。(b)累加器高4位大于9或進位位Cy=1,則進行高4位加6修正。(c)累加器高4位為9,低4位大于9,則高4位和低4位分別加6修正。(5)帶借位的減法指令4條指令: SUBBA,Rn ;(A)-(Rn)-Cy→A,n=0~7

SUBBA,direct ;(A)-(direct)-Cy→A

SUBBA,@Ri ;(A)-((Ri))-Cy→A,i=0,1

SUBBA,#data ;(A)-#data-Cy→A從累加器A中的內(nèi)容減去指定的變量和進位標志Cy的值,結(jié)果存在累加器A中。如果位7需借位則置“1”Cy,否則清“0”Cy;如果位3需借位則置“1”Ac,否則清“0”Ac;如果位6需借位而位7不需要借位,或者位7需借位,位6不需借位,則置“1”溢出標志位OV,否則清例(A)=C9H,(R2)=54H,Cy=1,執(zhí)行指令:

SUBBA,R2結(jié)果:(A)=74H,Cy=0,Ac=0,OV=1(位6向位7借位)(6)減1指令

4條指令: DECA ;(A)-1→A

DECRn ;(Rn)-1→Rn,n=0~7

DECdirect ;(direct)-1→direct

DEC@Ri ;((Ri))-1→(Ri),i=0,1減1指令不影響標志位。

(7)乘法指令

MULAB ;A×B→BA如果積大于255,則置“1”溢出標志位OV

(8)除法指令 DIVAB;A/B→A(商),余數(shù)→B如果B的內(nèi)容為“0”(即除數(shù)為“0”),則存放結(jié)果的A、B中的內(nèi)容不定,并置“1”溢出標志位OV。3.邏輯運算指令(1)簡單邏輯操作指令CLRA功能是累加器A清“0”。不影響Cy、Ac、OV等標志。CPLA功能是將累加器A的內(nèi)容按位邏輯取反,不影響標志。(2)循環(huán)左移指令RLA功能是累加器A的8位向左循環(huán)移位,位7循環(huán)移入位0,不影響標志(3)帶進位循環(huán)左移指令RLCA功能是將累加器A的內(nèi)容和進位標志位Cy一起向左環(huán)移一位,Acc.7移入進位位Cy,Cy移入Acc.0,不影響其它標志(4)循環(huán)右移指令RRA功能是累加器A的內(nèi)容向右環(huán)移一位,Acc.0移入Acc.7,不影響其它標志。(5)帶進位循環(huán)右移指令RRCA這條指令的功能是累加器A的內(nèi)容和進位標志Cy一起向右環(huán)移一位,Acc.0進入Cy,Cy移入Acc.7。(6)累加器半字節(jié)交換指令SWAPA將累加器A的高半字節(jié)(Acc.7~Acc.4)和低半字節(jié)(Acc.3~Acc.0)互換。

例(A)=0C5H,執(zhí)行指令:

SWAPA

結(jié)果:(A)=5CH(7)邏輯與指令

ANLA,Rn

;(A)∧(Rn)→A,n=0~7

ANLA,direct

;(A)∧(direct)→A

ANLA,#data

;(A)∧#data→A

ANLA,@Ri

;(A)∧((Ri))→A,i=0~1

ANLdirect,A

;(direct)∧(A)→direct

ANLdirect,#data

;(direct)∧#data→direct例(A)=07H,(R0)=0FDH,執(zhí)行指令:

ANLA,R0

結(jié)果:(A)=05H(8)邏輯或指令 ORLA,Rn ;(A)∨(Rn)→A,n=0~7

ORLA,direct ;(A)∨(direct)→A

ORLA,#data ;(A)∨data→A ORLA,@Ri ;(A)∨((Ri))→A,i=0,1

ORLdirect,A

;(direct)∨(A)→direct

ORLdirect,#data

;(direct)∨#data→direct

例(P1)=05H,(A)=33H,執(zhí)行指令

ORLP1,A結(jié)果:(P1)=37H

(9)邏輯異或指令 XRLA,Rn ;(A)⊕(Rn)→A XRLA,direct ;(A)⊕(direct)→A

XRLA,@Ri ;(A)⊕((Ri))→A,i=0,1

XRLA,#data ;(A)⊕#data→A XRLdirect,A ;(direct)⊕(A)→direct

XRLdirect,#data ;(direct)⊕

#data→direct

(A)=90H,(R3)=73H執(zhí)行指令:

XRLA,R3結(jié)果:(A)=E3H

4.控制轉(zhuǎn)移類指令(17條)(1)短轉(zhuǎn)移指令A(yù)JMPaddrll2K字節(jié)范圍內(nèi)的無條件跳轉(zhuǎn)指令,64K程序存儲器空間分為32個區(qū),每區(qū)2K字節(jié),轉(zhuǎn)移的目標地址必須與AJMP下一條指令的地址的高5位地址碼A15~A11相同。執(zhí)行指令時,先PC加2,然后把addrll送入PC.10~PC.0,PC.15~PC.11保持不變,程序轉(zhuǎn)移到目標地址。本指令是為能與MCS-48的JMP指令兼容而設(shè)的。(2)相對轉(zhuǎn)移指令SJMPrel實現(xiàn)的程序轉(zhuǎn)移是雙向的。在編寫程序時,直接寫上要轉(zhuǎn)向的目標地址標號就可以。例如:

LOOP: MOVA,R6

SJMPLOOP ┇程序在匯編時,由匯編程序自動計算和填入偏移量。(3)長跳轉(zhuǎn)指令LJMPaddr16指令執(zhí)行時把指令的第二和第三字節(jié)分別裝入PC的高位和低位字節(jié)中,無條件地轉(zhuǎn)向addr16指出的目標地址。目標地址可以在64K程序存儲器地址空間的任何位置(4)間接跳轉(zhuǎn)指令JMP@A+DPTR由A中8位無符號數(shù)與DPTR的16位數(shù)內(nèi)容之和來確定。以DPTR內(nèi)容作為基址,A的內(nèi)容作變址。給A賦予不同的值,即可實現(xiàn)程序的多分支轉(zhuǎn)移。2)條件轉(zhuǎn)移指令規(guī)定的條件滿足,則進行轉(zhuǎn)移,條件不滿足則順序執(zhí)行下一條指令。當(dāng)條件滿足時,把PC裝入下一條指令的第一個字節(jié)地址,再把帶符號的相對偏移量rel加到PC上,計算出目標地址。(5)判零 JZrel ;如果累加器為“0”,則轉(zhuǎn)移 JNZrel ;如果累加器非“0”,則轉(zhuǎn)移

CJNEA,direct,rel CJNEA,#data,rel CJNERn,#data,rel CJNE@Ri,#data,rel比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。如果第一操作數(shù)(無符號整數(shù))小于第二操作數(shù)(無符號整數(shù)),則置進位標志位Cy,否則清“0”Cy。(6)比較不相等轉(zhuǎn)移指令(7、8)減1不為0轉(zhuǎn)移指令這是一組把減1與條件轉(zhuǎn)移兩種功能結(jié)合在一起的指令。共兩條指令: DJNZRn,rel ;n=0~7

DJNZdirect,rel將源操作數(shù)(Rn或direct)減1,結(jié)果回送到Rn寄存器或direct中去。如果結(jié)果不為0則轉(zhuǎn)移。允許程序員把寄存器Rn或內(nèi)部RAM的direct單元用作程序循環(huán)計數(shù)器。主要用于控制程序循環(huán)。以減1后是否為“0”作為轉(zhuǎn)移條件,即可實現(xiàn)按次數(shù)控制循環(huán)。(9、10)調(diào)用子程序指令短調(diào)用指令

ACALLaddrll與AJMP指令相類似,是為了與MCS-48中的CALL指令兼容而設(shè)的。長調(diào)用指令

LCALLaddr16 RET執(zhí)行本指令時: (SP)→PCH,然后(SP)-1→SP

(SP)→PCL,然后(SP)-1→SP功能是從堆棧中退出PC的高8位和低8位字節(jié),把棧指針減2,從PC值開始繼續(xù)執(zhí)行程序。(9)子程序的返回指令

RETI功能與RET指令相似,兩指令不同之處,是本指令清除了中斷響應(yīng)時,被置“1”的MCS-51內(nèi)部中斷優(yōu)先級寄存器的優(yōu)先級狀態(tài)。(10)中斷返回指令(11)空操作指令NOP5.位操作指令(1)數(shù)據(jù)位傳送指令 MOVC,bit MOVbit,C

MOVC,06H

;(20H).6→Cy06H是內(nèi)部RAM20H字節(jié)位6的位地址。

MOVP1.0,C

;Cy→P1.0(2)位變量修改指令

CLRC ;清“0”Cy

CLRbit ;清“0”bit位 CPLC ;Cy求反

CPLbit ;bit位求反 SETBC ;置“1”Cy

SETBbit ;置“1”bit位這組指令將操作數(shù)指出的位清“0”、求反、置“1”,不影響其它標志。例 CLRC ;0→Cy

CLR27H ;0→(24H).7位 CPL08H ;→(21H).0位 SETBP1.7 ;1→P1.7位(3)位變量邏輯與指令A(yù)NLC,bit ;bit∧Cy→CyANLC,/bit ;/bit∧Cy→CyORLC,bit ;bit∨Cy→CyORLC,/bit ;bit∨Cy→Cy(4)位變量邏輯或指令(5)條件轉(zhuǎn)移類指令JCrel ;如果進位位Cy=1,則轉(zhuǎn)移JNCrel ;如果進位位Cy=0,則轉(zhuǎn)移JBbit,rel ;如果直接尋址位=1,則轉(zhuǎn)移JNBbit,rel ;如果直接尋址位=0,則轉(zhuǎn)移JBCbit,rel ;如果直接尋址位=1,則轉(zhuǎn)移,并清0直接尋址位

思考與練習(xí)?簡述80C51的尋址方式和所涉及的尋址空間。設(shè)計一段程序,其功能是將寄存器R7的內(nèi)容移到R6中。將片外數(shù)據(jù)存儲器地址為40H到60H區(qū)域的數(shù)據(jù)塊,全部移到片內(nèi)RAM的同地址區(qū)域,并將原數(shù)據(jù)區(qū)域全部填為FFH。已知累加器A中存放兩位BCD碼數(shù),請編寫程序?qū)崿F(xiàn)十進制數(shù)減一。試計算片內(nèi)RAM區(qū)40H~47H八個單元中數(shù)的算術(shù)平均值,結(jié)果存放咋4AH中。為什么SJMP指令的rel=0FEH時,將實現(xiàn)單指令的無限循環(huán)?第4章80C51單片機的功能單元CPU運算部件控制部件BRAMP0口P2口ROM(EPROM)串行口

C/T中斷系統(tǒng)SFRP1口8P3口888XTAL1XTAL2PSENALEEARESETVccVss1.微處理器2.數(shù)據(jù)存儲器3.程序存儲器4.I/O口5.串行口6.定時/計數(shù)器7.中斷系統(tǒng)8.特殊功能寄存器片內(nèi)總線§4.1

并行I/O口共有4個8位雙向I/O口,共32口線。每位均有自己的鎖存(SFR)、輸出驅(qū)動器和輸入緩沖器。I/O口位數(shù)性質(zhì)功能SFR字節(jié)地址位地址范圍驅(qū)動能力替代功能P0口8真正雙向口I/O口替代功能80H80H~87H8個TTL程序存儲器、片外數(shù)據(jù)存儲器低8位地址及低8位數(shù)據(jù)P1口8準雙向口I/O口替代功能90H90H~97H4個TTLCTC2:T2、T2EX(80C52)P2口8準雙向口I/O口替代功能A0HA0H~A7H4個TTL程序存儲器、片外數(shù)據(jù)存儲器高8位地址P3口8準雙向口I/O口替代功能B0HB0H~B7H4個TTL串行口:RXD、TXD中斷:INT0、INT1片外數(shù)據(jù)存儲器:WR、RDP1口P1口內(nèi)部結(jié)構(gòu)如圖2所示(輸出鎖存、輸入緩沖器BUF1、BUF2以及FET管與上拉電阻組成的輸入/輸出驅(qū)動器)輸出部分內(nèi)部上拉電阻R*約為20K歐姆。其他部分與P0端口使用相類似(讀引腳時先寫入1)。寫數(shù)據(jù)讀端口P1口的工作過程分析BUF2BUF1BA10001278P1口的每一位都可以單獨操作P1口的功能和特點1、輸出鎖存,輸出時沒有條件2、輸入緩沖,輸入時有條件,即需要先將該口設(shè)為輸入狀態(tài),先輸出13、工作過程中無高阻懸浮狀態(tài),即該口只能是輸入態(tài)或輸出態(tài)P1口的操作(1)字節(jié)操作和位操作輸出

MOVP1,A; (P1)(A)

MOVP1,#data; (P1)#data

MOVP1,direct; (P1)(direct)輸入

MOVA,P1; (A)(P1)

MOVdirect,P1; (direct)(P1)置位、清除

SETB P1.i; P1.i1

CLR P1.i; P1.i0輸入、輸出

MOV P1.i,C; P1.iCY

MOV C,P1.i; CYP1.i判跳

JB P1.i,rel; P1.i=1,跳轉(zhuǎn)

JBC P1.i,rel; P1.i=0,跳轉(zhuǎn)且P1.i0邏輯運算

ANL C,P1.i; CY(P1·CY)

ORL C,P1.i; CY(P1.i+CY)(2)讀引腳操作和讀鎖存器操作①

讀引腳:先將端口鎖存器至“1”,使A點處電平,否則會損壞引腳,且信號無法讀出MOV A,P1MOV direct,P1②讀鎖存器:CPU將鎖存器值通過BUF2讀入內(nèi)部進行修改,然后重新寫到鎖存器中,完成“讀——修改——寫”指令A(yù)NL、ORL、XRL、JBC、SETB、CLR等P1口操作時序執(zhí)行改變端口鎖存器內(nèi)容的指令時,新的內(nèi)容在指令執(zhí)行的最后一個周期S6P2傳送到口的鎖存器內(nèi),由于采樣都在P1節(jié)拍,所以下一個周期的S1P1節(jié)拍采樣得到鎖存器內(nèi)容P1口的多功能線P1.0——定時器/計數(shù)器2的外部輸入端T2P1.1——定時器/計數(shù)器2的外部控制端T2EXP3口與P1口區(qū)別1、增加了“與非”門,輸入端為Q和替代功能控制輸出2、輸出鎖存器不是從*Q而是從Q端引出3、有兩個輸入緩沖器,替代功能取自第一個緩沖器輸出端;I/O口的通用輸出信號取自第二個緩沖器輸出端

P3口的工作過程分析1、B點置1時,鎖存器輸出到P3.i,P3工作狀態(tài)為I/O2、當(dāng)輸出鎖存器置1時,替代功能通過引腳P3.i◆

若替代輸出為0時,因C點以置1,B點為0,非門為1,Q0導(dǎo)通,使A為0◆若替代輸出為1時,與非門為1,Q0截止,從而A為高電平P3口的功能和特點1、可作I/O口使用,為準雙向口(功能同P1)2、作為替代功能的輸入/輸出輸入:

P3.0——RXD,串行輸入口

P3.2——*INT0,外部中斷0請求 P3.3——*INT1,外部中斷1請求

P3.4——T0,定時器/計數(shù)器T0的輸入脈沖

P3.5——T1,定時器/計數(shù)器T1的輸入脈沖輸出:

P3.1——TXD,出行輸出口

P3.6——*WR,外部數(shù)據(jù)存儲器寫選通

P3.7——*RD,外部數(shù)據(jù)存儲器讀選通3、P3口能驅(qū)動4個TTL負載P2口1、P2可以作為通用的I/O,也可以作為高8位地址輸出。2、當(dāng)控制信號為1時(接通輸出鎖存)◆若輸出D=0,則Q=0,F(xiàn)ET導(dǎo)通,A=0◆若輸出D=1,則Q=1,F(xiàn)ET截止,A=13、當(dāng)控制信號為0時(接通地址輸出),A點的電平將隨地址輸出的0、1而變化

P2口的工作過程分析與P1口區(qū)別1、增加了多路開關(guān),開關(guān)的輸入端為Q和地址寄存器高位輸出端,切換由內(nèi)部控制信號控制2、輸出鎖存器不是從*Q而是從Q端引出P2口的工作過程分析10AP2口的功能和特點1、作I/O口使用時,P2口為一個準雙向口,功能同P12、作為地址輸出時,P2口可以輸出程序存儲器或片外數(shù)據(jù)存儲器的高8位地址,與P0口的低地址構(gòu)成16位地址線。3、P2能驅(qū)動4個TTL負載P2口使用中注意的問題1、P2口有輸出鎖存功能,在取指周期或外部數(shù)據(jù)讀寫選通時,不需加鎖存器2、訪問外部程序存儲器時,不能用作I/O口線3、有外部數(shù)據(jù)存儲器無外部程序存儲器時:當(dāng)訪問片外數(shù)據(jù)地址小于等于256時,即使用Ri作為間址寄存器時,高8位地址沒有用,所以P2仍可用作I/O口線當(dāng)訪問片外數(shù)據(jù)地址大于256時,即使用DPTR作為間址寄存器時,P2口輸出高8位地址,但在讀寫選通結(jié)束后P2原來鎖存內(nèi)容又出現(xiàn)在引腳上P0口BUF2BUF1QQDCVccP0R1

P0R2D0P0W圖1、P0口內(nèi)部結(jié)構(gòu)讀鎖存器讀引腳鎖存器內(nèi)部總線寫鎖存器

多路開關(guān)10與P1口區(qū)別1、增加了多路開關(guān),開關(guān)的輸入端為*Q和地址/數(shù)據(jù)輸出端,切換由內(nèi)部控制信號控制2、P0口的輸出上拉電路與P1完全不同:上拉電路的導(dǎo)通和截止受內(nèi)部控制信號和地址/數(shù)據(jù)

溫馨提示

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

評論

0/150

提交評論