單片機(jī)原理及應(yīng)用教材_第1頁(yè)
單片機(jī)原理及應(yīng)用教材_第2頁(yè)
單片機(jī)原理及應(yīng)用教材_第3頁(yè)
單片機(jī)原理及應(yīng)用教材_第4頁(yè)
單片機(jī)原理及應(yīng)用教材_第5頁(yè)
已閱讀5頁(yè),還剩111頁(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)介

1、單片機(jī)原理及應(yīng)用常州輕工職業(yè)技術(shù)學(xué)院前言當(dāng)今,單片微型計(jì)算機(jī)技術(shù)迅速發(fā)展,由單片機(jī)技術(shù)開(kāi)發(fā)的智能化測(cè)控設(shè)備和產(chǎn)品廣泛應(yīng)用到各個(gè)領(lǐng)域,單片機(jī)技術(shù)產(chǎn)品和設(shè)備促進(jìn)了生產(chǎn)技術(shù)水平的提高。企業(yè)迫切需要大量熟練掌握單片機(jī)技術(shù),并能開(kāi)發(fā)、應(yīng)用和維護(hù)管理這些智能化產(chǎn)品的高級(jí)工程技術(shù)人材。單片機(jī)以體積小、功能強(qiáng)、可靠性好、性能價(jià)格比高等特點(diǎn),已成為實(shí)現(xiàn)工業(yè)生產(chǎn)技術(shù)進(jìn)步和開(kāi)發(fā)機(jī)電一體化和智能化測(cè)控產(chǎn)品的重要手段。本教材內(nèi)容分為十章。以MCS-51系列單片機(jī)為介紹對(duì)象,分別介紹MCS-51系列單片機(jī)結(jié)構(gòu)原理、MCS-51單片機(jī)指令系統(tǒng)、匯編語(yǔ)言程序設(shè)計(jì)、并行I/O口的使用、并行I/O口的擴(kuò)展方法及使用、中斷系統(tǒng)和定

2、時(shí)/計(jì)數(shù)器、A/D轉(zhuǎn)換接口和D/A轉(zhuǎn)換接口技術(shù)、鍵盤與顯示器接口技術(shù)等內(nèi)容。本教材由楊文新、龔益民、韓迎輝老師編寫,謝麗華、劉軍良老師參與本書(shū)圖表的繪制。編者2004年7月目 錄第一章 認(rèn)識(shí)單片機(jī) 3第二章 MCS-51單片機(jī)指令系統(tǒng)14第三章 匯編語(yǔ)言程序設(shè)計(jì) 27第四章 并行I/O口 33第五章 并行I/O口的擴(kuò)展 40第六章 中斷系統(tǒng) 49第七章 定時(shí)/計(jì)數(shù)器 55第八章 A/D轉(zhuǎn)換接口 60第九章 D/A轉(zhuǎn)換接口 63第十章 鍵盤與顯示器接口 67附錄一 WAVE軟件的操作使用附錄二 ASCII碼表附錄三 MCS-51單片機(jī)指令系統(tǒng)表附錄四 單片機(jī)練習(xí)題附錄五 單片機(jī)實(shí)驗(yàn)指導(dǎo)書(shū)第一章

3、認(rèn)識(shí)單片機(jī)一、什么是單片機(jī)單片機(jī)是將CPU、存儲(chǔ)器、輸入/輸出接口、定時(shí)/計(jì)數(shù)器等集成在一塊芯片上,是目前銷量最大、應(yīng)用面最廣、價(jià)格最便宜的微型計(jì)算機(jī)。如圖1-1所示:I/O口CPU程序存儲(chǔ)器定時(shí)/計(jì)數(shù)器外設(shè)取指令圖1-1 單片機(jī)結(jié)構(gòu)框圖例1-1 單片機(jī)彩燈控制系統(tǒng)(單片機(jī)控制8個(gè)發(fā)光二極管每隔0.1秒輪流點(diǎn)亮。)使用單片機(jī)實(shí)驗(yàn)板進(jìn)行演示。 二、典型單片機(jī)產(chǎn)品1MCS-51系列美國(guó)Intel公司生產(chǎn)的8位字長(zhǎng)單片機(jī)?;拘彤a(chǎn)品有8051、8031、8751等。2AT89C51系列美國(guó)ATMEL公司生產(chǎn)的8位字長(zhǎng)單片機(jī)。與MCS-51系列單片機(jī)兼容,內(nèi)含4KB的flash存儲(chǔ)器。三、MCS-51

