單片機(jī)原理及應(yīng)用_第1頁
單片機(jī)原理及應(yīng)用_第2頁
單片機(jī)原理及應(yīng)用_第3頁
單片機(jī)原理及應(yīng)用_第4頁
單片機(jī)原理及應(yīng)用_第5頁
已閱讀5頁,還剩271頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,單片機(jī)原理及應(yīng)用,2,目錄,單片機(jī)概述 單片機(jī)芯片的硬件結(jié)構(gòu) MCS51單片機(jī)指令系統(tǒng) MCS51匯編語言程序設(shè)計 單片機(jī)存儲器擴(kuò)展 單片機(jī)的中斷與定時系統(tǒng) 單片機(jī)I/O擴(kuò)展與應(yīng)用 單片機(jī)串行數(shù)據(jù)通信 MCS51單片機(jī)應(yīng)用與開發(fā)技術(shù),3,第一章單片機(jī)概述,單片機(jī)的概念 單片機(jī)的發(fā)展 單片機(jī)的應(yīng)用,4,什么是單片機(jī)? 單片機(jī)將計算機(jī)的五大部件集中在同一塊集成電路硅 片上的計算機(jī)。,第一節(jié)單片機(jī)的概念,單片機(jī)的名稱: 單片微型計算機(jī)(SCMC) 微控制器(MCU) 嵌入式控制器(EMCU),單片機(jī)與一般微機(jī)最根本的不同之處: 單片機(jī)的五大部件集成在一塊集成電路硅片上。,5,什么是通用單片機(jī)和專

2、用單片機(jī)? 通用單片機(jī)是一種基本芯片。 專用單片機(jī)是針對一種產(chǎn)品或一種控制應(yīng)用專門設(shè)計的,單片機(jī)與單片機(jī)系統(tǒng): 單片機(jī)系統(tǒng)是在單片機(jī)芯片的基礎(chǔ)上擴(kuò)展其它電路 或芯片構(gòu)成的具有一定應(yīng)用功能的計算機(jī)系統(tǒng)。,6,單片機(jī)應(yīng)用系統(tǒng)與單片機(jī)開發(fā)系統(tǒng): 單片機(jī)開發(fā)系統(tǒng)即是單片機(jī)系統(tǒng)開發(fā)調(diào)試的工具。 仿真器、編程器等,機(jī)器語言:基本的的語言形式,多出現(xiàn)在應(yīng)用系統(tǒng)中,匯編語言:單片機(jī)開發(fā)中最常用的程序設(shè)計語言,高級語言:很具發(fā)展?jié)摿Α?單片機(jī)的程序設(shè)計語言和軟件 常用單片機(jī)語言:匯編語言、高級語言c51。,7,單片機(jī)的分類: 4位單片機(jī) 特點:一次處理4位二進(jìn)制數(shù) 代表產(chǎn)品:COP4XX系列(NS公司) TMP

3、47XXX系列(Toshiba公司) 用途:計算器、家用電器等, 8位單片機(jī) 特點:一次處理8位二進(jìn)制數(shù) 代表產(chǎn)品:MCS51系列(Intel公司) M6805系列(Motorola公司) 用途:工業(yè)控制、智能儀表、家用電器和辦公自動化系統(tǒng),8, 16位單片機(jī) 特點:一次處理16位二進(jìn)制數(shù) 代表產(chǎn)品:MCS96系列(Intel公司) M68HC16系列(Motorola公司) 用途:過程控制、智能儀表、家用電器和計算機(jī)外設(shè)等, 32位單片機(jī) 特點:一次處理32位二進(jìn)制數(shù) 代表產(chǎn)品:M68300系列(Motorola公司) SH系列(日立公司) 用途:多媒體、蜂窩電話、光驅(qū)等計算機(jī)外設(shè),9,第二

4、節(jié)單片機(jī)的發(fā)展,單片機(jī)的發(fā)展歷史 第一階段:4位單片機(jī)階段。 主要特點是:價格便宜,具有一定的控制功能。主要代表系列有:日本NEC公司的uMOS40系列、松下公司的MN1400系列,夏普公司的SM系列,富士通的MB88系列等等。,第二階段:(19761978年)低、中檔8位單片機(jī)階段。 以Intel公司的MCS48為代表。這個系列的單片機(jī)片內(nèi)集成有8位CPU。并行I/O口,8位定時器/計數(shù)器,尋址范圍不大于4K,無串行口。,10,第三階段:(1978至1982)高檔8位單片機(jī)階段。 這階段推出的普遍帶有串行I/O口,有多種中斷處理系統(tǒng),多個16位定時器/計數(shù)器。片內(nèi)RAM、ROM容量較大,尋址

5、范圍可達(dá)64K,有的片內(nèi)還帶有A/D轉(zhuǎn)換接口。主要代表系列有Intel公司的MCS51,Motorola公司的6801,Zilog公司的Z8等。,第四階段:(1982至今)8位單片機(jī)完善發(fā)展和16位、32位單片機(jī)推出階段。 這階段的主要特征是一方面發(fā)展16位單片機(jī)及專用單片機(jī),另一方面同時不斷完善高欄8位單片機(jī),改善其結(jié)構(gòu),以滿足不同的用戶需要。,11,8位單片機(jī)的市場前景,8位單片機(jī)用途廣泛(美國) 每家226個 辦公室42個 每汽車35個,注意:基于Internet、無線數(shù)字傳輸?shù)那度胧綉?yīng)用將會是 32位機(jī)最廣泛的市場。,12,8位單片機(jī)的新發(fā)展,為了減小體積,增強(qiáng)功能,提高靈活性和可靠性

6、,8位單片機(jī)的新發(fā)展體現(xiàn)在下面4個方面: CPU功能增強(qiáng) 內(nèi)部資源增多 引腳的多功能化 低電壓和低功耗,13,8位單片機(jī)的新發(fā)展,為了減小體積,增強(qiáng)功能,提高靈活性和可靠性,8位單片機(jī)的新發(fā)展體現(xiàn)在下面4個方面: CPU功能增強(qiáng) 采用亞微米的CMOS工藝提高運算速度,計劃把80C51設(shè)計成1/3時鐘周期執(zhí)行一條指令,并可在33MHZ時鐘下運行。 內(nèi)部資源增多 引腳的多功能化 低電壓和低功耗,14,8位單片機(jī)的新發(fā)展,為了減小體積,增強(qiáng)功能,提高靈活性和可靠性,8位單片機(jī)的新發(fā)展體現(xiàn)在下面4個方面: CPU功能增強(qiáng) 內(nèi)部資源增多 增加了A/D和D/A轉(zhuǎn)換器、DMA通道、總線接口、晶振和LCD驅(qū)動

