《單片機(jī)原理及應(yīng)用》電子課件
《《單片機(jī)原理及應(yīng)用》電子課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《單片機(jī)原理及應(yīng)用》電子課件(464頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單片機(jī)原理及應(yīng)用,主講人:袁凌峰,電 話:2066266 E-mail:yuan_,第1章 單片機(jī)概述,本章重點(diǎn): 1、什么是單片機(jī) 2、單片機(jī)的分類及特點(diǎn) 3、 什么是嵌入式系統(tǒng),1.1 單片機(jī)概況,1.1.1 什么是單片機(jī),單片機(jī) 是單片微型計(jì)算機(jī)的簡(jiǎn)稱。將計(jì)算機(jī)的CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器和多種IO接口集成在一片芯片上,形成了芯片級(jí)的計(jì)算機(jī)。 單片機(jī)早期的含義稱為單片微型計(jì)算機(jī)(single chip microcomputer),直譯為單片機(jī)。,準(zhǔn)確反映單片機(jī)本質(zhì)的叫法應(yīng)該是微控制器MicroController Unit (MCU)或Micr
2、oProcesser Unit(MPU),單片機(jī)也稱為嵌入式微處理器(Embedded MicroProcesser) 或嵌入式微控制器(Embedded MicroController),1.1.2 單片機(jī)的發(fā)展簡(jiǎn)史及未來,初級(jí)階段:1974-1978年。代表芯片Intel公司的MCS-48系列,Motorola公司的6801系列和Zilog公司的Z8系列。 高性能階段:1978-1983年。代表芯片Intel公司的MCS51系列。 8位單片機(jī)鞏固提高階段:1983年-現(xiàn)今。這一階段一方面不斷完善8位單片機(jī),另一方面發(fā)展16位、32位機(jī)。,單片機(jī)的發(fā)展趨勢(shì):8位機(jī)是主流,未來是8位機(jī)與32位
3、機(jī)共同發(fā)展的時(shí)代。,單片機(jī)從結(jié)構(gòu)功能上的發(fā)展趨勢(shì): 1、大容量高性能化 2、小容量低價(jià)格化 3、外圍電路內(nèi)裝化 4、RISC結(jié)構(gòu)取代CISC結(jié)構(gòu),1.1.3 單片機(jī)的分類及特點(diǎn),1、分類,(1)按指令集分類 復(fù)雜指令集(CISC)結(jié)構(gòu)普林斯頓結(jié)構(gòu) 精簡(jiǎn)指令集(RISC)結(jié)構(gòu)哈佛結(jié)構(gòu),(2)按半導(dǎo)體工藝分 高密度短溝道MOS工藝HMOS 互補(bǔ)金屬氧化物HMOS工藝CHMOS,(3)按片內(nèi)程序存儲(chǔ)器類型分 無ROM型、QTP型、EPROM型、OTP型和Flash型,(4)按字長(zhǎng)分 1位、4位、8位、16位、32位、64位,2、單片機(jī)的特點(diǎn),(1)優(yōu)異的性價(jià)比,(2)集成度高
4、、體積小、可靠性高,(3)控制功能強(qiáng),(4)低電壓、低功耗,1.1.4 單片機(jī)的應(yīng)用,1、在智能儀器儀表中的應(yīng)用,2、在工業(yè)方面的應(yīng)用,3、在電信中的應(yīng)用,4、在軍用導(dǎo)航方面的應(yīng)用,5、在日常生活中的應(yīng)用,6、在其它方面的應(yīng)用,1.2 常用8位系列單片機(jī)簡(jiǎn)介,1.2.1 Intel公司8位系列單片機(jī),1.2.2 89系列單片機(jī),1、AT89系列(美國(guó)Atmel公司),2、P89系列(Philiips公司),特點(diǎn):126時(shí)鐘模式,支持ISP,1.2.3 W78E51系列(臺(tái)灣華邦公司),1.2.4 M68HC08系列(Motorola公司),Motorola公司單片機(jī)命名方法,指令系統(tǒng)與MCS-
5、51不同,1.2.5 PIC系列(美國(guó)Microchip公司),1.3 單片機(jī)與嵌入式系統(tǒng)簡(jiǎn)介,1.3.1 什么是嵌入式系統(tǒng),嵌入式系統(tǒng)就是將計(jì)算機(jī)系統(tǒng)按特定的要求嵌入到實(shí)際應(yīng)用系統(tǒng)中。,嵌入式系統(tǒng)一般是指非PC機(jī)系統(tǒng),它由硬件和軟件兩大部分組成。硬件包括微處理器MCU、存儲(chǔ)器、I/O端口及外設(shè)、圖形控制器等;軟件包括操作系統(tǒng)(OS或?qū)崟r(shí)多任務(wù)操作系統(tǒng))、應(yīng)用程序系統(tǒng)、或稱監(jiān)控程序系統(tǒng)等。,1.3.2 嵌入式計(jì)算機(jī)系統(tǒng)與通用型計(jì)算機(jī)的特點(diǎn),1. 嵌入式系統(tǒng)是面向特定的應(yīng)用,2. 嵌入式系統(tǒng)是知識(shí)集成系統(tǒng),3. 嵌入式系統(tǒng)的硬、軟件必須具有高效率,4. 嵌入式系統(tǒng)和實(shí)際應(yīng)用有機(jī)地結(jié)合在一起,5.
6、 嵌入式系統(tǒng)的軟件固化于內(nèi)部存儲(chǔ)器中,6. 嵌入式系統(tǒng)本身無自舉開發(fā)能力,1.3.3 嵌入式系統(tǒng)的發(fā)展趨勢(shì),1. 嵌入式系統(tǒng)應(yīng)用軟件的開發(fā)需要強(qiáng)大的開發(fā)工具和操作系統(tǒng)的支持,2. 聯(lián)網(wǎng)成為發(fā)展的必然趨勢(shì),3. 支持小型電子設(shè)備實(shí)現(xiàn)小尺寸、微功耗和低成本,4. 應(yīng)能提供精巧的多媒體人機(jī)界面,1.4 常用單片機(jī)開發(fā)工具,1.4.1 Keil51 集成開發(fā)環(huán)境,目前常用版本Vision3 V3.31。特點(diǎn): 1、集成開發(fā)環(huán)境,源程序編輯、編譯、鏈接、調(diào)試均在集成環(huán)境下 2、支持多種處理器(包括ARM) 3、支持C語(yǔ)言和匯編語(yǔ)言 4、支持源程序調(diào)試 5、支持硬件仿真器 6、支持軟件仿真器,Keil 軟
7、件的啟動(dòng)畫面,利用Keil 集成開發(fā)環(huán)境調(diào)試程序,1.4.2 Proteus仿真軟件,目前版本 V7.2SP1 ,用的較多的版本是V6.7SP3和V7.12 特點(diǎn): 1、可以實(shí)現(xiàn)單片機(jī)、接口芯片的電路仿真,非常適用于教學(xué)和產(chǎn)品開發(fā)的前期階段。 2、與MutsimEWB功能相當(dāng),但比其小巧,V6.7SP3壓縮包僅18.5M。并且可以實(shí)現(xiàn)多種單片機(jī)(MCS-51、PIC系列、ARM系列)的仿真和程序調(diào)試。 3、對(duì)計(jì)算機(jī)的硬件要求非常低(賽揚(yáng)2.0 256M內(nèi)存),利用Proteus軟件在進(jìn)行數(shù)字電壓表的調(diào)試和仿真,1.4.3 有關(guān)網(wǎng)站和參考書,電子開發(fā)網(wǎng): 單片機(jī)開發(fā)
8、工具網(wǎng): 力源信息: 成都力源單片機(jī)技術(shù)有限公司: 周立功單片機(jī): Proteus仿真社區(qū): ,參考書: 單片機(jī)原理及應(yīng)用 萬(wàn)文略主編 重慶大學(xué)出版社 單片機(jī)原理及接口技術(shù) 李朝青編著 北京航空航天大學(xué)出版社 Proteus入門實(shí)用教程 周潤(rùn)景 張麗娜 劉印群 編著 機(jī)械工業(yè)出版社,小 結(jié),單片機(jī),是單片微型計(jì)算機(jī)的簡(jiǎn)稱。將計(jì)算機(jī)的CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器和多種IO接口集成在一片芯片上,形成了芯片級(jí)的計(jì)算機(jī)。,嵌入式系統(tǒng)就是將計(jì)算機(jī)系統(tǒng)按特定的要求嵌入到實(shí)際應(yīng)用系統(tǒng)中。嵌入式系統(tǒng)一般是指非PC機(jī)系統(tǒng),它由硬件和軟件兩大部分組成。,作 業(yè),教材
9、:P17 1-1,1-4,1-6 1-1、什么叫單片機(jī)?它有哪些特點(diǎn)? 1-4、單片機(jī)主要應(yīng)用在哪些方面? 1-6、什么叫嵌入式系統(tǒng)?它與單片機(jī)的關(guān)系如何?,第二章單片機(jī)內(nèi)部結(jié)構(gòu)及原理,本章要點(diǎn) MCS5152系列CPU內(nèi)部結(jié)構(gòu)特點(diǎn) MCS5152系列單片機(jī)存儲(chǔ)器的結(jié)構(gòu) MCS-5152系列單片機(jī)I/O端口結(jié)構(gòu)及驅(qū)動(dòng)能力,使用時(shí)的注意事項(xiàng) MCS5152系列單片機(jī)存儲(chǔ)器空間結(jié)構(gòu)及位尋址空間,2.1 Intel公司的MCS-51/52系列單片機(jī)內(nèi)部結(jié)構(gòu)原理,2.1.1 MCS-51/52系列單片機(jī)CPU的結(jié)構(gòu),MCS-51/52系列單片機(jī)內(nèi)部由一個(gè)8位CPU、128256B數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器
10、、23個(gè)16位定時(shí)器、4個(gè)8位的可編程I/O端口和可編程全雙工UART串行口等組成。,1 控制器,控制器由程序計(jì)數(shù)器 (PC,16位)、指令寄存器(IR,8位) 、指令譯碼器(ID)、定時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對(duì)來自存儲(chǔ)器中的指令進(jìn)行譯碼,通過定時(shí)控制電路,在規(guī)定的時(shí)刻發(fā)出各種操作所需的全部?jī)?nèi)部和外部的控制信號(hào),使各部分協(xié)調(diào)工作,完成指令所規(guī)定的功能。,2 運(yùn)算器,運(yùn)算器由算術(shù)邏輯單元ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW、BCD碼運(yùn)算調(diào)整電路等組成。,(1) 累加器ACC ACC是一個(gè)8位的寄存器,簡(jiǎn)稱為A,它通過暫存器與ALU相連。它是CPU執(zhí)行指令時(shí)
11、使用最頻繁的寄存器,用來存一個(gè)操作數(shù)或中間結(jié)果。,(2) 算術(shù)邏輯單元ALU ALU是由加法器和其它邏輯電路等組成的,它用于對(duì)數(shù)據(jù)進(jìn)行算術(shù)四則運(yùn)算和邏輯運(yùn)算、移位操作、位操作等功能。ALU的兩個(gè)操作數(shù),一個(gè)由A通過暫存器2輸入,另一個(gè)由暫存器1輸入,運(yùn)算結(jié)果的狀態(tài)送PSW。,(3) 程序狀態(tài)字寄存器PSW PSW是一個(gè)8位的專用寄存器,用于存程序運(yùn)行中的各種狀態(tài)信息。它可以進(jìn)行位尋址。PSW各位的定義如下:,PSW位地址 字節(jié)地址D0H,CY(PSW. 7): 進(jìn)位標(biāo)志,在進(jìn)行加或減運(yùn)算時(shí),如果操作結(jié)果最高位有進(jìn)位或借時(shí),CY由硬件置“1”,否則清“0”。在進(jìn)行位操作時(shí),CY又可以
12、被認(rèn)為是位累加器,它的作用相當(dāng)于CPU中的累加器A。 AC(PSW.6): 輔助進(jìn)位標(biāo)志(又稱半進(jìn)位),在進(jìn)行加或減運(yùn)算時(shí),低四位數(shù)向高四位產(chǎn)生的進(jìn)位或借位,將由硬件置“1”,否則清“0”。AC位可用于BCD碼調(diào)整時(shí)的判斷位。 F0(PSW.5): 用戶標(biāo)志位,由用戶置位或復(fù)位。它可作為用戶自行定義的一個(gè)狀態(tài)標(biāo)記。 RS1 RS0(PSW.4 PSW.3): 工作寄存器組指針,用以選擇CPU當(dāng)前工作的寄存器組。,RS1 RS0與工作寄存器組的對(duì)應(yīng)關(guān)系,OV(PSW.2): 溢出標(biāo)志,當(dāng)進(jìn)行算術(shù)運(yùn)算時(shí),如果產(chǎn)生溢出,則由硬件將OV位置1,否則清“0”。 當(dāng)執(zhí)行有符號(hào)數(shù)的加法指令A(yù)DD
13、或減法指令SUBB時(shí),當(dāng)D6位有向D7位的進(jìn)位或借位時(shí) D6CY=1時(shí),而D7位沒有向CY位的進(jìn)位或借位D7CY =0時(shí),則OV=1或D6CY =0,D7CY=1則OV=1所以溢出的邏輯表達(dá)式為: OV= D6CY D7CY F1(PSW.1): 用戶標(biāo)志位,同F(xiàn)0。 P(PSW.0): 奇偶標(biāo)志位,該位始終跟蹤累加器A內(nèi)容中“1”的奇偶性。當(dāng)累加器A內(nèi)容中有奇數(shù)個(gè)“1”時(shí),P置1;否則,P置“0”。改變累加器A中內(nèi)容的指令均會(huì)影響P標(biāo)志位。,2.1.2 MCS-51/52單片機(jī)存儲(chǔ)器結(jié)構(gòu),1 MCS-51/52單片機(jī)存儲(chǔ)器劃分方法,2 程序存儲(chǔ)器 MCS-51/52單片
14、機(jī)的程序存儲(chǔ)器一般用于存放編好的程序、表格和常數(shù)。8051片內(nèi)有4KB的ROM,8751片內(nèi)有4KB的EPROM,8031片內(nèi)無程序存儲(chǔ)器,8052片內(nèi)有8KB的ROM,8752片內(nèi)有8KB的EPROM,8032片內(nèi)無程序存儲(chǔ)器。 當(dāng)EA=1時(shí),PC在00FFFH范圍內(nèi)執(zhí)行片內(nèi)ROM中的程序;PC在1000H0FFFFH范圍內(nèi)執(zhí)行片外ROM中的程序。 當(dāng)EA0時(shí),PC在00FFFFH,64k范圍內(nèi)執(zhí)行片外ROM中的程序。,MCS-51/52單片機(jī)的程序存儲(chǔ)器中有7個(gè)特殊地址單元。 0000H: MCS-5152單片機(jī)復(fù)位后PC=0000H,即程序從0000H開始執(zhí)行指令。 0003H:
15、 外部中斷0入口地址 000BH: 定時(shí)器0溢出中斷入口地址 0013H: 外部中斷1入口地址 001BH: 定時(shí)器1溢出中斷入口地址 0023H: 串行口中斷入口地址 002BH: 定時(shí)器2溢出,T2EX(P1.1)端負(fù)跳變時(shí)的入口地址(僅對(duì)52子系列單片機(jī)所具有)。,,,3 數(shù)據(jù)存儲(chǔ)器 數(shù)據(jù)存儲(chǔ)器用于存放運(yùn)算中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位、待調(diào)試的程序等。數(shù)據(jù)存儲(chǔ)器在物理上和邏輯上都分為兩個(gè)地址空間:一個(gè)是片內(nèi)128/256字節(jié)的RAM,另一個(gè)是片外最大可擴(kuò)充64K字節(jié)的RAM。訪問片內(nèi)RAM使用MOV指令,訪問片外RAM使用MOVX指令。 對(duì)片外RAM只能采用間接尋址方式
16、,用R0、R1和DPTR作為間址寄存器;前兩者是低8位地址指針,尋址范圍為256B,而DPTR是16位地址指針,故尋址范圍可達(dá)64K字節(jié)。 片內(nèi)數(shù)據(jù)存儲(chǔ)器在物理上又可分為二個(gè)不同的區(qū):,(1)00H7FH(0127)單元組成低128字節(jié)的片內(nèi)RAM區(qū),對(duì)其訪問可采用直接尋址或間接尋址的方式 。其中:01FH共32個(gè)單元分為4組,每組8個(gè)單元組成工作寄存器R0R7;20H2FH共16個(gè)字節(jié)、128個(gè)位的地址為007FH;30H7FH共80個(gè)單元,為用戶RAM區(qū),做為堆棧或數(shù)據(jù)緩沖。,(2)80HFFH(128256)單元組成高128字節(jié)的專用寄存器(SFR)區(qū),只能采用直接尋址方式來訪問。
17、 (3)MCS-52子系列中的片內(nèi)RAM增大了128字節(jié),其地址范圍也是從80HFFH ;為了與SFR區(qū)分,對(duì)此段的范圍只能采用間接尋址方式來訪問。,4 專用寄存器SFR MCS-51/52中共有23個(gè)專用寄存器SFR(又稱特殊功能寄存器),其中3個(gè)僅52子系列單片機(jī)所擁有,5個(gè)是雙字節(jié)寄存器,11個(gè)具有位尋址能力(特點(diǎn):字節(jié)地址可以被8整除),這些專用寄存器離散地分布在片內(nèi)RAM的高128字節(jié)地址中。專用寄存器并未占滿80HFFH整個(gè)地址空間,對(duì)空閑地址的操作是無意義的。若訪問到空閑地址,則讀入的是隨機(jī)數(shù)。,單片機(jī)特殊功能寄存器SFR,注意:系統(tǒng)復(fù)位后,(SP)07H,P0P3為0FF
18、H,SBUF內(nèi)容不定,IP、IE、PCON部分位的值不確定外,其余寄存器內(nèi)容均為0.,2.1.3 MCS-51/52系列單片機(jī)引腳及功能,下面分別說明各主要引腳的功能: 1. 主電源引腳Vss和Vcc Vss(20腳):接地 Vcc(40腳):主電源+5V,正常操作和對(duì)EPROM編程及驗(yàn)證時(shí)均接+5V電源。 2. 外接晶振引腳XTAL1和XTAL2 XTAL1(19腳)和XTAL2(18腳):接外部晶振的兩個(gè)引腳。,3. 控制信號(hào)引腳 RSTVPD (9腳):單片機(jī)復(fù)位備用電源引腳。 ALEPROG(30腳):當(dāng)訪問片外存儲(chǔ)器時(shí),ALE(地址鎖存允許)的輸出用于鎖存
19、低字節(jié)地址信號(hào)。當(dāng)CPU不訪問外部RAM時(shí),該引腳輸出晶振頻率1/6頻率的正脈沖信號(hào)。對(duì)于EPROM型單片機(jī),該引腳在編程期間用于輸入編程脈沖。 PSEN(29腳):輸出訪問片外程序存儲(chǔ)器的讀選通信號(hào)。 EAVpp(31腳):當(dāng)該輸入端輸入高電平時(shí),CPU可訪問片內(nèi)程序存儲(chǔ)器4KB或8KB的地址范圍。若PC值超出4KB/8KB地址時(shí),將自動(dòng)轉(zhuǎn)向訪問片外程序存儲(chǔ)器。當(dāng)EA輸入低電平時(shí),則只能訪問片外程序存儲(chǔ)器,不論片內(nèi)是否有程序存儲(chǔ)器。對(duì)于EPROM型單片機(jī)(8751),在對(duì)EPROM 編程期間,此引腳用于施加+21V的編程電壓Vpp。 注意:ALE和PSEN引腳的驅(qū)動(dòng)能力均為8個(gè)L
20、STTL負(fù)載。,,,,,,4. 輸入輸出引腳P0、P1、P2、P3 P0.0P0.7(3932腳):P0口是一個(gè)8位漏極開路型準(zhǔn)雙向IO端口。在訪問片外存儲(chǔ)器時(shí),它分時(shí)做低8位地址總線和8位雙向數(shù)據(jù)總線(AD0 AD7)。在EPROM編程時(shí),由P0口輸入指令字節(jié);而在驗(yàn)證程序時(shí),則輸出指令字節(jié)。驗(yàn)證程序時(shí)和做為雙向I/O端口一樣,要求外接上拉電阻。P0口能以吸收電流的方式驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。 P1.0P1.7(18腳):P1口是一個(gè)帶內(nèi)部弱上拉電阻的8位準(zhǔn)雙向IO口。在EPROM編程和驗(yàn)證程序時(shí),由它輸入低8位地址。P1能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。 在52子系列單片機(jī)中,P1.0
21、還相當(dāng)于專用功能端T2,即定時(shí)器的計(jì)數(shù)輸入/時(shí)鐘輸出端;P1.1還相當(dāng)于專用功能端T2EX,即定時(shí)器T2的重裝載/捕捉/方向等外部控制端。 P2.0P2.7(2128腳):P2口是一個(gè)帶內(nèi)部弱上拉電阻的8位準(zhǔn)雙向IO口。在訪問外部存儲(chǔ)器時(shí),由它輸出高8位地址(A8 A15)。在對(duì)EPROM編程和程序驗(yàn)證時(shí),由它輸入高8位地址。P2可以驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。 P3.0P3.7(1017腳):P3口是一個(gè)帶內(nèi)部弱上拉電阻的準(zhǔn)雙向IO口。在MCS-51/52中,這8個(gè)引腳還用于專門的第二功能,見下表。P3口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。,P3口的第二功能表,小 結(jié),1、51系列單片機(jī)是8位機(jī)。
22、52系列與51系列的差別。 2、51系列單片機(jī)得存儲(chǔ)器在物理上分為4個(gè)存儲(chǔ)空間,在邏輯上分為3個(gè)存儲(chǔ)空間。 3、程序存儲(chǔ)器中7個(gè)特殊的單元。 4、內(nèi)部RAM 07FH根據(jù)用途不同分為3個(gè)空間。 5、SFR的地址范圍在內(nèi)部RAM 80H0FFH空間內(nèi),其中部分寄存器可以位尋址。 6、系統(tǒng)復(fù)位后各個(gè)寄存器的值。 7、單片機(jī)各引腳的功能及其驅(qū)動(dòng)能力。,2-2、 MCS5152系列單片機(jī)內(nèi)部包含哪些主要邏輯功能部件? 2-4、 MCS5152單片機(jī)的存儲(chǔ)器從物理上和邏輯上分別可劃分幾個(gè)空間? 2-6、 MCS51單片機(jī)片內(nèi)256B的數(shù)據(jù)存儲(chǔ)器可分為幾個(gè)區(qū)?分別做什么用? 2-10、程序狀態(tài)寄存器PSW
23、的作用是什么?常用狀態(tài)有哪些位?作用是什么?,作 業(yè),教材P41 2-2,2-4,2-6,2-10,2.1.4 單片機(jī)IO端口結(jié)構(gòu),1 P0口的結(jié)構(gòu)及功能,(1) P0口結(jié)構(gòu) 它由1個(gè)輸出鎖存器、2個(gè)三態(tài)輸入緩沖器、1個(gè)輸出驅(qū)動(dòng)電路和1個(gè)輸出控制電路組成。輸出驅(qū)動(dòng)電路由一對(duì)FET(場(chǎng)效應(yīng)管)組成,其工作狀態(tài)受輸出控制電路的控制;輸出控制電路由一個(gè)與門電路,1個(gè)反相器和1個(gè)路多路開關(guān)MUX組成,(2) P0口的功能 P0口做一般IO口使用時(shí) 多路開關(guān)MUX的位置由CPU發(fā)出的控制信號(hào)決定。當(dāng)P0口做IO端口使用時(shí),CPU內(nèi)部發(fā)出控制電平0信號(hào)封鎖與門,使輸出上拉場(chǎng)效管T1截止,同時(shí)多
24、路開關(guān)把輸出鎖存器Q端與輸出場(chǎng)效應(yīng)管T2的柵極接通。此時(shí)P0即做通用的IO口使用。 當(dāng)P0口做輸出口時(shí):內(nèi)部數(shù)據(jù)總線上的信息由寫脈沖鎖存至輸出鎖存器,輸入D=0時(shí),Q0而Q1,T2導(dǎo)通,P0口引腳輸出“0”;當(dāng)D=1時(shí),Q1而Q0,T2截止,P0口引腳輸出1。輸出驅(qū)動(dòng)級(jí)是漏極開路電路,若要驅(qū)動(dòng)NMOS或其他拉電流負(fù)載時(shí),需外接上拉電阻。P0口中的輸出可以驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。,,,,P0口做輸入口時(shí):端口中有2個(gè)三態(tài)輸入緩沖器用于讀操作。其中輸入緩沖器2的輸入與端口引腳相連,故當(dāng)執(zhí)行一條讀端口輸入指令時(shí),產(chǎn)生讀引腳的選通將該三態(tài)門打開,端口引腳上的數(shù)據(jù)經(jīng)緩沖器2讀入內(nèi)部數(shù)據(jù)總線。 輸入緩
25、沖器1并不能直接讀取端口引腳上的數(shù)據(jù),而是讀取輸出鎖存器Q端的數(shù)據(jù)。Q端與引腳處的數(shù)據(jù)是一致的。結(jié)構(gòu)上這樣的安排是為了適應(yīng)“讀-修改-寫”一類指令的需要。 端口進(jìn)行輸入操作前,應(yīng)先向端口輸出鎖存器寫入“1”,使Q=0則輸出級(jí)的兩個(gè)FET管均截止,引腳處于懸空狀態(tài),變?yōu)楦咦杩馆斎搿_@就是所謂的準(zhǔn)雙向I/O口。單片機(jī)的P0P3都是準(zhǔn)雙向IO口。,, P0口做地址數(shù)據(jù)總線復(fù)用時(shí) 在擴(kuò)展系統(tǒng)中,P0端口做為地址數(shù)據(jù)總線使用,此時(shí)可分為兩種情況: 一種是以P0口引腳輸出地址數(shù)據(jù)信息。 另一種情況由P0口輸入數(shù)據(jù),此時(shí)輸入的數(shù)據(jù)是從引腳通過輸入緩沖器2進(jìn)入內(nèi)部總線。 當(dāng)P0口做地址/數(shù)據(jù)總線復(fù)用
26、時(shí),它就不能再做通用I/O口使用了。,2 P1口的結(jié)構(gòu)及功能 (1) P1口結(jié)構(gòu) P1口也是一個(gè)準(zhǔn)雙向IO口,其結(jié)構(gòu)見圖所示。 P1口在結(jié)構(gòu)上與P0口的區(qū)別是:沒有多路開關(guān)MUX和控制電路部分;輸出驅(qū)動(dòng)電路部分與P0也不相同,只有一個(gè)FET場(chǎng)效應(yīng)管,同時(shí)內(nèi)部帶上拉電阻,此電阻與電源相連。,(2) P1口的功能 P1口可做通用雙向IO口使用,當(dāng)P1口輸出高電平時(shí),能向外部提供拉電流負(fù)載,因此不必再外接上拉電阻。當(dāng)端口用做輸入時(shí),和P0口一樣,為了避免誤讀,必須先向?qū)?yīng)的輸出鎖存器寫入“1”,使FET截止。然后再讀端口引腳。 在52子系列單片機(jī)和89系列單片機(jī)中,P1.0和P1.
27、1是多功能位。除做一般雙向IO口外,P1.0還可以做為定時(shí)器計(jì)數(shù)器2的外部輸入端,這時(shí)此引腳以T2來表示;P1.1還可做為定時(shí)器計(jì)數(shù)器2的外部控制輸入,以T2EX來表示。,3P2口的結(jié)構(gòu)及功能 (1) P2口的結(jié)構(gòu) P2口的位結(jié)構(gòu)中上拉電阻的結(jié)構(gòu)與P1相同,但比P1口多了一個(gè)輸出轉(zhuǎn)換多路控制部分。 (2) P2口的功能 當(dāng)多路開關(guān)MUX倒向鎖存器輸出Q端時(shí),構(gòu)成了一個(gè)準(zhǔn)雙向IO口此時(shí)P2做通用的IO口用。P2引腳的數(shù)據(jù)與內(nèi)部總線相同。當(dāng)系統(tǒng)擴(kuò)展有大于256字節(jié)64K字節(jié)的外部存儲(chǔ)器時(shí),在CPU的控制下,轉(zhuǎn)換開關(guān)MUX倒向內(nèi)部地址線一端,此時(shí)P2口可用于輸出高8位的地址。因?yàn)樵L問
28、外部存儲(chǔ)器的操作是連續(xù)不斷的,P2口要不斷輸出高8位地址,故此時(shí)P2口不可能再做通用IO口使用。,4P3口的結(jié)構(gòu)及功能 (1) P3口的結(jié)構(gòu) 同樣P3口與P1口的輸出驅(qū)動(dòng)部分及內(nèi)部上拉電阻相同,比P1口多了一個(gè)第二功控制部分的邏輯電路(由一個(gè)與非門和一個(gè)輸入緩沖器組成)。 (2) P3口的功能 P3口是一個(gè)多功能的端口。當(dāng)?shù)诙敵龉δ鼙3指唠娖綍r(shí),打開與非門,鎖存器輸出可以通過與非門送FET管輸出到引腳端,這是做通用IO口的輸出使用情況。輸入時(shí),引腳數(shù)據(jù)通過三態(tài)緩沖器2和3在讀引腳選通控制下進(jìn)入內(nèi)部總線。,P3口除了做通用IO使用外,它的各位還具有第二功能。當(dāng)P3口某一位用于第二功能
29、做輸出時(shí),該位的鎖存器應(yīng)置“1”,打開與非門,第二功能端內(nèi)容通過“與非門”和FET送至端口引腳。當(dāng)做第二功能輸入時(shí),端口引腳的第二功能信號(hào)通過緩沖器3送到第二輸入功能端。 總之,無論P(yáng)3口做通用輸入口還是做第二輸入功能口用,相應(yīng)位的輸出鎖存器和第二輸出功能端都應(yīng)置“1”,使FET截止。P3口的引腳信號(hào)輸入通道中有2個(gè)緩沖器,當(dāng)做第二輸入功能時(shí),引腳輸入信號(hào)取自緩沖器3的輸出;做通用輸入口時(shí)輸入信號(hào)取自三態(tài)緩沖器2。,5. 端口負(fù)載能力和接口要求 P0口的輸出級(jí)與P1P3口的輸出級(jí)在結(jié)構(gòu)上是不相同的,因此他們的負(fù)載能力和接口要求也各不相同。 (1) P0口的每一位輸出可驅(qū)動(dòng)8個(gè)LS
30、TTL負(fù)載。P0口在驅(qū)動(dòng)拉電流和MOS負(fù)載時(shí)必須要接上拉電阻。 (2) P1P3口的輸出級(jí)均接有內(nèi)部上拉電阻,他們的每一位輸出可以驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。 (3) P0P3口都是準(zhǔn)雙向IO口,做輸入時(shí),必須先向相應(yīng)端口的鎖存器寫入“1”,使驅(qū)動(dòng)管FET截止。P0口輸入時(shí)呈高阻態(tài),而P1P3口內(nèi)部有上拉負(fù)載電阻,當(dāng)系統(tǒng)復(fù)位時(shí),P0P3端口鎖存器全為“1”。,2.3 單片機(jī)的振蕩器及時(shí)序電路,幾個(gè)概念:,指令周期:?jiǎn)纹瑱C(jī)執(zhí)行一條指令所需的時(shí)間。一般由幾個(gè)機(jī)器周期組成。 機(jī)器周期:CPU訪問存儲(chǔ)器一次所需要的時(shí)間。機(jī)器周期由若干個(gè)時(shí)鐘周期組成。 時(shí)鐘周期(狀態(tài)周期):由2個(gè)節(jié)拍構(gòu)成。 節(jié)
31、拍振蕩周期1fosc 單片機(jī)的一個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期,即12個(gè)振蕩周期。依次用S1P1、S1P2、S2P1、S2P2、S6P1、S6P2表示。,2.3.1 振蕩器和時(shí)鐘電路,1. 單片機(jī)內(nèi)部時(shí)鐘電路 圖為HMOS型單片機(jī)的振蕩電路,當(dāng)外接晶振時(shí),C1和C2值通常選擇30pF;外接陶瓷諧振器時(shí),C1和C2的典型值約為47pF。在設(shè)計(jì)印刷電路板時(shí),晶體或陶瓷諧振器和電容應(yīng)盡可能安裝在單片機(jī)芯片附近,以減少寄生電容,保證振蕩器穩(wěn)定和可靠工作。為了提高溫度穩(wěn)定性,應(yīng)采用NPO電容。C1、C2對(duì)頻率有微調(diào)作用,振蕩頻率范圍是1.2MHz12MHz。,2. HMOS型單片機(jī)外部時(shí)鐘源的接法 對(duì)
32、HMOS型單片機(jī),外部振蕩器的信號(hào)接至XTAL2端,而內(nèi)部反相放大器的輸入端XTAL1端應(yīng)接地,如圖所示。由于XTAL2端的邏輯電平不是TTL的,故建議外接一個(gè)上拉電阻。,3. CHMOS型單片機(jī)的外部時(shí)鐘源的接法 對(duì)CHMOS型的單片機(jī),接線方法與HMOS型的單片機(jī)有所不同:外部振蕩器的信號(hào)接至XTAL1,而XTAL2不用。左圖是CHMOS型單片機(jī)的振蕩電路,右圖是CHMOS型單片機(jī)的外部時(shí)鐘源的接法圖。,4. 對(duì)外部時(shí)鐘信號(hào)的要求 最小的高電平和低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)的要求(皆為20ns),一般為頻率低于12MHz的方波。這種方式適用于多塊芯片同時(shí)工作時(shí),便于同步。,2.3.2
33、 單片機(jī)的復(fù)位電路,1. 復(fù)位結(jié)構(gòu) HMOS型單片機(jī)的復(fù)位結(jié)構(gòu)見左圖。復(fù)位引腳RSTVPD通過一個(gè)施密特觸發(fā)器與單片機(jī)復(fù)位電路相連。 CHMOS型的復(fù)位結(jié)構(gòu)見右圖,此處的復(fù)位引腳只是單純地稱為RST,而不是RSTVPD。 振蕩器正在運(yùn)行的情況下,復(fù)位是靠在RSTVPD或RST引腳加持續(xù)二個(gè)機(jī)器周期的高電平來實(shí)現(xiàn)的。 復(fù)位時(shí), ALE=1和PSEN=1 ,復(fù)位后PC指向0000H。,,2. 復(fù)位電路 單片機(jī)的復(fù)位有上電自動(dòng)復(fù)位和按鈕手動(dòng)復(fù)位兩種。 上電復(fù)位是利用電容充電來實(shí)現(xiàn)的。上電復(fù)位所需的最短時(shí)間是振蕩周期建立時(shí)間加上2個(gè)機(jī)器周期時(shí)間,在這個(gè)時(shí)間內(nèi)RSTVPD端的電平應(yīng)維
34、持高于施密特觸發(fā)器的下閾值。,手動(dòng)復(fù)位分為按鈕脈沖復(fù)位和按鈕電平復(fù)位。 按鈕脈沖復(fù)位電路如下圖所示。由外部提供一個(gè)復(fù)位脈沖寬度大于2個(gè)機(jī)器周期。復(fù)位脈沖過后,由內(nèi)部下拉電阻保證RSTVPD端變?yōu)榈碗娖健?按鈕電平復(fù)位電路如下圖所示。當(dāng)按下復(fù)位按鈕時(shí),電源直接加到RSTVPD端使其為高電平,同時(shí)電容通過復(fù)位按鈕放電。復(fù)位按鈕松開后,隨著電容充電電流的減小,逐漸使RSTVPD端恢復(fù)低電平。,小 結(jié),1、P0P3口均為準(zhǔn)雙向口,讀取引腳狀態(tài)時(shí)必須先向該引腳寫入“1”。 2、P0口做為I/O口使用時(shí),必須接上拉電阻。 3、P0、P2口做為地址數(shù)據(jù)總線使用后,一般不再做為I/O口使用。 4、P0P3口
35、的驅(qū)動(dòng)能力。 5、機(jī)器周期、狀態(tài)周期、節(jié)拍、振蕩周期的概念。 6、機(jī)器周期的構(gòu)成。 7、單片機(jī)復(fù)位的條件。 8、單片機(jī)使用內(nèi)部時(shí)鐘電路時(shí)晶振、電容的接法和數(shù)值選擇。 9、單片機(jī)的復(fù)位結(jié)構(gòu)。 10、常用的復(fù)位電路及其元器件數(shù)值。,作 業(yè),教材:P41 2-8、2-9、2-12、2-16 2-8、開機(jī)復(fù)位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組? 2-9、單片機(jī)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共處同一地址空間為什么不會(huì)發(fā)生總線沖突? 2-12、位地址7CH與字節(jié)地址7CH如何區(qū)別?位地址7CH具體在片內(nèi)RAM中什么位置? 2-16、單片機(jī)有幾種復(fù)位方法?應(yīng)注
36、意什么事項(xiàng)?,第3章 單片機(jī)指令系統(tǒng)及編程舉例,本章要點(diǎn),1、熟練掌握單片機(jī)的尋址方式 2、記憶指令并掌握指令應(yīng)用的方法和技巧 3、了解單片機(jī)匯編語(yǔ)言的編程方法和技巧 4、了解偽指令的使用 5、掌握常用程序的編制方法,3.1 指令系統(tǒng)簡(jiǎn)介,3.1.1 指令系統(tǒng)概述,指令是計(jì)算機(jī)根據(jù)人的意圖所執(zhí)行的操作命令,是與計(jì)算機(jī)內(nèi)部結(jié)構(gòu)、硬件資源密切聯(lián)系的,某種計(jì)算機(jī)所有指令的集合稱為指令系統(tǒng)。 MCS-51/52系列單片機(jī)的指令系統(tǒng)共有111條指令,其中49條是單字節(jié)指令,45條是雙字節(jié)指令,17條是三字節(jié)指令。111條指令中共有33個(gè)功能,用匯編編程時(shí),只需要42個(gè)助記符就能指明這33個(gè)功能操作。
37、其中有64條指令的執(zhí)行時(shí)間為單機(jī)器周期,45條指令的執(zhí)行時(shí)間為雙機(jī)器周期,乘法和除法指令只需4個(gè)機(jī)器周期。 AT89及P89的指令系統(tǒng)與MCS-51/52系列單片機(jī)的指令系統(tǒng)完全相同。,3.1.2 指令格式,單片機(jī)的匯編語(yǔ)言指令格式與其他微機(jī)的指令格式一樣。均由以下幾個(gè)部分組成: 標(biāo)號(hào):操作碼操作數(shù) ;注釋 標(biāo)號(hào)又稱為指令地址符號(hào),一般由16個(gè)字符組成,以字母開頭的字母數(shù)字串,與操作碼之間用冒號(hào)分開。 表示為可選項(xiàng)。 操作碼 是由助記符表示的字符串,他規(guī)定了指令的操作功能。 操作數(shù) 是指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址。 注釋是為該條指令作的說明,以便于閱讀。,指令系統(tǒng)中,
38、操作數(shù)可以為1、2、3個(gè),也可以沒有。不同功能的指令,操作數(shù)作用不同。例如,傳送類指令多數(shù)有兩個(gè)操作數(shù),寫在左面的稱為目的操作數(shù)(表示操作結(jié)果存放的單元地址),寫在右面的稱為源操作數(shù)(指出操作數(shù)的來源)。 操作碼與操作數(shù)之間必須用空格分隔,操作數(shù)與操作數(shù)之間必須用逗號(hào)“,”分隔。帶方括號(hào)項(xiàng)可有可無,稱可選擇項(xiàng)。操作碼是指令的核心,不可缺少。,3.1.3 指令分類及符號(hào)說明,1. 指令分類 單片機(jī)指令系統(tǒng)的111條指令分為下面五類: (1)數(shù)據(jù)傳送類指令29條,分為:片內(nèi)RAM、片外RAM、程序存儲(chǔ)器的傳送指令,交換及堆棧操作指令。 (2)算術(shù)運(yùn)算類24條分為:加、帶進(jìn)位加、減、乘、除
39、、加1、減1指令。 (3)邏輯運(yùn)算類24條分為:邏輯與、或、異或、移位指令。 (4)控制程序轉(zhuǎn)移類17條分為: 無條件轉(zhuǎn)移與調(diào)用、條件轉(zhuǎn)移與調(diào)用、返回與空操作指令。 (5)布爾變量操作類17條分為: 位數(shù)據(jù)傳送、位與、位或、位轉(zhuǎn)移指令。,2. 符號(hào)說明 A: 累加器Acc。 B: 專用寄存器,用于MUL和DIV指令中。 C: 為進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機(jī)中的累加器。 : 為間址寄存器或基址寄存器的前綴。如Ri,A+PC,A+DPTR。 Rn: 表示當(dāng)前選中的寄存器區(qū)的8個(gè)工作寄存器R0R7(n=07)。 Ri: 表示當(dāng)前選中的寄存器區(qū)中的2個(gè)寄存器R0、R1,可做地
40、址指針即間址寄存器(i=0、1)。 direct: 表示8位內(nèi)部數(shù)據(jù)存儲(chǔ)器單元的地址。它可以是內(nèi)部RAM的單元地址0127或?qū)S眉拇嫫鞯牡刂罚鏘 O端口、控制寄存器、狀態(tài)寄存器等(128255)。,#data: 表示包含在指令中的8位立即數(shù)。 #data16: 表示包含在指令中的16位立即數(shù)。 addr16: 表示16位的目的地址。用于 LCALL和LJMP指令中,目的地址范圍是64KB的程序存儲(chǔ)器地址空間。 addr11: 表示11位的目的地址。用于ACALL和 AJMP的指令中,目的地址必須存放在與下一條指令第一個(gè)字節(jié)同一個(gè)2KB程序存儲(chǔ)器地址空間之內(nèi)。 rel: 表
41、示8位帶符號(hào)的偏移量。用于SJMP和所有的條件轉(zhuǎn)移指令中。偏移字節(jié)相對(duì)于下一條指令的第一個(gè)字節(jié)計(jì)算,在-128+127范圍內(nèi)取值。,DPTR:為數(shù)據(jù)指針,可用做16位的地址寄存器。 bit: 表示內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧? X: 表示片內(nèi)RAM的直接地址或寄存器。 (X): X中的內(nèi)容。在直接尋址方式中,表示直接地址X中的內(nèi)容。 ((X)): 在間接尋址方式中,表示由間址寄存器X指出的地址單元中的內(nèi)容。 : 表示將箭頭右邊的內(nèi)容傳送至箭頭的左邊。,3.2 單片機(jī)的尋址方式,指令執(zhí)行中所需的操作數(shù)可以在內(nèi)存、寄存器、I/O端口中,稱它們?yōu)椴僮鲾?shù)的地址,訪問這些操作數(shù)的
42、方法稱為尋址方式。單片機(jī)中采用了7種尋址方式。,3.2.1 立即尋址方式,采用立即尋址的指令一般是雙字節(jié)的。第一個(gè)字節(jié)是指令的操作碼,第二個(gè)字節(jié)是立即數(shù)。因此,操作數(shù)就是放在程序存儲(chǔ)器中的常數(shù)。立即數(shù)前面應(yīng)加前綴“#”號(hào)。 例如: MOV A, #2BH ;A2BH,即將立即數(shù)2BH傳送至A中。,3.2.2 直接尋址方式,采用直接尋址的指令一般是雙字節(jié)或三字節(jié)指令,第一字節(jié)為操作碼,第二,三字節(jié)為操作數(shù)的地址碼。單片機(jī)中,直接地址只能用來表示片內(nèi)低128字節(jié)單元、專用寄存器和片內(nèi)RAM的位地址空間。其中專用寄存器和位地址空間只能用直接尋址方式來訪問。 例如:MOV A,30H ;(30H)
43、A MOV C,00H ; (00H)Cy LJMP 1000H ; 將1000H送入PC,3.2.3 寄存器尋址方式,寄存器尋址方式用于訪問選定的工作寄存器R0R7、A、B、DPTR和進(jìn)位CY中的數(shù)。其中R0R7由操作碼低三位的8種組合表示,A、B、DPTR、C則隱含在操作碼之中。 這種尋址方式中被尋址的寄存器中的內(nèi)容就是操作數(shù)。 例如:MOV A, R0 ;(R0)A MOV B ,A ;(A)B,3.2.4 寄存器間接尋址方式,這種尋址方式中,指令指定寄存器中的內(nèi)容為操作數(shù)的地址。寄存器間接尋址是用于訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器或片外數(shù)據(jù)存儲(chǔ)器。當(dāng)訪問片內(nèi)RAM 或片外的低
44、256字節(jié)空間時(shí),可用R0或R1做為間址寄存器;當(dāng)訪問片外整個(gè)64KB的地址RAM空間時(shí),用16位寄存器DPTR做間址寄存器。這類指令都為單字節(jié)的指令,操作碼的最低位表示是采用R0還是R1做間址器。 在執(zhí)行PUSH和POP指令時(shí),也采用寄存器間接尋址,此時(shí)用堆棧指針SP做間址寄存器。 例如:MOVX A, R0 ; ((R0))A MOVX A , DPTR ; ((DPTR))A POP ACC ; ((SP))A , (SP)-1SP,3.2.5 基址加變址尋址方式,這種尋址方式用于訪問程序存儲(chǔ)器中的某個(gè)字節(jié)。以DPTR或PC作為基址寄存器,累加器A做為變址寄存器,兩者的內(nèi)
45、容之和為操作數(shù)的地址。這種尋址方式常用于查表操作。 例如:MOVC A,A+DPTR ;指令代碼為93H,單字節(jié)指令。設(shè)該指令放在1040H單元,A的原內(nèi)容為A0H,DPTR中的值為 3000H,則操作數(shù)的地址等于:A0H+3000H=30A0H,即將30A0H單元中的內(nèi)容傳送至A中。該指令的執(zhí)行過程如下圖所示。,3.2.6 相對(duì)尋址方式,相對(duì)尋址是將程序計(jì)數(shù)器PC中的當(dāng)前內(nèi)容與指令第二字節(jié)所給出數(shù)相加,其和為跳轉(zhuǎn)指令的轉(zhuǎn)移地址,轉(zhuǎn)移地址也稱為轉(zhuǎn)移目的地址。PC中的當(dāng)前值稱為基地址,指令第二字節(jié)的數(shù)據(jù)稱為偏移量。偏移量為帶符號(hào)的數(shù),其值為-128+127。故指令的跳轉(zhuǎn)范圍相對(duì)PC的當(dāng)前值
46、在-128+127之間跳轉(zhuǎn)。此種尋址方式一般用于相對(duì)跳轉(zhuǎn)指令。 例如:SJMP 05H ;指令代碼是雙字節(jié)的,即80,05H 現(xiàn)設(shè)PC=4000H為本指令的地址,轉(zhuǎn)移目的地址=(4000+02)+05H=4007H PC當(dāng)前值,3.2.7 位尋址方式,位尋址是指對(duì)片內(nèi)RAM的位尋址區(qū)(字節(jié)地址20H2FH)和可以位尋址的專用寄存器進(jìn)行位操作時(shí)的尋址方式。在進(jìn)行位操作時(shí),借助于進(jìn)位C作為位操作累加器。操作數(shù)直接給出該位的地址,然后根據(jù)操作碼的功能對(duì)其進(jìn)行位操作。位尋址的位地址與直接尋址的字節(jié)地址形式完全一樣,主要由對(duì)應(yīng)的操作數(shù)的位數(shù)來區(qū)分,使用時(shí)應(yīng)加以注意。 例如:MOV
47、10H,C ;10H是位尋址的位地址(C是位累加器) MOV A,10H ;10H是直接尋址的字節(jié)地址(A是字節(jié)累加器),單片機(jī)的7種尋址方式中,每種尋址方式可涉及的存儲(chǔ)器空間見下表,3.3 指令系統(tǒng)及應(yīng)用舉例,3.3.1 數(shù)據(jù)傳送類指令(29條),1 數(shù)據(jù)傳送類指令特點(diǎn) 數(shù)據(jù)傳送指令一共29條,這類指令一般是把源操數(shù)傳送到目的操作數(shù),指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)修改為源操作數(shù)。傳送類指令一般不影響標(biāo)志位,只有堆棧操作可以直接修改程序狀態(tài)字PSW。另外,對(duì)目的操作數(shù)為A的指令將影響奇偶標(biāo)志P位。 數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVC、MOVX、XCH、XCHD、S
48、WAP、PUSH、POP共8種。源操作數(shù)可以采用寄存器、寄存器間接、直接、立即、變址加基址5種尋址方式;目的操作數(shù)可以采用前三種尋址方式。,2 用于片內(nèi)數(shù)據(jù)存儲(chǔ)器傳送的指令使用說明及舉例 (1) 以累加器A為目的操作數(shù)的指令(4條) MOV A,Rn ;A Rn MOV A,#data ;A data MOV A,Ri ;A ((Ri)) MOV A,direct ;A (direct) 例: MOV A,R3 ; (R3)A , (A)=(R3) MOV R1,#80H ; #80HR1 , (R1)=80H MOV A, R1 ; ((R1))A
49、 , (80H)A MOV A,#20H ; #20HA , (A)=20H,(2) 以工作寄存器Rn為目的操作數(shù)的指令(3條) MOV Rn,A ;Rn A MOV Rn,direct ;Rn (direct) MOV Rn,#data ;Rn data 例 MOV R1,A ;R1 A , (A)=(R1) MOV R3,30H ;R3 (30H),(R3)=(30H) MOV R7,#80H ;R7 #80H ,(R7)=80H,(3) 以直接地址為目的操作數(shù)的指令(5條) MOV direct,A MOV direct,R
50、n MOV direct,direct MOV direct,Ri MOV direct,#data 例: MOV 30H,A ;30H (A) , (30H)=(A) MOV 20H,R7 ;20H (R7) , (20H)=(R7) MOV 27H,#0FH ;27H #0FH , (27H)=0FH MOV 50H,40H ;50H (40H) , (50H)=(40H),(4) 以間接地址為目的操作數(shù)的指令(3條) MOV Ri,A MOV Ri,direct MOV Ri,#data 這組指令的功能是把源操作數(shù)所指定的內(nèi)容傳送至以
51、R0或R1為地址指針的片內(nèi)RAM單元中。 源操作數(shù)有寄存器尋址、直接尋址和立即尋址3種方式。目的操作數(shù)為寄存器間接尋址。 例: MOV A, #00H ;A #00H , (A)=00H MOV R0,#30H ;R0 #30H,(R0)=30H MOV R0,A ;(R0) (A), (30H)=00H,(5) 16位數(shù)據(jù)傳送指令(1條) MOV DPTR,#data16 這是唯一的16位立即數(shù)傳送指令,其功能是把16位立即數(shù)傳送至16位數(shù)據(jù)指針寄存器DPTR。 例: MOV DPTR,#04FFH ;DPTR #04FFH,(DPTR)=04FFH,3用
52、于片外數(shù)據(jù)存儲(chǔ)器傳送指令及舉例(4條) MOVX A, Ri ;A ((Ri)) MOVX A, DPTR ;A ((DPTR)) MOVX Ri, A ;(Ri) (A) MOVX DPTR,A ;(DPTR) (A) 在單片機(jī)中,CPU對(duì)片外RAM的訪問只能用寄存器間接尋址的方式,且僅有4條指令。以DPTR間接尋址時(shí),尋址的范圍達(dá)64KB;以Ri間接尋址時(shí),僅能尋址256B的范圍。而且片外RAM的數(shù)據(jù)只能和累加器A之間進(jìn)行傳送,不能與其他寄存器和片內(nèi)RAM單元直接進(jìn)行傳送。 片外IO端口的訪問均可使用此4條指令。,例 MOV DPTR,#A000
53、H ;DPTR #A000H,(DPTR)=0A000H MOV A,40H ;A (40H), (A)=(40H) MOVX DPTR,A ;(DPTR)(A),(A000H)=(A) 這幾條指令實(shí)現(xiàn)了 A000H (40H) 例 MOV DPTR, #2000H ;DPTR #2000H,(DPTR)=2000H MOVX A, DPTR ;A (2000H), (A)=(2000H) MOV DPTR, #5000H ;DPTR #5000H, (DPTR)=5000H MOVX DPTR,A ;(DPTR) (A), (5000H
54、)=(A) 這幾條指令實(shí)現(xiàn)了 5000H (2000H),4 用于程序存儲(chǔ)器數(shù)據(jù)傳送的指令及舉例(2條) MOVC A,A+PC ;A ((A)+(PC)) MOVC A,A+DPTR ;A ((A)+(DPTR)) 單片機(jī)指令系統(tǒng)中,這2條一般用于查表,其數(shù)據(jù)表格放在程序存儲(chǔ)器中。 例: 在程序存儲(chǔ)器中,存有LED顯示器09的字形段碼為: 210AH : 0C0H 0字符的段碼 210BH : 0F9H 1字符的段碼 210CH : 0A4H 2字符的段碼 210DH : 0B0H 3字符的段碼 執(zhí)行 MOV A,01H MOV DPTR,
55、#210AH MOVC A,A+DPTR 后,(A)=0F9H,5 交換指令及舉例(5條) XCH A, Rn ;(A) (Rn) XCH A,Ri ;(A)((Ri)) XCH A,direct ;(A)(direct) XCHD A,Ri ;(A)3-0((Ri))3-0 SWAP A ;(A)7-4(A)3-0 這組指令的前三條為全字節(jié)交換指令,其功能是將A的內(nèi)容與源操作數(shù)所指出的數(shù)據(jù)互換。后兩條指令為半字節(jié)交換指令,其中XCHD A,Ri是將A內(nèi)容的低4位與Ri所指片內(nèi)RAM單元中的低4位數(shù)據(jù)互相交換,各自的高4位不變。SWAP A指令是將A中內(nèi)容
56、的高、低4位數(shù)據(jù)互相交換。 例: 設(shè)(A)=12H,(20H)=34H,執(zhí)行以下指令的結(jié)果如何? XCH A,20H ;A (20H) , (A)=34H,(20H)=12H SWAP A ;(A)7-4 (A)3-0 , (A)=43H,6 堆棧操作指令及舉例(2條) PUSH direct ;SP (SP)+1 ,(SP)(direct) POP direct ;direct((SP)),SP(SP)-1 PUSH指令是入棧(或稱壓?;蜻M(jìn)棧)指令,其功能是先將棧指針SP的內(nèi)容加1,然后將直接尋址單元中的數(shù)壓入到SP所指示的單元中。POP是出棧(或稱彈出)指令,
57、其功能是先將棧指針SP所指示的單元內(nèi)容彈出送到直接尋址單元中,然后將SP的內(nèi)容減1,仍指向棧頂。 使用堆棧時(shí),一般需重新設(shè)定SP的初始值。系統(tǒng)復(fù)位或上電時(shí)SP的值為07H,而08H1FH正好也是CPU的工作寄存器區(qū),故為不占用寄存器區(qū),程序中需使用堆棧時(shí),先應(yīng)給SP設(shè)置初值。但應(yīng)注意不超出堆棧的深度。一般SP的值可以設(shè)置在1FH或更大一些的片內(nèi)RAM單元。,利用堆棧操作指令可以實(shí)現(xiàn)數(shù)據(jù)的傳送,例如: PUSH DPH POP 30H 可以實(shí)現(xiàn) 30H (DPH) 注意:在對(duì)累加器進(jìn)行堆棧操作時(shí)必須使用ACC,而不能用A。 PUSH ACC 和 POP ACC 是正確的寫法,
58、而 PUSH A 和 POP A 的寫法是錯(cuò)誤的。,小 結(jié),1、單片機(jī)的七種尋址方式 2、七種尋址方式的尋址空間 3、29條數(shù)據(jù)傳送類指令的使用,作 業(yè),教材P78 31、32、33、34 31、什么叫尋址方式?單片機(jī)有哪幾種尋址方式?這幾種尋址方式是如何尋址的? 32、要訪問專用寄存器和片外數(shù)據(jù)存儲(chǔ)器應(yīng)采用什么尋址方式? 33、用于外部數(shù)據(jù)傳送的指令有哪幾條?有何區(qū)別? 34、指出下列指令的本質(zhì)區(qū)別: MOV A,DATA MOV A,#DATA MOV DATA1,DATA2 MOV 60H,#61H,3.3.2 算術(shù)運(yùn)算類指令,1 算術(shù)運(yùn)算類指令特點(diǎn) 算
59、術(shù)運(yùn)算類指令共有24條,其中包括4種基本的算術(shù)運(yùn)算指令,即加、減、乘、除。這4種指令能對(duì)8位無符號(hào)數(shù)進(jìn)行直接的運(yùn)算,借助溢出標(biāo)志也能對(duì)有符號(hào)的二進(jìn)制整數(shù)進(jìn)行加減運(yùn)算。同時(shí)借助進(jìn)位標(biāo)志,可以實(shí)現(xiàn)多精度的加減和循環(huán)移位,也可以對(duì)壓縮的BCD數(shù)進(jìn)行運(yùn)算(壓縮BCD數(shù),是指在一個(gè)字節(jié)中存放二位BCD數(shù))。 算術(shù)運(yùn)算指令對(duì)程序狀態(tài)字PSW中的Cy、AC、OV三個(gè)標(biāo)志位都有影響,根據(jù)運(yùn)算的結(jié)果可將他們置1或清除。但是加1和減1指令不影響這些標(biāo)志。算術(shù)運(yùn)算類指令用到的助記符有:ADD、ADDC、SUBB、INC、DEC、DA、MUL和DIV八種。,2. 算術(shù)運(yùn)算類指令使用說明及舉例 (1) 不帶進(jìn)位
60、的加法指令(4條) ADD A, Rn ;A (A)+(Rn) ADD A, Ri ;A (A)+((Ri)) ADD A, direct ;A (A)+(direct) ADD A, #data ;A (A)+#data 這4條指令的功能是把A中的數(shù)與源操作數(shù)所指出的內(nèi)容相加,其結(jié)果仍存在A中。相加過程中若位3和位7有進(jìn)位,則將輔助進(jìn)位標(biāo)志AC和進(jìn)位標(biāo)志Cy置位,否則清0。,(2) 帶進(jìn)位加法指令(4條) ADDC A, Rn ;A (A)+(Rn)+(Cy) ADDC A, Ri ;A (A)+((Ri))+(Cy) ADDC A, direct ;
61、A (A)+(direct)+(Cy) ADDC A, #data ;A (A)+#data+(Cy) 這4條指令的功能是把源操作數(shù)所指示的內(nèi)容和A中的內(nèi)容及進(jìn)位標(biāo)志Cy相加,結(jié)果存入A中。運(yùn)算結(jié)果對(duì)PSW中相關(guān)位的影響同上述的4條加法指令。 帶進(jìn)位加法指令一般用于多字節(jié)數(shù)的加法運(yùn)算,低位字節(jié)相加時(shí)和可能產(chǎn)生進(jìn)位,可以通過帶進(jìn)位加法指令將低位字節(jié)的進(jìn)位加到高字節(jié)上去。高位字節(jié)求和時(shí)必須使用帶進(jìn)位的加法指令。,(3) 帶進(jìn)位減法指令(4條) SUBB A, Rn ;A (A)-(Rn)-(Cy) SUBB A, Ri ;A (A)-((Ri))-(Cy) SUBB A,d
62、irect ;A (A)-(direct)-(Cy) SUBB A,#data ;A (A)-data-(Cy) 這4條指令的功能是把A中的內(nèi)容減去源操作數(shù)所指出的內(nèi)容和進(jìn)位標(biāo)志,差存入A中。當(dāng)夠減時(shí),進(jìn)位標(biāo)志復(fù)位,不夠減時(shí),低字節(jié)需向高字節(jié)借位,因此進(jìn)位標(biāo)志將置位。注意:?jiǎn)纹瑱C(jī)沒有不帶借位的減法指令。,(4) 加1指令(5條) INC A ; A (A)+1 INC Rn ; Rn (Rn)+1 INC Ri ;(Ri)((Ri))+1 INC direct ;direct(direct)+1 INC DPTR ;DPTR (DPTR)+1 這一組指令
63、的功能是將操作數(shù)所指定的單元或寄存器中的內(nèi)容加1。其結(jié)果送回原操作數(shù)單元中。 例: 已知DPTR=11FFH; 執(zhí)行INC DPTR指令后,結(jié)果: DPTR=1200H 注:?jiǎn)纹瑱C(jī)中這是僅有的一條16位運(yùn)算指令。,(5) 減1指令(4條) DEC A ; A (A)-1 DEC Rn ; Rn (Rn)-1 DEC Ri ;(Ri)((Ri))-1 DEC direct ;direct (direct)-1 這組指令的功能是將操作數(shù)所指定的單元或寄存器中的內(nèi)容減1,其結(jié)果送回原操作數(shù)單元中。,(6) 乘法指令(1條) MUL AB ;BA (A
64、)(B) 此條指令的功能是實(shí)現(xiàn)兩個(gè)8位無符號(hào)數(shù)的乘法操作,2個(gè)數(shù)分別存在累加器A和寄存器B中。乘積為16位,低8位積在A中,高8位積在B中。若積大于255,溢出標(biāo)志位OV置位,否則復(fù)位,而Cy位總是為0。乘法指令是整個(gè)指令系統(tǒng)中執(zhí)行時(shí)間最長(zhǎng)的2條指令之一,它需4個(gè)機(jī)器周期(48個(gè)振蕩周期)才能完成一次乘法操作。,(7) 除法指令(1條) DIV AB ;A (A)(B) (商),B AB(余); ; Cy 0 ,OV 0 除法指令可以實(shí)現(xiàn)兩個(gè)8位無符號(hào)數(shù)的除法。被除數(shù)放在A中,除數(shù)放在B中。指令執(zhí)行后,商放在A中而余數(shù)在B中。進(jìn)位標(biāo)志Cy和溢出標(biāo)志OV均清0,只有
65、當(dāng)除數(shù)為0時(shí),A和B中的內(nèi)容為不確定值,此時(shí)OV位置位,說明除法溢出。指令的執(zhí)行時(shí)間也是4個(gè)機(jī)器周期,和乘法指令相同是執(zhí)行時(shí)間最長(zhǎng)的2條指令之一。,(8) 十進(jìn)制調(diào)整指令(1條) DA A 這條指令是在進(jìn)行BCD碼加法運(yùn)算時(shí),用來對(duì)BCD碼的加法運(yùn)算結(jié)果自動(dòng)進(jìn)行修正(主要是高、低4位是否+6)。另外,對(duì)BCD碼的減法運(yùn)算不能用此指令來進(jìn)行修正。 注:該指令必須緊跟在加法指令后面,否則調(diào)整結(jié)果將出現(xiàn)錯(cuò)誤。 注意:同是21H,若是BCD碼則表示十進(jìn)制數(shù)21;若是十六進(jìn)制則為21H。,3.3.3 邏輯運(yùn)算類指令,1 邏輯運(yùn)算類指令的特點(diǎn) 邏輯運(yùn)算類指令共24條,包括與、或、異或、清
66、除、求反、左右移位等操作指令。這些指令執(zhí)行時(shí)一般不影響程序狀態(tài)寄存器PSW,僅當(dāng)目的操作數(shù)為A時(shí)對(duì)奇偶標(biāo)志P位有影響,帶進(jìn)位的移位指令影響Cy位。邏輯運(yùn)算指令用到的助記符有ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9種。,2邏輯運(yùn)算類指令的使用說明及舉例 (1) 邏輯與運(yùn)算指令(6條) ANL A, Rn ; A (A)(Rn) ANL A, Ri ; A (A)((Ri)) ANL A,#data ; A (A)#data ANL A,direct ; A (A)(direct) ANL direct, A ; direct (direct)(A) ANL direct,#data ; direct (direct)#data 邏輯與運(yùn)算指令共6條,前四條指令是A的內(nèi)容與操作數(shù)所指出的內(nèi)容進(jìn)行按位邏輯與,結(jié)果送A中。指令執(zhí)行后影響奇偶標(biāo)志位P。后兩條指令是將直接地址單元中的內(nèi)容和源操作數(shù)所指出的內(nèi)容按位進(jìn)行邏輯與,結(jié)果送入直接地址單元中。 利用與指令可以實(shí)現(xiàn)寄存器或內(nèi)存單元中的幾位或全部清“0”。,(2) 邏輯或運(yùn)
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案