4、單片機(jī)的內(nèi)部的硬件結(jié)構(gòu)及引腳 (一) MCS-51單片機(jī)內(nèi)部的總體硬件結(jié)構(gòu)8051單片機(jī)的內(nèi)部基本結(jié)構(gòu),如圖1-2所示。(二) MCS-51單片機(jī)的引腳8051單片機(jī)是HMOS工藝制造,外形為40條引腳,如圖1-3所示。因?yàn)槭苄酒_數(shù)量的限制,有很多引腳具有雙功能。1、主電源引腳 VCC:芯片工作電源端,接5V。Vss:電源接地端。2、時(shí)鐘振蕩電路引腳XTAL1:內(nèi)部晶體振蕩電路的反相器輸入端。接法如圖1-5。XTAL2:內(nèi)部晶體振蕩電路的反相器輸出端。接法如圖1-5。3、控制信號(hào)引腳RST RST為復(fù)位信號(hào)輸入端。外部接復(fù)位電路。接法如圖1-4。ALEALE為地址鎖存允許信號(hào)。 在不訪問(wèn)外

5、部存儲(chǔ)器時(shí),ALE以時(shí)鐘振蕩頻率的16的固定頻率輸出,用示波器觀察ALE引腳上的脈沖信號(hào)是判斷單片機(jī)芯片是否正常工作的一種簡(jiǎn)便方法。 外部程序存儲(chǔ)器ROM的讀選通信號(hào)。到外部ROM取指令時(shí),自動(dòng)向外發(fā)送負(fù)脈沖信號(hào)。 為訪問(wèn)程序存儲(chǔ)器的控制信號(hào)。 振蕩器和時(shí)鐘電路程序存儲(chǔ)器4KB ROM數(shù)據(jù)存儲(chǔ)器256B RAM/SFR8051CPU兩個(gè)16位定時(shí)器/計(jì)數(shù)器中斷系統(tǒng)64K字節(jié)總線擴(kuò)展控制并行I/O端口全雙工串行口外部時(shí)鐘源 外部計(jì)數(shù)脈沖 外中斷 控制 外部設(shè)備 串行通訊圖1-2 8051單片機(jī)的內(nèi)部基本結(jié)構(gòu)4、并行I端口引腳P0口(P0.0 P0.7);P1口(P1.0 P1.7);P2口(P2

6、.0 P2.7);P3口(P3.0 P3.7)。(a)引腳圖 (b) 邏輯符號(hào)圖1-3 MCS-51引腳圖(三)復(fù)位電路與時(shí)鐘電路1復(fù)位電路(1)復(fù)位電路 單片機(jī)的RST引腳是復(fù)位信號(hào)輸入端,RST引腳上保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)以上的高電平時(shí),可使單片機(jī)內(nèi)部可靠復(fù)位。 單片機(jī)常用的外部復(fù)位電路如圖1-4。(a)上電復(fù)位電路 (b)上電復(fù)位兼手動(dòng)復(fù)位電路圖1-4 MCS-51的復(fù)位電路(2)復(fù)位狀態(tài)復(fù)位后,單片機(jī)內(nèi)部的各寄存器的內(nèi)容將被初始化,包括程序計(jì)數(shù)器PC和特殊功能寄存器,其中(PC)=0000H,特殊功能寄存器的狀態(tài)見(jiàn)表1-1。復(fù)位不影響片內(nèi)RAM和片外RAM中的內(nèi)容。表1-1

7、 復(fù)位后特殊功能寄存器的初始狀態(tài)SFR名稱初始狀態(tài)SFR名稱初始狀態(tài)ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0 P3FFHSBUF不確定IP00000BSCON00HIE000000BPCON0B2時(shí)鐘電路時(shí)鐘電路用于產(chǎn)生時(shí)鐘信號(hào),時(shí)鐘信號(hào)是單片機(jī)內(nèi)部各種微操作的時(shí)間基準(zhǔn),在此基礎(chǔ)上,控制器按照指令的功能產(chǎn)生一系列在時(shí)間上有一定次序的信號(hào),控制相關(guān)的邏輯電路工作,實(shí)現(xiàn)指令的功能。電容容量范圍為30PF±10PF,石英晶體頻率的范圍為1212MHZ,常用6MHZ或12MHz。圖1-5

8、 8051的外接石英晶體的時(shí)鐘電路3時(shí)序單位OSC時(shí)鐘ALE圖1-6 時(shí)序圖(1)時(shí)鐘周期(是時(shí)鐘信號(hào)頻率fosc的倒數(shù))時(shí)鐘周期 = 1 / fosc(2)機(jī)器周期:機(jī)器周期 = 12 × 時(shí)鐘周期(3)指令周期一條指令從被讀取到被執(zhí)行的整個(gè)過(guò)程所需的時(shí)間稱為指令周期。思考題: fosc分別為6MHZ和12MHZ時(shí),機(jī)器周期分別為多少?四、MCS-51單片機(jī)的內(nèi)部硬件的主要功能(一)中央處理單元CPU它由運(yùn)算器和控制器兩部分組成。1運(yùn)算器運(yùn)算器是進(jìn)行各種算術(shù)運(yùn)算和邏輯運(yùn)算的部件。與運(yùn)算器有關(guān)的寄存器包括ACC、B、PSW。(1)累加器ACC(8位寄存器)(2) B寄存器(8位)(3

9、)程序狀態(tài)字寄存器PSW (8位) PSW主要用于存放程序狀態(tài)信息以及運(yùn)算結(jié)果的標(biāo)志,所以又稱標(biāo)志寄存器。其格式如下(D1位沒(méi)有定義):D7 D6 D5 D4 D3 D2 D1 D0CYACF0RS1RS0OVPCY 進(jìn)位標(biāo)志位。AC 輔助進(jìn)位標(biāo)志位。F0 用戶標(biāo)志位 RS1、RS0 工作寄存器區(qū)選擇控制位 OV 溢出標(biāo)志位。P 奇偶標(biāo)志位。2控制器(1)控制器的組成控制器是由程序計(jì)數(shù)器PC、指令寄存器、譯碼器、定時(shí)與控制電路等組成的。(2)程序計(jì)數(shù)器PC PC是一個(gè)16位的寄存器,PC中的內(nèi)容是下一條將要執(zhí)行的指令代碼的起始存放地址。當(dāng)單片機(jī)復(fù)位之后,(PC)=0000H,引導(dǎo)CPU到000