7、電路。 引腳的多功能化 低電壓和低功耗,15,8位單片機(jī)的新發(fā)展,為了減小體積,增強(qiáng)功能,提高靈活性和可靠性,8位單片機(jī)的新發(fā)展體現(xiàn)在下面4個方面: CPU功能增強(qiáng) 內(nèi)部資源增多 引腳的多功能化 采用一腳多用設(shè)計方案,減少引腳數(shù)量,提高應(yīng)用靈活性。 低電壓和低功耗,16,8位單片機(jī)的新發(fā)展,為了減小體積,增強(qiáng)功能,提高靈活性和可靠性,8位單片機(jī)的新發(fā)展體現(xiàn)在下面4個方面: CPU功能增強(qiáng) 內(nèi)部資源增多 引腳的多功能化 低電壓和低功耗 制造成3V電源的單片機(jī);采用CMOS工藝,設(shè)立掉 電和空閑兩種工作方式。,17,幾種8位單片機(jī)的性能概況 (1)Intel公司的MCS51系列 (2)Philip

8、s公司的80C51系列 (3)Microchip公司的PIC系列 (4)Atmel公司的AT89、AT90、AT91和智能IC卡四個系列 (5)Motorola公司的M68HC05、M68HC11系列,18,MCS-51系列單片機(jī)特性,19,除了Intel公司外,Siemens、Philips和Fujitsu等公司都在80C51基礎(chǔ)上推出與Intel公司的80C51兼容的新型單片機(jī),統(tǒng)稱為80C51系列。 Philips公司的80C51系列單片機(jī)性能卓著,產(chǎn)品最齊全,最具有代表性。 它以80C51為內(nèi)核,新增功能電路有: A/D轉(zhuǎn)換器 捕捉輸入/定時輸出 PWM(Pulse Width Mod

9、ulator)脈沖寬度調(diào)制器 I2C總線接口 視頻顯示控制器 監(jiān)視定時器 E2PROM,20,80C51系列單片機(jī)主要性能特點,21,PIC系列單片機(jī)分低檔、中檔和高檔三個層次。 1、產(chǎn)品特點: 價格低:率先采用RISC(精簡指令系統(tǒng)計算機(jī))技術(shù) 速度高:兩級指令流水線結(jié)構(gòu) 采用哈佛雙總線結(jié)構(gòu) 可靠性好:采用OTP(一次性程序)技術(shù),比熔絲式 EPROM更為可靠 2、主要應(yīng)用: 嵌入式單片機(jī)的主流產(chǎn)品之一。,22,PIC系列中檔單片機(jī)性能表,23,Atmel公司是世界上著名的高性能、低功耗、非易失性存儲器和數(shù)字集成電路的一流半導(dǎo)體制造公司。單片機(jī)產(chǎn)品分為AT89、AT90、AT91和智能IC卡

10、等四個系列。 1、產(chǎn)品特點: E2PROM存儲器技術(shù) FLASH閃速存儲器技術(shù) 2、主要應(yīng)用: 計算機(jī)外部設(shè)備、通信設(shè)備、自動化工業(yè)控制 航空航天儀表、雷達(dá)系統(tǒng)、導(dǎo)彈 機(jī)器人、各類武器系統(tǒng),24,AT90系列單片機(jī)選型表,25,Motorola公司是世界最具影響力的單片機(jī)廠商,其8位機(jī)約占8位機(jī)市場的30%份額。該公司共分為M6805、M68HC05、M68HC08 、 M68HC11等幾個系列。,26,M6805系列單片機(jī)主要性能表,27,M68HC05系列單片機(jī)主要性能表,28,M68HC11系列單片機(jī)主要性能表,29,第三節(jié)單片機(jī)的應(yīng)用,單片機(jī)應(yīng)用的特點 1、控制系統(tǒng)的在線應(yīng)用,2、軟硬

11、件結(jié)合,(1)計算機(jī)在控制系統(tǒng)中的離線應(yīng)用。 由微型機(jī)或小型機(jī)實現(xiàn) (2)計算機(jī)在控制系統(tǒng)中的在線應(yīng)用。 由單片機(jī)實現(xiàn),要求:設(shè)計人員既要掌握匯編語句編程技術(shù),又要具備較扎實的硬件理論和實踐知識。,30,(1)廣泛性:微電子時代的必然發(fā)展趨勢,意義:有利于產(chǎn)品的小型化、多功能化和智能化; 改變了的傳統(tǒng)的控制系統(tǒng)設(shè)計思想,傳統(tǒng):,控制設(shè)計思想,現(xiàn)代:,控制設(shè)計思想,4、應(yīng)用的廣泛性及其重要意義,3、應(yīng)用現(xiàn)場環(huán)境惡劣,注意:使用時,應(yīng)根據(jù)環(huán)境的溫度情況選擇合適的芯片。,31,單片機(jī)的應(yīng)用領(lǐng)域 1、工業(yè)自動化方面 2、儀器儀表方面 3、家用電器方面 4、信息和通信產(chǎn)品方面 5、軍事裝備方面,32,參

12、考書,單片機(jī)原理及實用技術(shù)張振榮 北京人民郵電出版社 MCS51系列單片機(jī)系統(tǒng)原理與設(shè)計蘇凱 冶金工業(yè)出版社 單片機(jī)原理及其接口技術(shù)胡漢才 清華大學(xué)出版社,33,第二章單片機(jī)芯片的硬件結(jié)構(gòu),MCS51單片機(jī)的邏輯結(jié)構(gòu)及信號引腳 MCS51單片機(jī)的內(nèi)部存儲器 MCS51單片機(jī)并行輸入/輸出口電路 MCS51單片機(jī)時鐘電路與時序 MCS51單片機(jī)工作方式,34,第一節(jié)邏輯結(jié)構(gòu)及信號引腳,MCS51單片機(jī)結(jié)構(gòu)框圖,35,MCS51單片機(jī)芯片內(nèi)部邏輯結(jié)構(gòu),中央處理器 內(nèi)部數(shù)據(jù)存儲器 內(nèi)部程序存儲器 定時器/計數(shù)器 并行I/O口 串行口 中斷控制系統(tǒng) 時鐘電路 位處理器 總線,36,1.中央處理器,注意

13、:控制器的時鐘脈沖由振蕩器OSC電路提供。,PC:存放將要執(zhí)行的指令地址。 IR:存放正在執(zhí)行的指令地址。 ID:存放指令碼。 定時與控制電路:產(chǎn)生時序輸出信號和微操作控制信號,控制器:PC、PC加1寄存器、指令寄存器(IR)、指令譯碼 器(ID)、定時與控制電路。,ALU:用于進(jìn)行算術(shù)、邏輯運算。 ACC:用于存放操作數(shù)或操作結(jié)果。 B:用于存放操作數(shù)。 PSW:用于存放指令執(zhí)行后的狀態(tài)信息。 TMP:用于存放中間操作數(shù)(對用戶不開放)。,運算器:ALU、ACC、B、PSW、TMP1、TMP2。,37,2.內(nèi)部數(shù)據(jù)存儲器 由RAM和RAM地址寄存器組成。用于存放可讀寫的數(shù)據(jù)。,根據(jù)片內(nèi)ROM