10、0H地址讀取指令代碼,CPU每讀取一個(gè)字節(jié)的指令,PC的內(nèi)容會(huì)自動(dòng)加1,指向下一個(gè)地址,使CPU按順序去讀取后面的指令,從而引導(dǎo)CPU按順序執(zhí)行程序。(二)存儲(chǔ)器18051的存儲(chǔ)器分為兩大存儲(chǔ)空間:程序存儲(chǔ)器(ROM)空間(1)片內(nèi)4KB 的程序存儲(chǔ)器,其地址為0000H0FFFH(2)片外64KB的程序存儲(chǔ)器,其地址為0000HFFFFH數(shù)據(jù)存儲(chǔ)器(RAM)空間 (1)片內(nèi)256B的數(shù)據(jù)存儲(chǔ)器,00H7FH為通用的數(shù)據(jù)存儲(chǔ)區(qū),80HFFH為專用的特殊功能寄存器區(qū) FFFFH FFFFH 1000H0FFFH 0FFFH FFH 80H7FH 0000H 0000H 00H 0000H 程序存

11、儲(chǔ)器 內(nèi)部數(shù)據(jù)存儲(chǔ)器 外部數(shù)據(jù)存儲(chǔ)器60KB外部ROM4KB內(nèi)部 ROM(EA=1)4KB外部ROM(EA=0)特殊功能寄存器內(nèi)部RAM64KB外部RAM圖1-7 8051的存儲(chǔ)器結(jié)構(gòu)(2)片外64KB的數(shù)據(jù)存儲(chǔ)器,其地址為0000HFFFFH與8051不同的是,8751片內(nèi)包含4KB的EPROM程序存儲(chǔ)器,而8031內(nèi)部不包含程序存儲(chǔ)器。2程序存儲(chǔ)器(1)程序存儲(chǔ)器主要用于存放程序和表格常數(shù)。(2)程序存儲(chǔ)器分為片內(nèi)、片外兩部分,總?cè)萘孔畲鬄?4KB,地址為0000HFFFFH。(3)引腳的接法對(duì)于8051、8751等片內(nèi)有程序存儲(chǔ)器的芯片, 引腳應(yīng)該接高電平;對(duì)于8031這種片內(nèi)無(wú)程序存儲(chǔ)

12、器的芯片,引腳應(yīng)該接低電平。3數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器主要用于存放各種數(shù)據(jù)。以下只對(duì)內(nèi)部數(shù)據(jù)存儲(chǔ)器進(jìn)行介紹。 用戶區(qū)位尋址區(qū)(位地址007F)工作寄存器區(qū)3(R0R7)工作寄存器區(qū)2(R0R7)工作寄存器區(qū)1(R0R7)工作寄存器區(qū)0(R0R7)7FH 30H 2FH 20H 1FH 00H 圖1-8 內(nèi)部數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)(1) 低128B的內(nèi)部數(shù)據(jù)存儲(chǔ)器按其功能不同劃分為三個(gè)區(qū)域。工作寄存器區(qū)( 00H1FH )該區(qū)均分為四個(gè)小區(qū),任何時(shí)候,只有一個(gè)區(qū)的工作寄存器可以工作,稱為當(dāng)前工作寄存器區(qū)。當(dāng)前區(qū)的選擇可通過(guò)對(duì)寄存器PSW中的RS1、RS0兩個(gè)位的設(shè)置來(lái)進(jìn)行,見(jiàn)表1-2。 表1-2 當(dāng)前工作

13、寄存器區(qū)的選擇RS1RS0當(dāng)前工作寄存器區(qū)000區(qū)011區(qū)102區(qū)113區(qū)思考題:?jiǎn)纹瑱C(jī)復(fù)位時(shí),當(dāng)前工作寄存器區(qū)是哪個(gè)? 位尋址區(qū)(20H2FH) 位尋址區(qū)有16個(gè)單元組成,共128個(gè)位,每個(gè)位具有位地址,表1-3中表格數(shù)據(jù)是每個(gè)位的位地址。每個(gè)單元也可作一般的數(shù)據(jù)緩沖單元使用。位地址映象7FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4C

14、H4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H表1-3 片內(nèi)RAM的位尋址 字節(jié)地址 2FH2EH2DH2CH2BH2AH29H28H27H26H 25H24H23H22H21H20H用戶

15、區(qū) ( 30H7FH) 為一般數(shù)據(jù)緩沖區(qū),堆棧區(qū)通常也設(shè)置在這個(gè)區(qū)域內(nèi)。(2)高128字節(jié)(特殊功能寄存器區(qū))8051內(nèi)部有21個(gè)特殊功能寄存器(簡(jiǎn)稱SFR),它們均為8位的寄存器,離散分布在80HFFH區(qū)域,剩下107個(gè)單元是沒(méi)有定義的,用戶不能使用。見(jiàn)表1-4。有11個(gè)SFR的字節(jié)地址可被8整除(地址以0和8結(jié)尾),可以位尋址(表中已給出它們的位地址)。表1-4 特殊功能寄存器地址對(duì)照表SPR名稱符號(hào)D7 位地址/位定義 D0字節(jié)地址B寄存器BF7F6F5F4F3F2F1F0(F0H)累加器AACCE7E6E5E4E3E2E1E0(E0H)程序狀態(tài)字PSWD7D6D5D4D3D2D1D0(

16、D0)CYACF0RS1RS0OV-P中斷優(yōu)先級(jí)控制IPBFBEBDBCBBBAB9B8(B8H)-PSPT1PX1PT0PX0I/O端口3P3B7B6B5B4B3B2B1B0(B0H)P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0中斷允許控制IEAFAEADACABAAA9A8(A8H)EA-EAET1EX0ET0EX0I/O端口2P2A7A6A5A4A3A2A1A0(A0H)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0串行數(shù)據(jù)緩沖SBUF(99H)串行控制SCON9F9E9D9C9B9A9998(98H)SW0SW1SW2RENTB8RB8TIRII/

17、O端口1P19796959493929190(90H)P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0定時(shí)/計(jì)數(shù)器1(高字節(jié))TH1(8DH)定時(shí)/計(jì)數(shù)器0(高字節(jié))TH0(8CH)定時(shí)/計(jì)數(shù)器1(低字節(jié))TL1(8BH)定時(shí)/計(jì)數(shù)器0(低字節(jié))TL0(8A)定時(shí)/計(jì)數(shù)器方式選擇TWODGATEC/TW1W0GATEC/TW1W0(89H)定時(shí)/計(jì)數(shù)器控制TCON8F8E8D8C8B8A8988(88H)TF1TR1TF0TR0IE1IT1IE0IT0電源控制與波特率選擇PCON(87H)數(shù)據(jù)指針高字節(jié)DPH(83H)數(shù)據(jù)指針低字節(jié)DPL(82H)堆棧指針SP(81H)I/O端

18、口0P08786858483828180(80H)P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 五、 計(jì)算機(jī)中的數(shù)制與編碼(一)常用數(shù)制數(shù)制也就是進(jìn)位制,計(jì)算機(jī)中常用的進(jìn)位制有二進(jìn)制(B字母結(jié)尾)、十進(jìn)制(D字母結(jié)尾,可省略)、十六進(jìn)制(H字母結(jié)尾)等。其中二進(jìn)制是計(jì)算機(jī)內(nèi)部使用的,十進(jìn)制、十六進(jìn)制通常是人們書(shū)寫程序或描述計(jì)算機(jī)工作過(guò)程時(shí)使用的。(二)數(shù)制間的轉(zhuǎn)換三種進(jìn)制的對(duì)應(yīng)關(guān)系見(jiàn)表1-5。表1-5 三種進(jìn)制數(shù)對(duì)照表二進(jìn)制(B)十六進(jìn)制(H)十進(jìn)制(D)二進(jìn)制(B)十六進(jìn)制(H)十進(jìn)制(D)0000001000880001111001990010221010.A10001

19、1331011B110100441100C120101551101D130110661110E140111771111F151十進(jìn)制轉(zhuǎn)換為二進(jìn)制 整數(shù)部分的轉(zhuǎn)換方法稱為“除2取余法”。小數(shù)部分的轉(zhuǎn)換方法稱為“乘2取整法”。2二進(jìn)制轉(zhuǎn)換成十進(jìn)制將二進(jìn)制數(shù)的各個(gè)非零位分別乘以位權(quán)之后相加求和。3十進(jìn)制轉(zhuǎn)換成十六進(jìn)制整數(shù)部分的轉(zhuǎn)換方法稱為“除16取余法”。小數(shù)部分的轉(zhuǎn)換方法稱“乘16取整法”。4十六進(jìn)制轉(zhuǎn)換成十進(jìn)制將十六進(jìn)制數(shù)的各個(gè)非零位分別乘以位權(quán)后相加求和。5二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的方法是:4位二進(jìn)制數(shù)對(duì)應(yīng)于1位十六進(jìn)制數(shù)(對(duì)應(yīng)關(guān)系見(jiàn)表1-4)。十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制