14、的結(jié)構(gòu),單片機(jī)可分為: 無ROM型 ROM型 EPROM型 E2PROM型 FLASH型,3.內(nèi)部程序存儲器 由ROM和ROM地址寄存器組成。 用于存放程序和原始數(shù)據(jù)。,38,4.定時器/計數(shù)器 2個16位(80C51、8051) 用于將其定時或計數(shù)的結(jié)果對單片機(jī)進(jìn)行控制。,5.并行I/O口 4個8位(P0、P1、P2、P3) 用于使單片機(jī)和存儲器或外設(shè)之間并行傳送8位數(shù)據(jù)。,6.串行口 1個全雙工串行口 用于單片機(jī)和其它數(shù)據(jù)設(shè)備之間的串行數(shù)據(jù)傳送。,39,7.中斷控制系統(tǒng) 5個中斷源、2級中斷,10.總線,9.位處理器 即布爾處理器。 特別適用于控制目的和解決邏輯問題,8.時鐘電路 典型的晶

15、振頻率為12MHZ,40,MCS51單片機(jī)的信號引腳,1. 信號引腳介紹,41,(1)主電源及時鐘引腳 (2)控制引腳 (3)輸入/輸出引腳,VCC (40腳)、VSS (20腳) XTAL1 (19腳)、XTAL2 (18腳),RST/VPD(9腳):復(fù)位信號/備用電源 ALE/PROG(30腳):地址鎖存控制信號/編程脈沖 PSEN(29腳):外部程序存儲器讀選通信號 EA/VPP(31腳):訪問程序存儲器控制信號/編程電源,P0:8位三態(tài)雙向I/O口,可驅(qū)動8個LSTTL負(fù)載 P1:8位準(zhǔn)雙向I/O口,可驅(qū)動4個LSTTL負(fù)載 P2:8位準(zhǔn)雙向I/O口,可驅(qū)動4個LSTTL負(fù)載 P3:8

16、位準(zhǔn)雙向I/O口,可驅(qū)動4個LSTTL負(fù)載,42,2. 信號引腳的第二功能 - 引腳“復(fù)用”,可概況為:,“一組與三個”,一組:P3口,三個:9腳RST/VPD 30腳-ALE/PROG 31腳-EA/VPP,43,第二節(jié)內(nèi)部存儲器,MCS-51單片機(jī)的存儲器結(jié)構(gòu)特點,(1)數(shù)據(jù)存儲區(qū)與程序存儲區(qū)完全分開,且各有自己的一套系統(tǒng),(2)分為內(nèi)外存儲器,44,存儲器的配置情況:,物理上:片內(nèi)程序存儲器、片外程序存儲器 片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器,邏輯上:片內(nèi)外統(tǒng)一的64KB的程序存儲器 片內(nèi)數(shù)據(jù)存儲器 64KB片外數(shù)據(jù)存儲器,45,內(nèi)部數(shù)據(jù)存儲器 物理上分為3塊: 00H7FH(0127)低1

17、28字節(jié)RAM; 80HFFH(128255)高128字節(jié)RAM 同上128字節(jié)專用寄存器(SFR)塊,SFR,RAM,RAM,0FFH,80H,7FH,00H,0FFH,80H,46,(1) 寄存器區(qū),內(nèi)部數(shù)據(jù)存儲器低128單元 按用途可分為3個區(qū)域:,(2) 位尋址區(qū),(3) 用戶RAM區(qū),47,(1) 寄存器區(qū),內(nèi)部數(shù)據(jù)存儲器低128單元 按用途可分為3個區(qū)域:,4組寄存器組(R0R7) 由PSW中的RS1和RS0位確定當(dāng)前工 作寄存器組 兩種訪問通用寄存器的形式: MOVR0,09H MOV08H,09H,48,(3) 用戶RAM區(qū),(2) 位尋址區(qū),16個RAM單元、128位 既可進(jìn)

18、行字節(jié)操作,也可進(jìn)行位操作 兩種訪問位的形式: SETB0FH SETB21H.7,用于存放用戶數(shù)據(jù)或作為堆棧區(qū)使用。,49,內(nèi)部數(shù)據(jù)存儲器高128單元(SFR),1. 專用寄存器簡介,(1)程序計數(shù)器 PC,16位程序地址寄存器 存放下一條要執(zhí)行的指令地址 具有自動加1功能 沒有地址,不可尋址,(2)累加器 A,8位寄存器 存放操作數(shù)或結(jié)果 數(shù)據(jù)傳送中轉(zhuǎn)站 作為變址寄存器,50,(3)B寄存器,(4)程序狀態(tài)字 PSW,8位寄存器 主要用于乘除運算 ABBA A/BAB,例如:MOVA,05H MOVB,03H MULAB DIVAB,AC、OV、P的狀態(tài)在指令執(zhí)行過程中自動形成;CY的狀態(tài)

19、在執(zhí)行算術(shù)和邏輯指令時,可以被硬件或軟件置位或清除;F0、RS1、RS0由軟件設(shè)置。,51,CY進(jìn)位標(biāo)志位,AC輔助進(jìn)位標(biāo)志位,F0用戶標(biāo)志位 由用戶根據(jù)程序執(zhí)行的需要通過傳送指令確定。,在位操作中,充當(dāng)累加器。,如:RLCA,在某些邏輯運算中也會影響到進(jìn)位標(biāo)志位。,如:ANLC,bit,52,OV溢出標(biāo)志位 帶符號數(shù)加減運算: 超出(128-127)范圍,置位 乘法運算: 乘積超過255,置位 除法運算: 除數(shù)為0,置位,RS1、RS0寄存器組選擇位 用于選擇當(dāng)前工作通用寄存器組 有利于程序中保護(hù)現(xiàn)場。,例如:MOVPSW,08H MOVR0,43H,53,例:設(shè)程序執(zhí)行前F00,RS1RS

20、000B,請問機(jī)器執(zhí)行如下程序后 MOVA,0FH ADDA,F(xiàn)8H PSW中各位的狀態(tài)是什么?,答:PSWC1H,P奇偶標(biāo)志位 表明累加器中1的個數(shù)的奇偶性。 01的個數(shù)為偶數(shù); 11的個數(shù)為奇數(shù);,54,(5)數(shù)據(jù)指針 DPTR,唯一供用戶使用的16位寄存器 由DPH、DPL拼成 可用來存放片內(nèi)ROM、片外ROM和片外RAM的地址 訪問外部數(shù)據(jù)存儲器時作地址指針使用 MOVXA,DPTR 訪問程序存儲器時作為基址寄存器使用 MOVCA,ADPTR,例如:將片外RAM2000H單元中的數(shù)據(jù)X,取入累加器。 MOVDPTR,2000H MOVXA,DPTR,55,2、 專用寄存器的字節(jié)尋址,根