20、數(shù)的方法是:將每1位十六進(jìn)制數(shù)用對(duì)應(yīng)的4位二進(jìn)制數(shù)替換。練習(xí):1 將194轉(zhuǎn)換成二進(jìn)制數(shù)2 將120轉(zhuǎn)換成十六進(jìn)制數(shù)3 將10101000B轉(zhuǎn)換成十進(jìn)制數(shù)4將19BH轉(zhuǎn)換成十進(jìn)制數(shù)5將二進(jìn)制數(shù)1011011110B轉(zhuǎn)換為十六進(jìn)制數(shù)6將十六進(jìn)制數(shù) 7B25H 轉(zhuǎn)換為二進(jìn)制數(shù)(三)常用二進(jìn)制編碼1 二進(jìn)制編碼的十進(jìn)制數(shù)十進(jìn)制數(shù)用二進(jìn)制編碼的形式來(lái)表示,稱為二十進(jìn)制編碼,即:BCD碼(Binary Code Decimal)。最常用的是8421BCD碼。表1-5列出了BCD碼(8421碼)與十進(jìn)制數(shù)的對(duì)照表。互換時(shí),可以按4位對(duì)應(yīng)1位的原則,進(jìn)行轉(zhuǎn)換。表1-6 BCD(8421)碼與十進(jìn)制數(shù)的對(duì)照表

21、十進(jìn)制數(shù)BCD碼十進(jìn)制數(shù)BCD碼00000501011000160110200107011130011810004010091001 課堂練習(xí):(1)將79.32轉(zhuǎn)換成BCD碼(2)將BCD碼100001100101轉(zhuǎn)換成十進(jìn)制2 字符編碼(ASCll碼)計(jì)算機(jī)中的各種字符,包括 0 9數(shù)字、大小寫英文字母、標(biāo)點(diǎn)符號(hào)及用于控制的特殊符號(hào)等,也必須用二進(jìn)制編碼表示。在計(jì)算機(jī)中一般統(tǒng)一使用ASCII碼來(lái)表示字符。ASCII碼是美國(guó)信息交換標(biāo)準(zhǔn)代碼的簡(jiǎn)稱。每個(gè)字符的ASCII碼是由7位二進(jìn)制數(shù)構(gòu)成,第八位(最高位)通常定為奇偶校驗(yàn)位。例如:數(shù)字 09的ASCII碼為30H39H;大寫字母AZ的ASC

22、II碼為41H5AH。(四)帶符號(hào)數(shù)的表示在計(jì)算機(jī)中是使用數(shù)字“0”和“1”來(lái)表示數(shù)的符號(hào)的。如,“+”號(hào)用“0”表示;“”號(hào)用“1”表示。一個(gè)數(shù)在計(jì)算機(jī)中有三種表示方法:原碼、反碼、補(bǔ)碼。下面以8位帶符號(hào)數(shù)為例進(jìn)行介紹。1、 原碼最高位(D7位)作符號(hào)位,用“0”或“1”表示數(shù)的正或負(fù),其余位為數(shù)值位,用來(lái)表示該數(shù)的大小,即絕對(duì)值。例: + 112 原碼 = 01110000B 112 原碼 = 11110000B原碼所能表示的十進(jìn)制范圍是: 127 +127。2、反碼正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼,符號(hào)位為1,數(shù)值位是將原碼的數(shù)值位按位取反(即原來(lái)是“0”的,取為“1”,原來(lái)是“1”的,

23、取為“0”)。例:+112 反碼 = 01110000B 112 反碼 =10001111B反碼可表示的十進(jìn)制范圍是: 127 + 127。3、補(bǔ)碼表示法正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼,符號(hào)位為“1”,數(shù)值位是將反碼的數(shù)值位加1形成。例:+112 補(bǔ)碼 = 01110000B 112 補(bǔ)碼= 10010000B用補(bǔ)碼可表示的十進(jìn)制范圍是: 128 +127。因?yàn)閹Х?hào)數(shù)用補(bǔ)碼表示,可以簡(jiǎn)化運(yùn)算,所以較常用。 (五)無(wú)符號(hào)數(shù)無(wú)符號(hào)的8位二進(jìn)制數(shù)沒(méi)有符號(hào)位,8位均為數(shù)值位。即:8位無(wú)符號(hào)二進(jìn)制數(shù)對(duì)應(yīng)的十進(jìn)制范圍為(0 255)。第二章 MCS-51單片機(jī)指令系統(tǒng)一、指令的表達(dá)形式每條指令有兩種不

24、同的表達(dá)形式:1二進(jìn)制代碼(機(jī)器碼)指令2助記符(匯編語(yǔ)言)指令助記符指令: MOV A, # 30H 二進(jìn)制代碼指令: 01110100 00110000助記符指令必須轉(zhuǎn)換成二進(jìn)制代碼指令才能存入存儲(chǔ)器。本章僅介紹助記符指令格式,對(duì)應(yīng)的機(jī)器碼格式可參考附錄。二、匯編語(yǔ)言指令格式操作碼 第一操作數(shù) ,第二操作數(shù) ,第三操作數(shù)(1)操作碼:用來(lái)規(guī)定指令進(jìn)行何種操作,是指令中不能空缺的部分。(2)操作數(shù):表示參與指令操作的數(shù)據(jù)或數(shù)據(jù)所在的地址。為可選項(xiàng)。有兩個(gè)操作數(shù)時(shí),前一個(gè)為目的操作數(shù),后一個(gè)為源操作數(shù)。三、指令中有關(guān)操作數(shù)符號(hào)的說(shuō)明Rn工作寄存器R0R7(n= 0、1、27)。Ri 工作寄存器

25、R0和R1(i=0或1)。Direct內(nèi)部RAM的單元地址,地址范圍為00FFH。# data8位立即數(shù),即常數(shù)。# data1616位立即數(shù)。addr1616位目的地址。Addrll 11位目的地址。四、MCS-51單片機(jī)指令系統(tǒng)MCS51的指令按功能分為五大類:數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算、控制轉(zhuǎn)移和位操作指令。(一) 數(shù)據(jù)傳送類指令 注意:源操作數(shù)在傳送前后保持不變。1 內(nèi)部數(shù)據(jù)傳送指令 指令 功能說(shuō)明MOV A,Rn ; A(Rn)MOV A, direct ; A(direct)MOV A,Ri ; A (Ri)MOV A,#data ; A#dataMOV Rn,A ; Rn(A)

26、 MOV Rn,direct ; Rn(direct)MOV Rn,# data ; Rn# dataMOV direct , A ;direct (A)MOV direct , Rn ;direct (Rn)MOV direct , Ri ; direct (Ri)MOV direct1,direct2 ; direct1(direct2)MOV direct, #data ; direct#dataMOV Ri, A ; ( Ri) ( A)MOV Ri, direct ; ( Ri) ( direct)MOV Ri, #data ; ( Ri) #dataMOV DPTR, #data1

27、6 ;DPTR#data16 【例2-1】 設(shè)(30H)=40H,(40H)=10H,(P1)=0CAH,試判斷下列程序執(zhí)行后的結(jié)果。MOV R0,#30H ; R0#30HMOV A, R0 ; A(30H),(A)= 40HMOV R1, A ; R1(A),(R1)=40HMOV B, R1 ; B(40H),(B)=10HMOV R1, P1 ; (R1) (P1),(40H)=0CAHMOV P2, P1 ; P2(P1),(P2)=0CAH結(jié)果是:(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH2外部數(shù)據(jù)傳送指令此類指令完成對(duì)片外RAM單元中數(shù)據(jù)的讀/寫操作

28、。(1)讀指令 MOVX A ,DPTR ;A(DPTR) MOVX A , Ri ; A(Ri) (2)寫指令 MOVX DPTR , A ;(DPTR)(A) MOVX Ri , A ; (Ri)(A) 注意:用R0和R1間接尋址時(shí),要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。使用時(shí),要先將低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。 【例2-2】 將片外RAM1000H單元中的內(nèi)容送到2000H單元。 方法一 MOV DPTR ,#1000H ; DPTR#1000H MOVX A ,DPTR ; A(DPTR) MOV DPTR

29、,#2000H ; DPTR# 2000H MOVX DPTR ,A ;(DPTR)(A)方法二 MOV P2 ,#10H ;P2#10H MOV R0 ,#00H ;R0#00HMOVX A,R0 ;A(R0) MOV P2 ,#20H ;P2#20H MOVX R0,A ;(R0)(A) 注意:在兩個(gè)片外RAM單元之間是不能直接進(jìn)行數(shù)據(jù)的傳送的,必須經(jīng)過(guò)片內(nèi)的累加器A來(lái)間接地傳送。 3訪問(wèn)程序存儲(chǔ)器的傳送指令(查表指令) MOVC A,A+PC ;PC(PC)+1 , A(A)+(PC)MOVC A,A+DPTR ;A(A)+(DPTR) 其功能是到程序存儲(chǔ)器中查表格數(shù)據(jù)送入累加器A。程序