21、據(jù)不同的型號,可字節(jié)尋址的專用寄存器個數(shù)不同。8051、80C51、8031等有21個;8052等有26個。 分布不連續(xù)。 PC不可尋址。 只能使用直接尋址方式。,56,3、 專用寄存器的位尋址,80C51的位尋址空間: 位尋址區(qū)(128位) + 專用寄存器可位尋址區(qū)(83位)211位,57,MCS51的堆棧操作,堆棧本身是數(shù)據(jù)結(jié)構(gòu)范疇內(nèi)的一種線性表結(jié)構(gòu) 在物理上表現(xiàn)為一個特定的存儲區(qū)域 采用LIFO(FILO)的存取規(guī)則,(1) 堆棧的功用,現(xiàn)場保護(hù)和斷點保護(hù),數(shù)據(jù)的臨時存放,常用在編程過程中,(2) 堆棧的開辟,堆棧只能開辟在內(nèi)部數(shù)據(jù)存儲器中的低128字節(jié)中。 最好設(shè)置在用戶RAM區(qū)(30

22、H7FH),注意:在編程中盡量少的運用多級子程序嵌套和多重中斷,58,(3) 堆棧指示器(SP),功能:用于存放堆棧的棧頂?shù)刂贰?(4) 堆棧類型,(5) 堆棧使用方式,自動方式 指令方式,59,內(nèi)部程序存儲器,80C51中含有4KB的ROM單元作為程序存儲器。地址為 0000H0FFFH,其中位于存儲區(qū)前部的43個單元為系統(tǒng)保留區(qū),分為6個特殊功能區(qū)。地址為 0000H002AH,0000H0002H為系統(tǒng)啟動單元 0003H000AH為外部中斷0中斷地址區(qū) 000BH0012H為定時器/計數(shù)器0中斷地址區(qū) 0013H001AH為外部中斷1中斷地址區(qū) 001BH0022H為定時器/計數(shù)器1中

23、斷地址區(qū) 0023H002AH為串行中斷地址區(qū),60,第三節(jié)并行輸入/輸出口電路,MCS-51系列共有4個8位并行雙向口。分別表示為P0、P1、P2、P3。 每個I/O端口內(nèi)部都有一個8位數(shù)據(jù)輸出鎖存器和一個8位數(shù)據(jù)輸入緩沖器。 其中四個數(shù)據(jù)輸出鎖存器和端口號同名,且為SFR中的一個。,61,1、P0口,字節(jié)地址80H,位地址80H87H,可作為地址/數(shù)據(jù)線,也可作為通用I/O口。,A1,A2,62,2、P1口,字節(jié)地址90H,位地址90H97H,只可作為通用I/O口。,63,3、P2口,字節(jié)地址0A0H,位地址0A0H0A7H,既可作為高8位地址線使用,又可作為通用I/O口使用。一般不作數(shù)據(jù)

24、傳送工作。,64,4、P3口,字節(jié)地址0B0H,位地址0B0H0B7H,只可作為通用I/O口。主要用于第二功能控制邏輯。,65,第四節(jié)時鐘電路與時序,(1)振蕩脈沖信號的產(chǎn)生,什么是時鐘電路? 時鐘電路就是用來產(chǎn)生單片機(jī)工作所需要的時鐘信號的電路。,1、時鐘信號的產(chǎn)生,66,(2)MCS-51各時鐘信號的產(chǎn)生,2、 外部脈沖信號的引入,注意:振蕩電路產(chǎn)生的振蕩脈沖并不是直接拿來使用的,而是經(jīng)分頻后再為系統(tǒng)所用的!,原因:在多片單片機(jī)系統(tǒng)中,為了使單片機(jī)之間時鐘信號同步。,注意:外時鐘信號電平持續(xù)時間應(yīng)大于20ns,且脈沖頻率應(yīng)低于12MHZ!,67,4個:節(jié)拍(P)、狀態(tài)(S)、機(jī)器周期、指令

25、周期,MCS-51共有111條指令。按長度分為單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。不同的指令可以在不同的機(jī)器周期內(nèi)完成。,時序定時單位,典型指令時序,節(jié)拍(P)振蕩脈沖的周期。 狀態(tài)(S)振蕩周期的2倍。 機(jī)器周期振蕩周期的12倍。 指令周期執(zhí)行一條指令需要的時間。,時序關(guān)系:1個機(jī)器周期6個狀態(tài)12個振蕩周期(節(jié)拍),68,69,第五節(jié)工作方式,1、復(fù)位方式和復(fù)位電路,(1) 復(fù)位操作,功能:,初始化單片機(jī),使其進(jìn)行工作狀態(tài),系統(tǒng)重新啟動,程序計數(shù)器和特殊功能寄存器復(fù)位狀態(tài),注意:復(fù)位后,ALE變?yōu)榈碗娖?,PSEN變?yōu)楦唠娖剑?70,(2) 復(fù)位信號及其產(chǎn)生,片內(nèi)復(fù)位電路在每個機(jī)器周期的S5

26、P2時刻對施密特觸發(fā)器進(jìn)行采樣,以確定是否有復(fù)位操作發(fā)生。,(3) 復(fù)位方式,上電自動復(fù)位,手動復(fù)位,71,2、程序執(zhí)行方式,2個方式:單步執(zhí)行工作方式 連續(xù)執(zhí)行工作方式,(1) 單步執(zhí)行工作方式 單片機(jī)在控制面板上的單步執(zhí)行鍵控制下一條一條地執(zhí)行用戶程序中的指令。,利用單片機(jī)外部中斷功能實現(xiàn) 主要用于用戶程序調(diào)試,(2) 連續(xù)執(zhí)行工作方式 所有單片機(jī)都需要的一種工作方式。,72,3、低功耗方式,(1) 待機(jī)方式,PCON.0 - IDL標(biāo)志位 “1”有效,振蕩器保持工作,保證中斷邏輯、串行口和定時器/計數(shù)器電路時鐘,中斷方式退出,(2) 掉電保護(hù)方式,PCON.1 - PD標(biāo)志位 “1”有效