30、存儲(chǔ)器中除了存放程序之外,還會(huì)放一些表格數(shù)據(jù),又稱查表指令。指令中的操作數(shù)為表格數(shù)據(jù)。前一條指令將A中的內(nèi)容與PC的內(nèi)容相加得到16位表格地址;后一條指令是將A中的內(nèi)容與DPTR中的內(nèi)容相加得到16位表格地址。4數(shù)據(jù)交換指令XCH A,Rn ; (A)(Rn ) XCH A,direct ; (A)(direct ) XCH A,Ri ;(A)(Ri) XCHD A, Ri ; (A)30 (Ri)30 5堆棧操作指令在片內(nèi)RAM的00H7FH地址區(qū)域中,可設(shè)置一個(gè)堆棧區(qū),主要用于保護(hù)和恢復(fù)CPU的工作現(xiàn)場(chǎng)。(1)進(jìn)棧指令 PUSH direct ; SP(SP)+1 ; (SP)(direc

31、t);(2)出棧指令POP direct ; direct(SP); SP (SP)1;二、算術(shù)運(yùn)算類指令注意大部分指令的執(zhí)行結(jié)果將影響程序狀態(tài)字PSW的有關(guān)標(biāo)志位。(一)加法指令A(yù)DD A, Rn ;A(A)+(Rn ) ADD A, direct ;A(A)+(direct) ADD A, Ri ;A(A)+((Ri)) ADD A, # data ;A(A)+ data ADDC A, Rn ;A(A)+(Rn )+(CY) ADDC A, direct ;A(A)+(direct)+(CY) ADDC A, Ri ;A(A)+((Ri))+ (CY) ADDC A, # data ;A

32、(A)+ data+(CY) 如果把參加運(yùn)算的兩個(gè)操作數(shù)看作是無(wú)符號(hào)數(shù)(0255),加法運(yùn)算對(duì)CY標(biāo)志位的影響如下:(1) 若結(jié)果的第7位向前有進(jìn)位(C7= 1),CY=1(2) 若結(jié)果的第7位向前無(wú)進(jìn)位(C7= 0),CY=0【例2-3】 設(shè)有兩個(gè)無(wú)符號(hào)數(shù)放在A和R2中,設(shè)(A)= 0C6H(198),(R2)= 68H(104),執(zhí)行指令:ADD A,R2 試分析運(yùn)算結(jié)果及對(duì)標(biāo)志位的影響。 解: 寫成豎式 (A) 11000110 198 (R2) + 01101000 + 104 (A) 1 00101110 302 結(jié)果是:(A)= 2EH, CY=1。(二)加1指令I(lǐng)NC A ;A(

33、A)+1 INC Rn ;Rn(Rn)+1 INC direct ;direct(direct)+1 INC Ri ;(Ri)(Ri)+1 INC DPTR ;DPTR(DPTR)+1 這組指令的功能是使源操作數(shù)的值加1?!纠?-4】 設(shè)有兩個(gè)16位無(wú)符號(hào)數(shù),被加數(shù)存放在內(nèi)部RAM的30H(低位字節(jié))和31H(高位字節(jié))中,加數(shù)存放在40H(低位字節(jié))和41H(高位字節(jié))中。試寫出求兩數(shù)之和,并把結(jié)果存放在30H和31H單元中的程序。參考程序?yàn)椋篗OV R0,#30H ; 地址指針R0賦值MOV R1,#40H ; 地址指針R1賦值MOV A,R0 ;被加數(shù)的低8位送AADD A,R1 ;被加

34、數(shù)與加數(shù)的低8位相加,和送A,并影響CY標(biāo)志MOV R0, A ;和的低8位存30H單元INC R0 ;修改地址指針R0INC R1 ;修改地址指針R1MOV A,R0 ;被加數(shù)的高8位送AADDC A,R1 ;被加數(shù)和加數(shù)的高8位與CY相加,和送AMOV R0, A ;和的高8位存31H單元(三)減法指令1帶借位減法指令 SUBB A, Rn ;A(A)(Rn)(CY) SUBB A, direct ;A(A)(direct)(CY) SUBB A,Ri ;A(A)(Ri)(CY) SUBB A,#data ;A(A) data (CY) 該組指令的功能是從累加器A減去源操作數(shù)及標(biāo)志位CY,

35、其結(jié)果再送累加器A。CY位在減法運(yùn)算中是作借位標(biāo)志。SUBB指令對(duì)標(biāo)志位的影響如下:(1)若第7位向前有借位(C7= 1),則CY=1;(2)若第7位向前無(wú)借位(C7= 0),則CY=0,【例2-5】 在A和R3中存有兩個(gè)無(wú)符號(hào)數(shù), 設(shè)(A)=98H,(R3)=6AH,CY=1,執(zhí)行指令:SUBB A, R3分析執(zhí)行結(jié)果及對(duì)標(biāo)志位的影響解: (A) 10011000 98H (R3) 01101010 6AH CY 1 1 (A) 00101101 2DH結(jié)果是: (A)=2DH,CY=02減1指令DEC A ; A(A)-1 DEC Rn ; Rn(Rn)-1 DEC direct ; di

36、rect(direct)-1 DEC Ri ; (Ri) (Ri)-1 這組指令的功能是使源操作數(shù)的值減1。 (四)十進(jìn)制調(diào)整指令 DA A 指令專用于實(shí)現(xiàn)BCD碼的加法運(yùn)算,其功能是將累加器A中按二進(jìn)制相加后的結(jié)果調(diào)整成BCD碼相加的結(jié)果。(1) ADD或ADDC指令的結(jié)果是二進(jìn)制數(shù)之和。(2) DA 指令的結(jié)果是BCD碼之和十進(jìn)制調(diào)整指令執(zhí)行時(shí)會(huì)對(duì)Cy位產(chǎn)生影響。【例2-6】MOV A, #75H MOV R3, #69H ADD A, R3 ;(A)=DEH,CY=0 MOV B, A ;(B)= DEH DA A ; (A)=44H,CY=1(五)乘法指令MUL AB ; BA(A)&