27、,只保證內(nèi)部RAM數(shù)據(jù)不丟失,數(shù)據(jù)轉(zhuǎn)存 - “掉電中斷” 接通備用電源 - 支持內(nèi)部RAM 數(shù)據(jù),現(xiàn)實方法:,硬件復(fù)位方式退出,73,4、EPROM的編程和校驗方式,EPROM編程:利用特殊的手段將用戶程序?qū)懭雴纹瑱C(jī)內(nèi)部 的EPROM。 校驗:對寫入的程序代碼連續(xù)讀出校驗的過程。,8751H片內(nèi)含有4KB的EPROM,具有編程、校驗和保密編程等工作方式。,74,(1) 編程方式,(2) 程序校驗方式,(3) 加密方式,8751一旦完成保密編程以后,用戶可以讓它自由執(zhí)行EPROM中的程序,但不能以任何形式讀出和對它進(jìn)行局部修改。,75,第三章MCS51單片機(jī)指令系統(tǒng),MCS51單片機(jī)指令格式和尋

28、址方式 MCS51單片機(jī)指令分類介紹,76,第一節(jié)指令格式和尋址方式,1、指令系統(tǒng)概述,指令計算機(jī)適用于控制各功能部件完成某一指定動作 的指示和命令。,指令系統(tǒng)指令的集合,因機(jī)器而異。 如:Z80有150條基本指令 Intel8080有70條基本指令 MCS51有111條基本指令,指令的三種表示形式: 二進(jìn)制形式直接為CPU執(zhí)行 16進(jìn)制形式閱讀和書寫 匯編形式編寫程序,77,2、MCS-51 單片機(jī)指令格式,操作碼,操作數(shù)或操作數(shù)地址,(1)一字節(jié)指令(49) (2)二字節(jié)指令(45) (3)三字節(jié)指令(17),如:INCDPTR和MOVA,Rn,如:MOVA,data,如:MOVDPTR,

29、data16 和 MOV direct,#data,標(biāo)號:操作碼操作數(shù)1,操作數(shù)2,操作數(shù)3;注釋,78,(1) 寄存器尋址,特點:指令碼中含有操作數(shù)所在的寄存器號。MCS51 根據(jù)該寄存器可找到操作數(shù)。,范圍:,通用寄存器R0R7,部分專用寄存器(A、B、DPTR等),(2) 直接尋址,范圍:只限于內(nèi)部RAM和專用寄存器,3、MCS-51 單片機(jī)尋址方式,尋址方式:如何指定操作數(shù)的所在單元,特點:指令碼中含有操作數(shù)地址。機(jī)器通過該地址尋 找操作數(shù)。,79,(4) 立即尋址,特點:指令碼中含有操作數(shù)。,(3) 寄存器間接尋址,特點:指令碼中含有操作數(shù)地址所在的寄存器號。機(jī)器 通過寄存器可找到操

30、作數(shù)地址,再根據(jù)該地址可 找到操作數(shù)。,范圍:,內(nèi)部RAM低128單元 (只能使用R0和R1),外部RAM (使用DPTR、R0或R1),例:MOVA,R0,80,(5) 變址尋址,特點:操作數(shù)地址基地址地址偏移量; 指令碼中隱含存放基地址的寄存器號(PC/DPTR); DPTR/PC中的基地址常常是表格始地址, A中存放偏移量rel。,功能:主要用于訪問程序存儲器中的數(shù)據(jù)表格。,例:MOVA,ADPTR,81,(6) 位尋址,特點:操作數(shù)是可尋址位,指令碼中含有位地址。,范圍:,內(nèi)部RAM中的20H 2FH位尋址區(qū),高128單元中的可位尋址專用寄存器,表示方法:直接使用位地址 位名稱表示方法

31、 單元地址加位數(shù)表示方法 專用寄存器符號加位數(shù)的表示方法,(7) 相對尋址,功能:主要用于解決程序中的轉(zhuǎn)移問題,特點:目的地址 = 轉(zhuǎn)移指令地址+轉(zhuǎn)移指令字節(jié)數(shù)+REL,注意:在程序中,相對地址偏移量常用符號表示。,82,4、MCS-51 單片機(jī)尋址方式小結(jié),對片內(nèi)外程序存儲器只能使用變址尋址方式,內(nèi)部數(shù)據(jù)存儲器尋址方式靈活,外部數(shù)據(jù)存儲器只能使用寄存器間接尋址方式,83,第二節(jié)指令分類介紹,指令格式中符號意義說明,通用格式:MOV ,;,特點:源操作數(shù)和目的操作數(shù)都在內(nèi)部RAM中。,1、內(nèi)部RAM數(shù)據(jù)傳送指令組(16條),(1)立即數(shù)傳送指令 (2)直接型數(shù)據(jù)傳送指令 (3)寄存器尋址型數(shù)據(jù)

32、傳送指令 (4)寄存器間址型數(shù)據(jù)傳送指令,數(shù)據(jù)傳送類指令,84,指令通式: MOV A,#data MOV Rn,#data MOV Ri,#data MOV direct,#data MOV DPTR,#data16,例如:請編程完成將數(shù)據(jù)X送到20H單元的操作,1. MOV R0,#20H MOV R0,#X,2. MOV 20H,#X,85,指令通式: MOV A,direct MOV direct,A MOV Ri,direct MOV Rn,direct MOV direct2,direct1,例如:已知(40H)=X,編程完成將X送到50H單元。,1. MOV R0,#50H MO

33、V R0,40H,2. MOV 50H,40H,86,指令通式: MOV A,Rn MOV Rn,A MOV direct,Rn 特點: 指令碼中含有Rn的寄存器號,例如:已知R7=X,編程完成將X送到20H單元。,1. MOV A,R7 MOV 20H,A,2. MOV 20H,R7,87,指令通式: MOV A,Ri MOV Ri,A MOV direct,Ri 特點: 指令碼中含有Ri的寄存器號; Ri中應(yīng)預(yù)先放有8位二進(jìn)制地址。,例如:編程完成將20H單元中的數(shù)據(jù)與30H單元中的數(shù)據(jù)之間的交換。,MOV A,20H MOV 20H,30H MOV 30H,A,88,2、外部RAM數(shù)據(jù)傳

34、送指令組(4條),特點:只能使用間接尋址。助記符為MOVX,且須以累加 器A為中介。,說明: 第1、2條指令可在外部RAM的64K范圍內(nèi)尋址; 第3、4條指令能對外部RAM 0000H00FFH范圍尋址。,指令通式: MOVX A,DPTR MOVX DPTR,A MOVX A,Ri MOVX Ri,A,89,例如:已知外部RAM的88H單元中有一數(shù)據(jù)X,試編寫程序?qū)傳送到外部RAM的1818H單元。,MOV R0,#88H MOV DPTR,#1818H MOVX A,R0 MOVX DPTR,A,90,3、程序存儲器數(shù)據(jù)傳送指令組(2條),特點:使用變址尋址。助記符MOVC,也須以累加器

35、A為中 介。單向傳送。,指令通式: MOVC A,A+DPTR MOVC A,A+PC,說明: 兩條指令均為單字節(jié)查表指令; DPTR/PC中存放被查表的初始地址, A中存放被查表的項數(shù)。,91,例3.1以查表方法把累加器中的十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼,并送回累加器中。其查表程序如下: 2000H HBA:INC A 2001H MOVC A,A+PC 2002H RET 2003H DB 30H 2004H DB 31H 2005H DB 32H 200CH DB 39H 200DH DB 41H 200EH DB 42H 2012H DB 46H,92,例:已知累加器A中有一個09范圍內(nèi)

36、的數(shù),試用查表指令編出能查找出該數(shù)平方值表的程序。,方法一 以DPTR為基址寄存器查表。 MOV DPTR,#2000H MOVC A,A+DPTR ORG 2000H DB 0 DB 1 DB 4 DB 9 DB 81 END,93,方法二 以PC為基址寄存器查表。 單元地址 指令碼 ORG 1FFBH 1FFBH 2402H ADD A,#data1FFDH 83H MOVC A,A+PC 1FFEH 80FEH SJMP$ 2000H 00H DB 0 01H DB 1 DB 4 DB 9 DB 81 END,起始地址PC當(dāng)前值data,94,4、數(shù)據(jù)交換指令組(4條),指令通式: XC

37、HA,Rn XCH A, direct XCH A, Ri XCHD A,Ri,說明: 只有累加器A可作目的操作數(shù)。 這幾條指令執(zhí)行后會影響PSW中的P標(biāo)志位。 最后一條指令用作代碼轉(zhuǎn)換。,95,例二:已知50H中有一個09的數(shù),請編程把它變?yōu)橄鄳?yīng)的ASCII碼程序。,MOVR0,50H MOVA,30H XCHD A,R0 MOVR0,A,例一:已知外部RAM的20H單元中有一個數(shù)X,內(nèi)部RAM20H單元中有一個數(shù)Y,試編寫可以使它們互相交換的程序。,MOVR1,20H MOVXA,R1 XCH A, R1 MOVX R0,A,96,5、堆棧操作指令組,指令通式:,說明: 均為雙字節(jié)指令;

38、A和Rn不可直接出現(xiàn)在指令中, A必須用ACC或它的物理地址(E0H), Rn必須用它的物理地址(00H1FH)。,PUSHdirect POP direct,例:利用堆棧作為轉(zhuǎn)存介質(zhì)編寫30H和40H單元中內(nèi)容的互換。,MOV SP, 50H PUSH 30H PUSH 40H POP 30H POP 40H,97,算術(shù)運算類指令,1、加法指令組(不帶CY位加法指令),ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data,注意: (1)目的操作數(shù)只能是累加器A。 (2)參加運算的兩個操作數(shù)必須是8位二進(jìn)制數(shù);操作結(jié)果也是一個8位二進(jìn)制數(shù),且會對PSW中標(biāo)志位產(chǎn)

39、生影響。 (3)若將兩個操作數(shù)看作帶符號數(shù),則根據(jù)OV位判斷結(jié)果是否溢出。,98,例一:(A)=0C2H,(R0)=0A9H,執(zhí)行ADD A,R0指令后,A和PSW中的值是多少?,例二:執(zhí)行下列指令后,A和PSW中的值是多少? MOV A,#5AH ADD A,#6BH,(A)=6BH, (PSW)=85H,(A)=C5H, (PSW)=44H,99,2、帶進(jìn)位加法指令組,ADDC A,Rn ADDC A,direct ADDC A,Ri ADDC A,#data,注意: (1)目的操作數(shù)只能是累加器A。 (2)主要用于多字節(jié)加法運算。 (3)其中所加的CY中的值是指令執(zhí)行前的CY值,不是執(zhí)

40、行中形成的CY值。,例一:(A)=85H,(R0)=30H,(31H)=FFH,CY=1,試問CPU執(zhí)行如下指令后累加器A和CY中的值是多少? (1)ADDC A,R0 (2)ADDC A,31H,100,例二:兩個三字節(jié)無符號數(shù)相加,被加數(shù)放在內(nèi)部RAM20H-22H單元(低位在前),加數(shù)放在內(nèi)部RAM2AH-2CH單元(低位在前)。編程序?qū)崿F(xiàn),將它們計算的結(jié)果放在被加數(shù)單元中。,MOV R0,#20H MOV R1,#2AH MOV R7,#03H CLR C LOOP:MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,LOOP CLR A

41、 ADDC A,#00H MOV R0,A,101,3、帶借位減法指令組,SUBB A,Rn SUBB A,direct SUBB A,Ri SUBB A,#data,注意: (1)在單片機(jī)內(nèi)部,減法操作是在控制器控制下采用補(bǔ)碼加法來實現(xiàn)的。在實際應(yīng)用中,可按二進(jìn)制減法法則進(jìn)行。 (2)MCS-51中沒有不帶借位的減法指令。 (3)進(jìn)行不帶借位減法運算時,可結(jié)合“CLR C”指令應(yīng)用。 (4)若將兩個操作數(shù)看作帶符號數(shù),則根據(jù)OV位判斷結(jié)果是否溢出。,102,例二:判斷執(zhí)行如下程序后累加器A和PSW中的值是多少? CLR C MOV A,#52H SUBB A,#0B4H,例一:(A)=0C9