37、#215;(B) 指令的功能是把累加器A和寄存器B中兩個(gè)8位無(wú)符號(hào)整數(shù)相乘,并把乘積的高8位存于寄存器B中,低8位存于累加器A中。乘法運(yùn)算指令執(zhí)行時(shí)會(huì)對(duì)標(biāo)志位產(chǎn)生影響:CY標(biāo)志總是被清0,即CY=0;OV標(biāo)志則反映乘積的位數(shù),若OV=1,表示乘積為16位數(shù);若OV=0,表示乘積為8位數(shù)。(六)除法指令 DIV AB ; A商,B余(A)÷(B) 指令的功能是把累加器A和寄存器B中的兩個(gè)8位無(wú)符號(hào)整數(shù)相除,所得商的整數(shù)部分存于累加器A中,余數(shù)存于B中。除法指令執(zhí)行過(guò)程對(duì)標(biāo)志位的影響:CY位總是被清0,OV標(biāo)志位的狀態(tài)反映寄存器B中的除數(shù)情況,若除數(shù)為0,則OV=1,表示本次運(yùn)算無(wú)意義,

38、否則,OV=0。三、邏輯運(yùn)算類指令在MCS51指令系統(tǒng)中,邏輯運(yùn)算類指令有25條,可實(shí)現(xiàn)與、或、異或等邏輯運(yùn)算操作。這類指令有可能會(huì)影響CY和P標(biāo)志位的狀態(tài)。(一)累加器A的邏輯操作指令 1、累加器A清0CLR A ; A00H 2、累加器A取反CPL A ; A() 【例2-7】 設(shè)(A)=33H,執(zhí)行指令CPL A 結(jié)果是:(A)= 0CCH3、累加器A循環(huán)左移D7D0RL A 利用左移指令,可實(shí)現(xiàn)對(duì)A中的無(wú)符號(hào)數(shù)乘2的目的。【例2-8】 執(zhí)行下列指令后,A中的內(nèi)容如何變化?MOV A,11H ;(A)=11H(17)RL A ;(A)=22H(34)RL A ;(A)=44H(68)RL

39、 A ;(A)=88H(136)RL A ;(A)=11H(17)4、累加器A帶進(jìn)位循環(huán)左移CYD7D0 RLC A 5、累加器A循環(huán)右移 D7 D0 RR A 對(duì)累加器A進(jìn)行的循環(huán)右移,可實(shí)現(xiàn)對(duì)A中無(wú)符號(hào)數(shù)的除2運(yùn)算。6、累加器A帶進(jìn)位循環(huán)右移CYD7 D0 RRC A 7、累加器A半字節(jié)交換D7D4 D3D0 SWAP A 功能是將累加器A中內(nèi)容的高4位與低4位互換?!纠?-9】 設(shè)(A)=63H,執(zhí)行指令SWAP A結(jié)果為:(A)= 36H。(二)邏輯與指令 ANL A,Rn ;A(A)(Rn) ANL A,direct ; A(A)(direct ) ANL A,Ri ;A(A)(Ri

40、) ANL A,#data ; A(A) #data ANL direct,A ;direct (direct )(A) ANL direct,#data ;direct (direct ) #data 功能是將目的操作數(shù)和源操作數(shù)按位進(jìn)行邏輯與操作,結(jié)果送目的操作數(shù)。在程序設(shè)計(jì)中,邏輯與指令主要用于對(duì)目的操作數(shù)中的某些位進(jìn)行屏蔽(清0)。方法是:將需屏蔽的位與“0”相與,其余位與“1”相與即可。(三)邏輯或指令 ORL A,Rn ;A(A)(Rn) ORL A,direct ; A(A)(direct ) ORL A,Ri ;A(A)(Ri) ORL A,#data ; A(A) #data

41、 ORL direct,A ;direct (direct )(A) ORL direct,#data ;direct (direct ) #data 功能是將目的操作數(shù)和源操作數(shù)按位進(jìn)行邏輯或操作,結(jié)果送目的操作數(shù)。邏輯或指令可對(duì)目的操作數(shù)的某些位進(jìn)行置位。方法是:將需置位的位與“1”相或,其余位與“0”相或即可,常用于組合數(shù)據(jù)。(四)邏輯異或指令XRL A,Rn ;A(A)(Rn) XRL A,direct ; A(A)(direct ) XRL A,Ri ;A(A)(Ri) XRL A,#data ; A(A) #data XRL direct,A ;direct (direct )(A) XRL direct,

溫馨提示

  • 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)論