42、H,(R2)=54H,(CY)=1。試問CPU執(zhí)行指令 SUBB A,R2 后累加器A和PSW中的值是多少?,(A)=74H, (PSW)=04H,(A)=9EH, (PSW)=C5H,103,4、加1指令組,INC A INC Rn INC direct INC Ri INC DPTR,例一:(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H。執(zhí)行下列指令后,各寄存器及單元中的結(jié)果是多少?是否改變了PSW的狀態(tài)? INC A INC R3 INC 30H INC R0,注意: 只有INC A指令可以影響PSW中的奇偶標(biāo)志位P,其它指令不會影響標(biāo)志位

43、。,104,5、減1指令組,DEC A DEC Rn DEC direct DEC Ri,注意: 只有DEC A指令可以影響PSW中的奇偶標(biāo)志位P,其它指令不會影響標(biāo)志位。,105,6、乘除指令組,MUL AB DIV AB,注意: 執(zhí)行這兩條指令,進(jìn)位標(biāo)志CY總是被清“0”,例一:已知兩個8位無符號乘數(shù)分別放在30H和31H單元中,試編出令它們相乘并把積的低8位放入32H單元,高8位放入33H單元的程序。,MOV R0,#30H MOV A,R0 INC R0 MOV B,R0 MUL AB INC R0 MOV R0,A INC R0 MOV R0,B,106,7、十進(jìn)制調(diào)整指令,DA A

44、,功能:用于對BCD碼十進(jìn)制數(shù)加法運算的結(jié)果進(jìn)行修正。,注意: (1)DA指令不影響溢出標(biāo)志。 (2)使用中通常緊跟在加法指令之后,不能跟在減法指令之后。 (3)借助進(jìn)位標(biāo)志可實現(xiàn)多位BCD數(shù)加法結(jié)果的調(diào)整。,例一:試寫出能完成85+59的BCD加法程序,并對其工作過程進(jìn)行分析。,MOV A,#85H ADD A,#59H DA A END,107,例二:已知R0和R1中分別存有BCD被減數(shù)91和BCD減數(shù)36,試編程求它們的BCD差,并存入R3中。,CLR C MOV A,#9AH SUBB A,R1 ADD A,R0 DA A MOV R3,A CLR C END,步驟:(1)求BCD減數(shù)

45、的補(bǔ)數(shù); (2)BCD被減數(shù)加減數(shù)的補(bǔ)數(shù); (3)對和進(jìn)行十進(jìn)制加法調(diào)整。,108,例三:4位壓縮BCD數(shù)的相加程序。設(shè)一個加數(shù)存放在30H、31H單元,另一個加數(shù)存放在32H、33H單元,試編程序?qū)⒑痛娣诺?0H、31H單元。,MOV R0,#30H MOV R1,#32H MOV A,R0 ADD A,R1 DA A MOV R0,A INC R0 INC R1 MOV A,R0 ADDC A,R1 DA A MOV R0,A,109,邏輯運算及移位類指令,1、邏輯與運算指令組,ANL A,Rn ANL A,direct ANL A,Ri ANL A,#data ANL direct,A

46、ANL direct,#data,功能: 主要用于將某存儲單元或累加器A中某幾位清“0”。,例:已知R0中有一個ASCII碼,試通過編程把它變?yōu)锽CD碼。,MOV A,R0 ANL A,#0FH MOV R0,A,110,2、邏輯或運算指令組,ORL A,Rn ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#data,功能: 主要用于將某存儲單元或累加器A中某幾位置“1”。,例:設(shè)(A)=0AAH,P1=0FFH,試通過編程把累加器A中的低4位送入P1口低4位,而P1口高4位不變。,MOV R0 ,A ANL A,#0FH

47、ANL P1,#0F0H ORL P1,A MOV A,R0,111,3、邏輯異或運算指令組,XRL A,Rn XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data,功能: 主要用于將某存儲單元或累加器A中某幾位置取反。,例:已知外部RAM30H中有一數(shù)6EH,試編寫程序令其高4位不變,低4位取反。,MOV R0 ,30H MOVXA,R0 XRL A,#0FH MOVX P0,A,112,4、累加器清零和取反指令組,CLRA CPLA,注意: 其中CPLA取反指令常用于對某個存儲單元或某個存儲區(qū)域中帶符號數(shù)的求補(bǔ)。,例

48、:已知30H單元中有一負(fù)數(shù)X,試寫出求X的補(bǔ)碼的程序。,MOV A,30H CPL A INC A MOV 30H,A,113,5、移位指令組,RL A RR A RLC A RRC A SWAP A,114,例一:已知30H、31單元中有一個16位的二進(jìn)制數(shù)(30H單元為低8位),請通過編程令其擴(kuò)大二倍。,CPL C MOV R1,#30H MOV A,R1 RLC A MOV R1,A INC R1 MOV A,R1 RLC A MOV R1,A,115,例二:在43H、44H單元中有兩個BCD數(shù),請通過編程將它們緊縮成一個字節(jié)并放入43H單元中(其中43H單元中的BCD數(shù)做為緊縮BCD數(shù)

49、的高位)。,MOV R1,#43H MOV A,R1 SWAP A INC R1 ORL A,R1 MOV 43H,A,116,控制轉(zhuǎn)移類指令,1、無條件轉(zhuǎn)移指令組,2、條件轉(zhuǎn)移指令組,3、子程序調(diào)用與返回指令組,4、空操作指令,117,控制轉(zhuǎn)移類指令,LJMP addr16 AJMP addr11 SJMP rel JMP A+DPTR,1、無條件轉(zhuǎn)移指令組,特點:(1)不會影響PSW中的標(biāo)志位。 (2)指令的操作對象是PC的地址。 (3)第2、3條指令是相對轉(zhuǎn)移指令,在子程序中 很有用。,118,長轉(zhuǎn)移指令,LJMP addr16 ;(PC) addr16,例:已知某單片機(jī)監(jiān)控程序起始地址

50、為A080H,試問用什么辦法可使單片機(jī)開機(jī)后自動執(zhí)行監(jiān)控程序。,答:為使開機(jī)后能自動轉(zhuǎn)入A080H處執(zhí)行,應(yīng)在0000H處 存放一條如下指令:LJMP0A080H,說明: (1)把指令碼中的addr16送入PC,使機(jī)器執(zhí)行下條指令時 無條件轉(zhuǎn)移到addr16處執(zhí)行程序。 (2)可以在64KB范圍內(nèi)轉(zhuǎn)移。 (3)一般情況,addr16可用符號地址表示。,119,絕對轉(zhuǎn)移指令,AJMP addr11 ;(PC) (PC)+2,(PC10-0) addr11,例:已知指令KWR:AJMP addr11中,KWR=3100H,addr11=10110100101B,則轉(zhuǎn)移的目標(biāo)地址是多少?,答:程序轉(zhuǎn)

51、移到35A5H處執(zhí)行。,注意: AJMP指令的目標(biāo)轉(zhuǎn)移地址不是與AJMP指令地址在同一個2KB區(qū)域,而是應(yīng)與AJMP指令取出后的PC地址在同一個2KB區(qū)域。,說明:(1)(PC) (PC)+2,確定程序轉(zhuǎn)移的頁面地址。 (2)(PC10-0) addr11,確定程序轉(zhuǎn)移的頁內(nèi)地址。,120,短轉(zhuǎn)移指令,SJMP rel ;(PC) (PC)+2,(PC) (PC)+rel,1、根據(jù)偏移量計算轉(zhuǎn)移的目標(biāo)地址: 例一:835AH SJMP 35H 例二:835AH SJMP 0E7H,答:目標(biāo)地址=835AH+02H+35H=8391H,答:目標(biāo)地址=835AH+02H-19H=8343H,說明:

52、(1)rel是一個8位的帶符號偏移字節(jié)。 (2)rel的取值范圍是-128到+127。 (3)目的地址=(PC)+2+rel。,121,2、根據(jù)目標(biāo)地址計算偏移量: (向高地址轉(zhuǎn)移)rel=目標(biāo)地址-源地址-2 (向低地址轉(zhuǎn)移)rel=(目標(biāo)地址-源地址-2)補(bǔ) =FEH-(源地址-目標(biāo)地址),1000H 7401H STAR:MOV A,#01H 1002H F8H MOV R0,A 1003H 90CF01H LOOP:MOV DPTR,#0CF01H 1017H 80rel SJMP START END,答:rel=E7H。目標(biāo)地址的轉(zhuǎn)移范圍是F99H-1098H,例:有下列程序,請計算

53、SJMP STAR指令碼中的rel,并分 析目標(biāo)地址的轉(zhuǎn)移范圍。,122,變址轉(zhuǎn)移指令,JMP A+DPTR ;(PC) (A)+(DPTR),說明:(1)DPTR中存放目標(biāo)轉(zhuǎn)移地址的基地址,常常是 一張轉(zhuǎn)移指令表的起始地址。 (2)A中存放表的偏移量。 (3)主要用于程序的多分支轉(zhuǎn)移。,123,例:已知累加器A中放有待處理命令,編號0-4,程序存儲器中放有起始地址為PMTB的三字節(jié)長轉(zhuǎn)移指令表。試編一程序能使機(jī)器按照累加器A中的命令編號轉(zhuǎn)去執(zhí)行相應(yīng)的命令程序。,CM:MOV R1,A RL A ADD A,R1 MOV DPTR,#PMTB JMP A+DPTR PMTB:LJMP PM0

54、LJMP PM1 LJMP PM2 LJMP PM3 LJMP PM4 PM0: PM4:,124,控制轉(zhuǎn)移類指令,2、條件轉(zhuǎn)移指令組,累加器判零轉(zhuǎn)移指令 數(shù)值比較轉(zhuǎn)移指令 減1條件轉(zhuǎn)移指令,125,應(yīng)用: (1)對于無符號數(shù)的比較,可直接根據(jù)執(zhí)行后CY位來判斷。 (2)對于帶符號數(shù)的比較,先要確定符號,再判斷。,指令操作情況: (1)若左操作數(shù)=右操作數(shù),則 程序順序執(zhí)行(即:(PC) (PC)+3); 進(jìn)位標(biāo)志清“0”。 (2)若左操作數(shù)右操作數(shù),則 程序轉(zhuǎn)移(即:(PC) (PC)+3+rel); 進(jìn)位標(biāo)志清“0”。 (3)若左操作數(shù)右操作數(shù),則 程序轉(zhuǎn)移(即:(PC) (PC)+3+r

55、el); 進(jìn)位標(biāo)志置“1”。,126,控制轉(zhuǎn)移類指令,3、子程序調(diào)用與返回指令組,絕對調(diào)用指令 長調(diào)用指令 返回指令,127,絕對調(diào)用指令,ACALL addr11 ;(PC) (PC)+2 (SP) (SP)+1,(SP) (PC7-0) (SP) (SP)+1,(SP) (PC15-8) (PC10-0) addr11,說明:(1)與絕對轉(zhuǎn)移指令類似,要求該指令的下一條 指令的第一個字節(jié)與子程序的入口地址必須 在同一個2KB存儲區(qū)內(nèi)。 (2)指令操作過程可分為兩部分: 斷點保護(hù)、構(gòu)造目的地址。 (3)addr11可用符號地址(標(biāo)號)表示。,128,例一:8100H ACALL 48FH,先

56、將PC加2:(PC)=8100H+2=10000B 再替換低11位地址:(PC)=1000010010001111B=848FH,48FH,先將PC加2:(PC)=8F00H+2=1000111100000010B 再替換低11位地址:(PC)=1000110010001111B=8C8FH,48FH,例二:8F00H ACALL 48FH,129,長調(diào)用指令,LCALL addr16 ;(PC) (PC)+3 (SP) (SP)+1,(SP) (PC7-0) (SP) (SP)+1,(SP) (PC15-8) (PC) addr16,說明:(1)主程序和被調(diào)用的子程序可以任意地放在64KB

57、范圍內(nèi)。 (2)指令操作過程可分為兩部分: 斷點保護(hù)、構(gòu)造目的地址。 (3)addr16可用符號地址(標(biāo)號)表示。,130,例:已知:MA=0500H。試問執(zhí)行如下指令 MOV SP,#70H MA:LCALL 8192H SP中數(shù)據(jù)為多少?堆棧中數(shù)據(jù)如何變化?PC中的內(nèi)容 是什么?,答:(SP)=72H,(71H)=03H,(72H)=05H,(PC)=8192H,131,返回指令,RET ;(PC15-8 ) (SP) , (SP) (SP)-1 (PC7-0) (SP) ,(SP) (SP)-1 RETI ;(PC15-8 ) (SP) , (SP) (SP)-1 (PC7-0) (SP

58、) ,(SP) (SP)-1,說明:(1)第1條指令用于子程序返回,只能用于子程序末尾。 (2)第2條指令用于中斷服務(wù)程序返回,只能用于中斷 服務(wù)程序的末尾。 (3)機(jī)器執(zhí)行RETI指令后,還將清除相應(yīng)中斷優(yōu)先級狀 態(tài)位,以允許單片機(jī)響應(yīng)低優(yōu)先級的中斷。,132,例:試?yán)米映绦蚣夹g(shù)編出令20H-2AH、30H-3EH和40H-4FH三個子域清零的程序。,MOV SP,#30H MOV R0,#20H MOV R2,#0BH ACALL ZERO MOV R0,#30H MOV R2,#0FH ACALL ZERO MOV R0,#40H,MOV R2,#10H ACALL ZERO SJMP

59、 $ ZERO:MOV R0,#00H INC R0 DJNZ R2,ZERO RET END,133,控制轉(zhuǎn)移類指令,4、空操作指令,NOP ;(PC) (PC)+1,說明:用于程序的等待或時間的延遲。,134,位操作類指令,1、位傳送指令組,MOV C,bit MOV bit,C,說明:不能進(jìn)行位地址與位地址值之間的傳送。,例:將20H位的內(nèi)容與5AH位相交換,并不改變CY的值。,MOV 10H,C MOV C,20H MOV 21H,C MOV C,5AH MOV 20H,C MOV C,21H MOV 5AH,C,135,2、位置位復(fù)位指令組,SETB C SETB bit CLR C

60、 CLR bit,說明:置位指令是位操作獨有的。,3、位運算指令組,ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit CPL C CPL bit,136,例:試編程完成位地址為10H、11H中的位異或操作,結(jié)果存入12H位。,MOV C,11H ANL C,/10H MOV 12H,C MOV C,10H ANL C,/11H ORL C,12H MOV 12H,C,137,JC rel ;CY位為1轉(zhuǎn)移 JNC rel ;CY位為0轉(zhuǎn)移 JB bit,rel ;bit位為1轉(zhuǎn)移 JNB bit,rel ;bit位為0轉(zhuǎn)移 JBC bit,rel ;bit位為

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論