單片機(jī)經(jīng)典教程.ppt_第1頁
單片機(jī)經(jīng)典教程.ppt_第2頁
單片機(jī)經(jīng)典教程.ppt_第3頁
單片機(jī)經(jīng)典教程.ppt_第4頁
單片機(jī)經(jīng)典教程.ppt_第5頁
已閱讀5頁,還剩251頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程目標(biāo),掌握: 單片微型機(jī)的基本工作原理 匯編語言程序設(shè)計(jì)方法 單片微型計(jì)算機(jī)應(yīng)用 單片微型計(jì)算機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)方法,單片機(jī)原理與應(yīng)用,第一章 緒 論,本講重點(diǎn): 微處理器、微機(jī)和單片機(jī)的基本概念、 單片機(jī)的發(fā)展、常用系列簡(jiǎn)介、應(yīng)用。 講授內(nèi)容: 本章主要介紹單片機(jī)的結(jié)構(gòu)特點(diǎn)、單片機(jī)的發(fā)展及常用系列和單片機(jī)的應(yīng)用領(lǐng)域等。重點(diǎn)介紹單片機(jī)的特點(diǎn)以及在各領(lǐng)域中的應(yīng)用。,回 顧:有關(guān)微型計(jì)算機(jī)的基礎(chǔ)知識(shí),硬件:微處理器,存儲(chǔ)器,總線,I/O接口 軟件:系統(tǒng)軟件,應(yīng)用軟件,第一節(jié) 單片機(jī)的特點(diǎn)與發(fā)展概述,一、微處理器、微機(jī)和單片機(jī)的概念 微處理器(Microprocessor)微型計(jì)算機(jī)的控制和運(yùn)算器部

2、分; 微型計(jì)算機(jī)(Microcomputer)有完整運(yùn)算及控制功能的計(jì)算機(jī),包括微處理器、存儲(chǔ)器、輸入/輸出(I/O)接口電路以及輸入/輸出設(shè)備等; 單片機(jī)(single chip microcomputer)直譯為單片微型計(jì)算機(jī),它將CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器、輸入/輸出(I/O)接口電路、中斷、串行通信接口等主要計(jì)算機(jī)部件集成在一塊大規(guī)模集成電路芯片上,組成單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī) 。,單片機(jī)的形態(tài)只是一塊芯片,但是它已具有了微型計(jì)算機(jī)的組成結(jié)構(gòu)和功能。由于單片機(jī)的結(jié)構(gòu)特點(diǎn),在實(shí)際應(yīng)用中常常將它完全融入應(yīng)用系統(tǒng)之中,故而也有將單片機(jī)稱為嵌入式微控制器(embedded micr

3、ocon-troller)。,單片機(jī)有2種基本結(jié)構(gòu)形式: 一種是在通用微型計(jì)算機(jī)中廣泛采用的將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合用一個(gè)存儲(chǔ)空間的結(jié)構(gòu),稱為普林斯頓(Princeton)結(jié)構(gòu)或稱馮諾依曼結(jié)構(gòu); 另一種是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開,分別尋址的結(jié)構(gòu),稱為哈佛(Har-vard)結(jié)構(gòu)。Intel公司的MCS-51和80C51系列單片機(jī)采用的是哈佛結(jié)構(gòu)。目前的單片機(jī)以采用程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開的結(jié)構(gòu)較多。 單片機(jī)的中央處理器(CPU)和通用微處理器基本相同,只是增設(shè)了“面向控制”的處理功能。例如:位處理、查表、多種跳轉(zhuǎn)、乘除法運(yùn)算、狀態(tài)檢測(cè)、中斷處理功能等,增強(qiáng)了控制的實(shí)用性和靈活性

4、。,二、 單片機(jī)的一般結(jié)構(gòu)及特點(diǎn),1)存儲(chǔ)結(jié)構(gòu)為哈佛結(jié)構(gòu),將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開;,單片機(jī)結(jié)構(gòu)特點(diǎn)小結(jié):,4)面向控制,位處理功能強(qiáng)。,3)芯片引腳具有復(fù)用功能;,2)片內(nèi)接口電路豐富,由特殊功能寄存器管理;,三、單片機(jī)的發(fā)展過程概述,單片機(jī)作為嵌入式微控制器在工業(yè)測(cè)控系統(tǒng)、智能儀器和家用電器中得到廣泛應(yīng)用。雖然單片機(jī)的品種很多,但其中最具有代表性的是Intel公司的MCS-51系列單片機(jī),以及其與之兼容的派生系列芯片。Intel 8位單片機(jī)的發(fā)展經(jīng)歷了以下3代: 第一代:以1976年推出的MCS-48系列為代表。 第二代:以MCS-51的8051為代表的單片機(jī), 第三代:以80C51系

5、列為代表。,一般根據(jù)控制應(yīng)用需要: 又可設(shè)計(jì)成通用單片機(jī)、專用單片機(jī) 按內(nèi)部數(shù)據(jù)總線的寬度: 單片機(jī)分為4位、8位、16位及32位等。,第二節(jié) 常用單片機(jī)系列簡(jiǎn)介,一、ATMEL單片機(jī) ATMEL公司所生產(chǎn)的ATMEL89系列單片機(jī)(簡(jiǎn)稱89系列單片機(jī)),就是基于Intel公司的MCS-5l系列而研制的,該公司的技術(shù)優(yōu)勢(shì)在于Flash存儲(chǔ)器技術(shù)。 標(biāo)準(zhǔn)型單片機(jī)有:AT89C51,AT89LV51,AT89C52,AT89LV52; 低檔型單片機(jī)有:AT89C1051和AT89C2051兩種型號(hào)。它們的CPU內(nèi)核和AT89C51是相同的,但并行I/O較少; 高檔型單片機(jī)有:AT89S52,這是一

6、種可下載的Flash單片機(jī)。它和IBM微機(jī)通信進(jìn)行下載程序十分方便。,二、Philips單片機(jī) Philips公司的的單片機(jī)都屬于MCS-51系列兼容的單片機(jī)。從內(nèi)部結(jié)構(gòu)看可以劃分為兩大類,8位機(jī)與80C51兼容系列和16位機(jī)XA系列。Philips公司的的單片機(jī)8位機(jī)的主要產(chǎn)品型號(hào)有P80CXX、P87CXX和P89CXX系列,16位機(jī)的主要產(chǎn)品型號(hào)有PXACXX、PXAGXX和PXASXX等。 三、Maxim-Dallas單片機(jī) 四、WinBond單片機(jī) 五、Motorola單片機(jī) 六、其他公司的單片機(jī) 1)NEC單片機(jī); 2)東芝單片機(jī); 3)Epson單片機(jī); 4) PIC單片機(jī) M

7、icrochip公司,第三節(jié) 單片機(jī)的應(yīng)用領(lǐng)域及發(fā)展,一、單片機(jī)在智能儀器中的應(yīng)用 智能化儀器內(nèi)部基本上都是用單片機(jī)進(jìn)行信息控制與處理。特別是近年來出現(xiàn)的數(shù)字信號(hào)處理器DSP是一種速度極高的單片機(jī),它在通信和高速信息處理中起了極大的作用,從而擴(kuò)展了單片機(jī)在智能儀器中的應(yīng)用。 二、單片機(jī)在過程控制中的應(yīng)用,三、單片機(jī)與e-Home,在家用網(wǎng)絡(luò)系統(tǒng)HNS(home networked system) 中,對(duì)家用電器提出了“個(gè)性化”和“社會(huì)化”的要求。 家用電器的嵌入式結(jié)構(gòu)有單核嵌入和雙核嵌入2種。例如:一般電腦電飯煲,內(nèi)部只有一個(gè)單片機(jī),這種控制系統(tǒng)是單核嵌入;對(duì)于分體式空調(diào),室內(nèi)機(jī)與室外機(jī)中分別

8、有1個(gè)單片機(jī),為雙核嵌入結(jié)構(gòu)。 四、單片機(jī)與Internet Internet技術(shù)已經(jīng)深入到日常生活和工作中。各類家用電器和智能裝置,它們的“心臟”多是單片機(jī),由于單片機(jī)芯片品種達(dá)數(shù)百種,其硬件結(jié)構(gòu)和指令系統(tǒng)各不相同,不能像PC機(jī)那樣通過標(biāo)準(zhǔn)的硬件接口和接口軟件直接接入Internet網(wǎng)絡(luò)。,五、單片機(jī)的發(fā)展,1)強(qiáng)化指令功能 2)增加各種接口部件 3)提高專用程度,補(bǔ)充內(nèi)容:計(jì)算機(jī)系統(tǒng)中的數(shù)制、碼制復(fù)習(xí),2、帶符號(hào)數(shù)的表示法 3、原碼、反碼、補(bǔ)碼 特點(diǎn): 8位二進(jìn)制數(shù)表示原碼、反碼、補(bǔ)碼的范圍 (-127+127、-127+127、-128+127) 補(bǔ)碼的運(yùn)算 在微型計(jì)算機(jī)中,帶符號(hào)數(shù)用補(bǔ)

9、碼表示,減法可用補(bǔ)碼相加來實(shí)現(xiàn),運(yùn)算結(jié)果為補(bǔ)碼。,1、數(shù)制及其互換 數(shù)制 基數(shù) 字符 二進(jìn)制 (B) 十進(jìn)制 (D) 十六進(jìn)制 9 (H),第二章 MCS-51單片機(jī)的硬件結(jié)構(gòu)與工作原理,主要內(nèi)容: 1.MCS-51單片機(jī)組成(結(jié)構(gòu)、引腳功能) 2.并行I/O端口結(jié)構(gòu) 3.儲(chǔ)器組織與操作 4.MCS-51單片機(jī)的中斷系統(tǒng) 1)中斷系統(tǒng)概述 2)中斷的處理過程,重點(diǎn)理解: 1 . MCS-51系列單片機(jī)存儲(chǔ)器結(jié)構(gòu)特點(diǎn) 2. 單片機(jī)特殊功能寄存器的作用 3. 不同場(chǎng)合下單片機(jī)引腳的復(fù)用功能 4 . 單片機(jī)的位處理功能及其作用,一、MCS51單片微機(jī)的硬件組成 1、MCS51系列單片機(jī)的主要特性 1

10、) 8位字長(zhǎng)CPU和指令系統(tǒng)。 2) 1個(gè)片內(nèi)時(shí)鐘振蕩器和時(shí)鐘電路。 3) 64K外部數(shù)據(jù)存儲(chǔ)器的地址空間。 4) 64K外部程序存儲(chǔ)器的地址空間。 5) 32條雙向且分別可位尋址的IO口線。 6) 128字節(jié)的片內(nèi)RAM(52子系列為256字節(jié))。 7) 2個(gè)16位定時(shí)器計(jì)數(shù)器(52子系列為3個(gè))。 8) 具有2個(gè)優(yōu)先級(jí)的5個(gè)中斷源結(jié)構(gòu)(52子系列有6個(gè))。 9) 1個(gè)全雙工串行口。 10) 1個(gè)布爾處理器。,第一節(jié) MCS-51單片機(jī)的基本組成,2. MCS51單片機(jī)的內(nèi)部結(jié)構(gòu),MCS51單片機(jī)的功能模塊框圖如圖所示。,MCS-51單片機(jī)由8位CPU、只讀存儲(chǔ)器EPROMROM、讀寫存儲(chǔ)器

11、RAM、并行IO口、串行IO口、定時(shí)器計(jì)數(shù)器、中斷系統(tǒng)、振蕩器和時(shí)鐘電路等部分組成。各部分之間通過內(nèi)部總線相連。,MCS51的內(nèi)部結(jié)構(gòu)框圖,二、MCS51單片機(jī)的引腳功能,40腳分三類: 1、電源線和時(shí)鐘信號(hào)線共4根 VCC,GND電源和地+5V電源供電, X1時(shí)鐘振蕩器輸入端,內(nèi)部振蕩器輸入端; X2時(shí)鐘振蕩器輸出端,內(nèi)部振蕩器輸出端; 2、控制線4根 RST復(fù)位信號(hào),晶振工作后2個(gè)機(jī)器周期的高電平復(fù)位CPU. ALE地址鎖存信號(hào)訪問外部存儲(chǔ)器時(shí)該信號(hào)鎖存低8位地址;無RAM時(shí),ALE為晶振6分頻; PSEN外部程序存儲(chǔ)器讀從程序存儲(chǔ)器中取指令或讀取數(shù)據(jù)時(shí),該信號(hào)有效。 EA程序存儲(chǔ)器有效地

12、址,EA=1從內(nèi)部開始執(zhí)行程序;EA=0從外部開始執(zhí)行程序; 3、I/O口線32根- MCS-51系列單片機(jī) P0、P1、P2、P3共32位,對(duì)應(yīng)著芯片的32根引腳。,三、振蕩器、時(shí)鐘電路及時(shí)序,1.時(shí)鐘電路 MCS5l單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTALl和XTAL2分別是反相放大器的輸入端和輸出端,由這個(gè)放大器與作為反饋元件的片外晶體或陶瓷諧振器一起構(gòu)成了一個(gè)自激振蕩器,如圖24所示。這種方式形成的時(shí)鐘信號(hào)稱為內(nèi)部時(shí)鐘方式。圖25所示,為外部時(shí)鐘方式。,2. 有關(guān)單片機(jī)CPU的時(shí)序,1)振蕩周期 指為單片機(jī)提供定時(shí)信號(hào)的振蕩源的周期,若為內(nèi)部產(chǎn)生方式時(shí),為石英晶體

13、的振蕩周期。 2)時(shí)鐘周期 也稱為狀態(tài)周期,用S表示。時(shí)鐘周期是計(jì)算機(jī)中最基本的時(shí)間單位,在一個(gè)時(shí)鐘周期內(nèi),CPU完成一個(gè)最基本的動(dòng)作。MCS51單片機(jī)中一個(gè)時(shí)鐘周期為振蕩周期的2倍。 3)機(jī)器周期 完成一個(gè)基本操作(例如,取指令、存儲(chǔ)器讀、存儲(chǔ)器寫等)所需要的時(shí)間稱為機(jī)器周期。MCS51的一個(gè)機(jī)器周期含有6個(gè)時(shí)鐘周期。 4)指令周期 完成一條指令所需要的時(shí)間稱為指令周期。MCS5l的指令周期含14個(gè)機(jī)器周期不等,其中多數(shù)為單周期指令,還有2周期和4周期指令。4周期指令只有乘、除兩條指令。,MCS-51單片機(jī)各種周期的相互關(guān)系,第二節(jié) 并行I/O接口,MCS5l單片機(jī)內(nèi)有四個(gè)8位并行IO端口,

14、為P0、P1、P2和P3。每個(gè)端口都是8位準(zhǔn)雙向IO口,共占32根引腳。每個(gè)端口都包含一個(gè)鎖存器、一個(gè)輸出驅(qū)動(dòng)器和一個(gè)輸入緩沖器。,一、并行I/O接口的內(nèi)部結(jié)構(gòu),IO口的每位鎖存器均由D觸發(fā)器組成,用來鎖存輸出的信息。在CPU的“寫鎖存器”信號(hào)驅(qū)動(dòng)下,將內(nèi)部總線上的數(shù)據(jù)寫入鎖存器中。,P0口某位的結(jié)構(gòu)圖,當(dāng)由P0口輸入數(shù)據(jù)時(shí),由于外部輸入信號(hào)既加在緩沖輸入端上,又加在驅(qū)動(dòng)電路的漏極上。如果這時(shí)T2是導(dǎo)通的,則引腳上的電位始終被鉗位在0電平上,輸人數(shù)據(jù)不可能正確地讀人。因此,在輸入數(shù)據(jù)時(shí),應(yīng)先把P0口置1,使兩個(gè)輸出FET均關(guān)斷,使引腳“浮置”,成為高阻狀態(tài),這樣才能正確地插人數(shù)據(jù)。這就是所謂的

15、準(zhǔn)雙向口。,P1口也是個(gè)準(zhǔn)雙向IO口,與P0口不同的是,沒有多路開關(guān)MUX和控制電路部分。輸出驅(qū)動(dòng)電路只有一個(gè)FET場(chǎng)效應(yīng)管,同時(shí)內(nèi)部帶上拉電阻,此電阻與電源相連。P1口可作通用雙向IO口用,而不必再外接上拉電阻。,P2口在結(jié)構(gòu)上比P0口少了一個(gè)輸出轉(zhuǎn)換控制部分,多路開關(guān)MUX的倒向由CPU命令控制,且P2口內(nèi)部接有固定的上拉電阻。,P3口與Pl口的輸出驅(qū)動(dòng)部分及內(nèi)部上拉電阻相同,但比P1口多了一個(gè)第二功能控制部分的邏輯電路由一個(gè)與非門和一個(gè)輸入緩沖器組成,AT89S52的P0口8個(gè)I/O最大電流總和是26毫安,P1、P2、P3口各自8個(gè)I/O最大電流總和都是15毫安。所有I/O口的電流總和不

16、能超過71毫安。單個(gè)I/O口最大瞬時(shí)電流是10毫安(以上是數(shù)據(jù)手冊(cè)里的極限值,不要超過,應(yīng)該盡量減小電流以免燒I/O口)。紅色發(fā)光二極管導(dǎo)通電壓約是1.8伏,電阻應(yīng)分壓3.2伏,兩個(gè)并聯(lián)的發(fā)光二極管如果負(fù)極接在P0.0口上,26毫安除以8個(gè)I/O口,每個(gè)I/O口是3.25毫安,按3毫安算,3.2伏除以3毫安就是1066歐姆約1K。分壓電阻,P3.0(RXD):串行輸入端。 P3.1(TXD):串行輸出端。 P3.2(INTO):外部中斷0輸入端,低電平有效。 P3.3(INT1):外部中斷1輸入端,低電平有效。 P3.4(T0):定時(shí)計(jì)數(shù)器0外部事件計(jì)數(shù)輸入端。 P3.5(T1):定時(shí)計(jì)數(shù)器1

17、外部事件計(jì)數(shù)輸入端。 P3.6(WR):外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào),低電平有效。 P3.7(RD ):外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào),低電平有效。,P3口每位的第二功能:,P0P3的功能及使用時(shí)的注意事項(xiàng),1. 在無片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這四個(gè)端口的每一位都可以作為準(zhǔn)雙向通用IO端口使用。在具有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,P2口作為高8位地址線,P0口作為雙向總線,分時(shí)作為低8位地址和數(shù)據(jù)的輸入輸出線。,2. P0口作為通用雙向IO口用時(shí),必須外接上拉電阻。,3. P3口除了作通用IO使用外,它的各位還具有第二功能。當(dāng)P3口某一位用于第二功能作輸出時(shí),則不能再作通用IO使用。,4. 當(dāng)P0P3端口用作輸

18、入時(shí),為了避免誤讀,都必須先向?qū)?yīng)的輸出鎖存器寫入“l(fā)” ,使FET截止。然后再讀端口引腳。 如:MOV P1,#0FFH MOV A, P1,單片機(jī)的片外三總線結(jié)構(gòu),第三節(jié) MCS-51單片機(jī)的復(fù)位,MCS5l的RSTVPD引腳是復(fù)位輸入端,其內(nèi)的施密特觸發(fā)器用來抑制噪聲,它的輸出在每個(gè)機(jī)器周期的S5P2由復(fù)位電路采樣一次。在振蕩器運(yùn)行時(shí),RST端至少要保持2個(gè)機(jī)器周期(24個(gè)振蕩周期)為高電平,才完成一次復(fù)位。復(fù)位后片內(nèi)各專用寄存器的狀態(tài)如表21。,幾種實(shí)用的復(fù)位電路,第四節(jié) MCS-51存儲(chǔ)器組織與操作,MCS51系列單片機(jī)其存儲(chǔ)結(jié)構(gòu)特點(diǎn)是: 將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開,并有各自的尋址

19、機(jī)構(gòu)和尋址方式,這種結(jié)構(gòu)的單片微機(jī)稱為哈佛型結(jié)構(gòu)單片微機(jī)。 在物理上 有4個(gè)相互獨(dú)立的存儲(chǔ)空間: 片內(nèi)和片外程序存儲(chǔ)器;片內(nèi)和片外數(shù)據(jù)存儲(chǔ)器。 在邏輯上 有三個(gè)彼此獨(dú)立的地址空間: 1、片內(nèi)外統(tǒng)一編地址的64KB程序存儲(chǔ)器地址間; 2、256字節(jié)的片內(nèi)數(shù)據(jù)存儲(chǔ)器地址空間; 3、64KB片外數(shù)據(jù)存儲(chǔ)器地址空間,MCS5l系列存儲(chǔ)器地址空間分配圖,一、 MCS51程序存儲(chǔ)器地址空間,7個(gè)特殊單元: 0000H 復(fù)位后,PC=0000H. 開始執(zhí)行程序 0003H 外部中斷0 (INT0)入口 000BH 定時(shí)器0中斷( TF0)入口 0013H 外部中斷1(INT1) 入口 001BH 定時(shí)器1中

20、斷( TF1)入口 0023H 串行口中斷TI/RI入口 002BH 定時(shí)計(jì)數(shù)器2溢出或T2EX輸入負(fù)跳變(52系列),程序存儲(chǔ)器用于存放調(diào)試好的應(yīng)用程序和表格常數(shù)。MCS5l采用16位的程序計(jì)數(shù)器PC和l6位的地址總線,64KB片內(nèi)、外的程序存儲(chǔ)器空間連續(xù)、統(tǒng)一 。,二、MCS51數(shù)據(jù)存儲(chǔ)器地址空間,數(shù)據(jù)存儲(chǔ)器地址空間由內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器空間組成。內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器空間存在重疊。 通過不同指令來區(qū)別,內(nèi)部數(shù)據(jù)傳送指令:MOV,外部數(shù)據(jù)傳送指令:MOVX,1、工作寄存器區(qū)( ) 分成4組,每組8個(gè)寄存器R0-R7,2、位尋址區(qū)(20H 2FH ) 既可進(jìn)行字節(jié)尋址,又可進(jìn)行位尋址。這16個(gè)

21、單元共有168128位,對(duì)應(yīng)位地址00H-7FH。 3、通用存儲(chǔ)區(qū)(30H 7FH) 4、外部數(shù)據(jù)存儲(chǔ)器 0000H-FFFFH 范圍為64K字節(jié),采用R0、R1或DPTR寄存器間址方式訪問。,內(nèi)部數(shù)據(jù)存儲(chǔ)器在物理上又可分成三部分:低128字節(jié)RAM、高128字節(jié)RAM(僅80320852才有)和專用寄存器(SFR)。,低128字節(jié)RAM由工作寄存器區(qū)、位尋址區(qū)和通用RAM區(qū)組成。,內(nèi)部數(shù)據(jù)存儲(chǔ)器地址空間,80320852的高128字節(jié)RAM和專用寄存器(SFR)空間重合,通過不同尋址方式區(qū)別,三、特殊功能寄存器地址空間,共有26個(gè)專用寄存器SFR,離散地分布在片內(nèi)RAM的高128字節(jié)地址80

22、H0FFH中。 程序計(jì)數(shù)器PC不占據(jù)RAM單元,在除PC外的專用寄存器SFR中,有12個(gè)專用寄存器既可字節(jié)尋址,又可位尋址(字節(jié)地址為8的整倍數(shù))。,位地址的表示法 例: 位名稱 CY 、RS0 寄存器名加序號(hào) PSW.7 ACC.1 字節(jié)地址加序號(hào) 20H.3 直接位地址 00H,1.累加器ACC 累加器A在大部分的算術(shù)運(yùn)算中存放某個(gè)操作數(shù)和運(yùn)算結(jié)果。 2.寄存器B寄存器B主要用于與累加器A配合執(zhí)行乘法和除法指令的操作。 3.程序狀態(tài)字PSW8位寄存器,用來存放程序狀態(tài)信息。某些指令的執(zhí)行結(jié)果會(huì)自動(dòng)影響PSW的有關(guān)狀態(tài)標(biāo)志位,有些狀態(tài)位可用指令來設(shè)置。,特殊功能寄存器,:進(jìn)位標(biāo)志位 :半進(jìn)位

23、標(biāo) :用戶標(biāo)志位 :工作寄存器組選擇 :溢出標(biāo)志 P :奇偶標(biāo)志,RS1 RS0 寄存器組內(nèi)部RAM地址 0 0 工作寄存器組0 00H07H 0 1 工作寄存器組1 08H0FH 1 0 工作寄存器組2 10H17H 1 1 工作寄存器組3 18H1FH,4.堆棧指針SP 棧指針SP為一個(gè)8位專用寄存器,每存入(或取出)一個(gè)字節(jié)數(shù)據(jù),SP就自動(dòng)加1(或減1),SP始終指向新的棧頂。系統(tǒng)復(fù)位后錢指針初始化為07H。,5.數(shù)據(jù)指針DPTR 16位的專用寄存器,由高位字節(jié)DPH和低位字節(jié)DPL組成??勺鳛橐粋€(gè)16位寄存器使用,也可以作為2個(gè)獨(dú)立的8位寄存器DPH和DPL使用。,6.I/O端口P0P

24、3 專用寄存器P0P3分別是I/O端口P0P3的鎖存器??梢园袸/O口當(dāng)作般的專用寄存器來使用,沒有專門設(shè)置的口操作指令,全部采用統(tǒng)一的MOV指令。,關(guān)于數(shù)據(jù)存儲(chǔ)器,1)根據(jù)地址總線寬度,在片外可擴(kuò)展的存儲(chǔ)器最大容量為64KB,地址范圍為0000HFFFFH。,2)片外數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器的操作使用不同的指令和控制信號(hào),允許兩者的地址重復(fù)。因此,片外要擴(kuò)展的數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器各為64KB。,3)片外數(shù)據(jù)存儲(chǔ)器與片內(nèi)數(shù)據(jù)存儲(chǔ)器的操作指令亦不同(對(duì)片外RAM用MOVX指令),所以也允許兩者的地址重復(fù),內(nèi)部數(shù)據(jù)存儲(chǔ)器的地址00 FFH,外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器的地址可以從0000H FFFFH。,注

25、意:采用R0、R1或DPTR寄存器間址方式訪問片外數(shù)據(jù)存儲(chǔ)器。當(dāng)采用R0、R1間址時(shí)只能訪問低256字節(jié),采用DPTR間址可訪問整個(gè)64K字節(jié)空間。,MCS-51及其5l子系列的其它成員都具有相同的中斷結(jié)構(gòu)。 8051有5個(gè)中斷源2個(gè)外部中斷源INT0和INT1,2個(gè)片內(nèi)定時(shí)器計(jì)數(shù)器溢出中斷源,1個(gè)片內(nèi)串行口中斷源。 分為兩級(jí)高級(jí)中斷和低級(jí)中斷。其中任何一個(gè)中斷源的優(yōu)先級(jí)均可由軟件設(shè)定為高級(jí)或低級(jí),能實(shí)現(xiàn)兩級(jí)中斷服務(wù)程序嵌套 。 都是可屏蔽的,由軟件設(shè)定。,第五節(jié) MCS-51的中斷系統(tǒng),中斷允許寄存器IE控制,中斷優(yōu)先級(jí)寄存器IP控制,中斷觸發(fā)方式位IT控制,一、MCS51的中斷源,1.中斷

26、源 1) 外部中斷0請(qǐng)求,由P3.2引腳輸入??捎捎脩粼O(shè)定為兩種觸發(fā)方式,(電平觸發(fā)方式還是邊沿觸發(fā)方式)。一旦輸入信號(hào)有效,則向CPU申請(qǐng)中斷,并且將中斷標(biāo)志IE0置1。 2) 外部中斷1請(qǐng)求,由P3.3引腳輸入。亦可由用戶設(shè)定為電平觸發(fā)方式還是邊沿觸發(fā)方式。一旦輸人信號(hào)有效,則向CPU申請(qǐng)中斷,并將中斷標(biāo)志IE1置1。,3)片內(nèi)定時(shí)器T0溢出中斷請(qǐng)求。當(dāng)定時(shí)器T0產(chǎn)生溢出時(shí),T0中斷請(qǐng)求標(biāo)志TF0 置1,請(qǐng)求中斷處理。 4)片內(nèi)定時(shí)器T1溢出中斷請(qǐng)求。當(dāng)定時(shí)器T1產(chǎn)生溢出時(shí),T1中斷請(qǐng)求標(biāo)志TF1置l,請(qǐng)求中斷處理。 5)片內(nèi)串行口發(fā)送接收中斷請(qǐng)求。當(dāng)通過串行口發(fā)送或接收完一幀串行數(shù)據(jù)時(shí),

27、串行口中斷請(qǐng)求標(biāo)志TI或RI置1,請(qǐng)求中斷處理。,2.中斷請(qǐng)求標(biāo)志,(1)TCON的中斷標(biāo)志 TCON是專用寄存器,字節(jié)地址為88H,它鎖存了外部和的中斷請(qǐng)求標(biāo)志及T0和T1的溢出中斷請(qǐng)求標(biāo)志,1)IT0:選擇外部中斷0(INT0)觸發(fā)方式控制位。 IT0=0 INT0為電平觸發(fā)方式。 2)IE0:外部中斷0請(qǐng)求標(biāo)志位。IE01,外部中斷0向CPU申請(qǐng)中斷。 3)IT1:選擇外部中斷1(INT1)觸發(fā)方式控制位。 4)1E1:外部中斷1請(qǐng)求標(biāo)志位。IE11時(shí),外部中斷1向CPU申請(qǐng)中斷。 5)TF0:片內(nèi)定時(shí)器T0溢出中斷請(qǐng)求標(biāo)志。T0被啟動(dòng)后,從初始值開始進(jìn)行加1計(jì)數(shù),當(dāng)最高位產(chǎn)生溢出時(shí)置T

28、F01,向CPU申請(qǐng)中斷,直到CPU響應(yīng)該中斷時(shí),才由硬件自動(dòng)將TF0清0,也可由軟件查詢?cè)摌?biāo)志,并用軟件清0。 6)TF1:片內(nèi)定時(shí)器T1溢出中斷請(qǐng)求標(biāo)志,其操作功能與TF0類同。,SCON是串行口控制寄存器,與中斷有關(guān)的是它的低兩位TI和RI。 1) TI(SCON.1):串行口發(fā)送中斷標(biāo)志位。每發(fā)送完一個(gè)串行幀,由硬件置位TI。CPU響應(yīng)中斷時(shí),不能清除TI,TI必須由軟件清除。 2)RI(SCON.0):串行口接收中斷標(biāo)志位,當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位RI。同樣,RI必須由軟件清除。,SCON,2)SCON的中斷標(biāo)志,二、MCS51的中斷控制,1、中斷允許寄

29、存器IE中斷的允許與開放,2中斷優(yōu)先級(jí)寄存器IP 中斷優(yōu)先級(jí)控制,內(nèi)部自然優(yōu)先級(jí): 入口地址 INT0 高 0003H T0 000BH INT1 0013H T1 001BH TI/RI 底 0023H,中斷處理過程一般分為三個(gè)階段,即中斷響應(yīng)、中斷處理和中斷返回。,三、響應(yīng)中斷的條件及過程,1.中斷響應(yīng) (1)中斷響應(yīng)的條件 1)有中斷源發(fā)出請(qǐng)求信號(hào) 2)中斷是開放的(總允許、源允許) 3)沒有封鎖(受阻),受阻情況是: CPU正在執(zhí)行同級(jí)或高一級(jí)的中斷服務(wù)程序; 現(xiàn)行機(jī)器周期不是正在執(zhí)行的指令的最后一個(gè)機(jī)器周期,即現(xiàn)行指令完成前不響應(yīng)任何中斷請(qǐng)求; 當(dāng)前正在執(zhí)行的是中斷返回指令RETI或

30、訪問專用寄存器IE或IP的指令。也就是說,在執(zhí)行RETI或是訪問IE、IP的指令后,至少需要再執(zhí)行條其他指令,才會(huì)響應(yīng)中斷請(qǐng)求。,2)中斷響應(yīng)過程 進(jìn)入中斷響應(yīng)周期。CPU在中斷響應(yīng)周期要完成下列操作: 1) 根據(jù)中斷請(qǐng)求源的優(yōu)先級(jí)高低, 使相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器置1。 2) 清相應(yīng)中斷請(qǐng)求標(biāo)志位IE0、 IE1、TF0或TF1 3) 保留斷點(diǎn),把PC內(nèi)容 壓入堆 保存。 4) 把被響應(yīng)的中斷源服務(wù) 程序入口地址送入PC,輸入相應(yīng) 中斷服務(wù)程序。,2.中斷服務(wù)與返回 在編寫中斷服務(wù)程序時(shí)加注意的幾點(diǎn): 1)因各入口地址之間只相隔8個(gè)字節(jié),一般的中斷服務(wù)程序是存放不下的。所以通常在中斷入口地址單

31、元處存放條無條件轉(zhuǎn)移指令,這樣就可使中斷服務(wù)程序靈活地安排在64KB程序存儲(chǔ)器的任何空間。 2)若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級(jí)中斷,可先用軟件關(guān)閉CPU中斷,或禁止某中斷源中斷,在中斷返回前再開放中斷。 3)注意在保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)。 4)中斷服務(wù)程序的最后一條是返回指令RETI,該指令將清除響應(yīng)中斷時(shí)被置位的優(yōu)先級(jí)狀態(tài)觸發(fā)器,然后自動(dòng)將斷點(diǎn)地址從棧頂彈出,裝入程序計(jì)數(shù)器PC,使程序返回到被中斷的程序斷點(diǎn)處,繼續(xù)向下執(zhí)行。,3.中斷請(qǐng)求的撤除 CPU響應(yīng)中斷請(qǐng)求后,在中斷返回(RETI)前,該中斷請(qǐng)求信號(hào)必須撤除,否則會(huì)引起另外一次中斷。 注意:采用邊沿觸發(fā)的外部中斷標(biāo)志IE0或IEl

32、和定時(shí)器中斷標(biāo)志TF0或TFl,CPU響應(yīng)中斷后能用硬件自動(dòng)情除。 但在電平觸發(fā)時(shí),IE0或IEl受外部引腳中斷信號(hào)(或)的直接控制,CPU無法控制IE0或IEl,需要另外考慮撤除中斷請(qǐng)求信號(hào)的措施,如通過外加硬件電路,并配合軟件來解決;串行口中斷請(qǐng)求標(biāo)志TI和RI也不能由硬件自動(dòng)清除,需要在中斷服務(wù)程序中,用軟件來清除相應(yīng)的中斷請(qǐng)求標(biāo)志。,小結(jié):1、硬件構(gòu)成 2、存儲(chǔ)器組織 3、中斷系統(tǒng),課間休息,第三章 1-1,本章重點(diǎn):指令的尋址方式、功能、使用方法 程序設(shè)計(jì)的一般方法和技巧 講授內(nèi)容:MCS-51單片機(jī)的尋址方式 MCS-51單片機(jī)指令分類 程序設(shè)計(jì)方法和算法分析 應(yīng)用程序設(shè)計(jì)舉例,第

33、三章MCS-51單片機(jī)的指令系統(tǒng)與程序設(shè)計(jì),第一節(jié) MCS51單片機(jī)的尋址方式,MCS-51單片機(jī)的指令系統(tǒng)共有111條指令,7種尋址方式,共分為五大類,MCS-51指令系統(tǒng)簡(jiǎn)介: 1、指令所包含的內(nèi)容 操作碼:規(guī)定指令的操作功能 操作數(shù):指令操作的具體對(duì)象(地址、數(shù)據(jù)) 2、指令格式 單字節(jié)指令: 雙字節(jié)指令: 三字節(jié)指令,在MCS-51系列單片機(jī)的指令中,常用的符號(hào): #data8、#data16:分別表示8位、16位立即數(shù)。 direct:片內(nèi)RAM單元地址(8位),也可以指特殊功能寄存器的地址或符號(hào)名稱。 addr11、addr16:分別表示11位、16位地址碼。 rel:相對(duì)轉(zhuǎn)移指令

34、中的偏移量,為8位帶符號(hào)數(shù)(補(bǔ)碼形式)。 bit:片內(nèi)RAM中(可位尋址)的位地址。 A:累加器A;ACC則表示累加器A的地址。 Rn:當(dāng)前寄存器組的8個(gè)工作寄存器R0R7。 Ri:可用作間接尋址的工作寄存器,只能是R0、R1。 :間接尋址的前綴標(biāo)志。,第一節(jié) MCS51單片機(jī)的尋址方式,一、立即尋址 立即尋址是指在指令中直接給出其操作數(shù),該操作數(shù)稱為立即數(shù)。為了與直接尋址指令中的直接地址相區(qū)別,在立即數(shù)前面必需加上前綴“#”。 例如: MOV R0,#30H,尋址方式,二、直接尋址 直接尋址是指在指令中直接給出存放數(shù)據(jù)的地址(注意:不是立即數(shù),并且只限于片內(nèi)RAM范圍)。直接尋址只能訪問特殊

35、功能寄存器、內(nèi)部數(shù)據(jù)存儲(chǔ)器和位地址空間。 例如:MOV A,30H 比較以上兩指令的區(qū)別,三、寄存器尋址 寄存器尋址是指指令中的操作數(shù)為寄存器中的內(nèi)容。 例如:MOV A,R1,四、寄存器間接尋址 寄存器間接尋址是指指令中的操作數(shù)在寄存器的內(nèi)容所指的地址單元中。 例如:MOV R1,#30H;把立即數(shù)30H送R1寄存器 MOVA,R1;把30H單元中的數(shù)送到A中,五、變址尋址 變址尋址用于訪問程序存儲(chǔ)器中的一個(gè)字節(jié),該字節(jié)的地址是:基址寄存器(DPTR或PC)的內(nèi)容與變址寄存器A中的內(nèi)容之和。 例如: MOV DPTR,#3000H ;立即數(shù)3000H送DPTR MOV A,#02H ;立即數(shù)

36、02H送A MOVC A,A+DPTR ;取ROM中3002H單元中的數(shù)送A,六、相對(duì)尋址 以當(dāng)前值為基準(zhǔn),加上相對(duì)偏移量rel形成轉(zhuǎn)移地址 轉(zhuǎn)移范圍:以當(dāng)前值起始地址,相對(duì)偏移在 字節(jié)單元之間。相對(duì)尋址方式為相對(duì)轉(zhuǎn)移指令所采用。 轉(zhuǎn)移的目的地址為: 目的地址=轉(zhuǎn)移指令所在地址+轉(zhuǎn)移指令字節(jié)數(shù)+rel,七、位尋址 位尋址是指對(duì)片內(nèi)RAM的位尋址區(qū)(20H2FH)、可以位尋址的專用寄存器的各位,并進(jìn)行位操作的尋址方式。 例如:MOVC,00H;把20H單元中D0位的值送C位 MOVP1.0,C;把C位中的值送P1口的D0位 SETB20H. 0;把00H位置1,位地址的表示方法 位名稱 例:CY

37、、RS0 寄存器名加序號(hào) 例:ACC.1、P0.1 字節(jié)地址加序號(hào) 例:20H.3 直接位地址 例:00H、 07H,操作數(shù)的7種尋址方式和尋址的空間,MCS51匯編語言指令格式如下: 標(biāo)號(hào):操作碼 操作數(shù)1,操作數(shù)2,操作數(shù)3 ;注釋 其中標(biāo)號(hào)實(shí)際上為符號(hào)地址,表示這條指令在程序存儲(chǔ)器中的存放首地址,以字母開始,后可跟18個(gè)字母或數(shù)字,但標(biāo)號(hào)不能用操作碼或?qū)S梅?hào)。 操作碼規(guī)定了指令的具體操作。 指令中的操作數(shù)為指令的具體操作對(duì)象,有些指令中有3個(gè)操作數(shù),有些只有一個(gè),有些無操作數(shù),僅有操作碼。,第二節(jié) MCS51單片機(jī)的指令分類,指令分類:,一、數(shù)據(jù)傳送與交換類指令 特點(diǎn):除第一操作數(shù)為A

38、的指令影響P位外,其它并不影響標(biāo)志位 有三種傳送指令 MOV 片內(nèi)RAM和特殊功能寄存器之間的傳送 MOVX 片外RAM與ACC之間的傳送 MOVC 程序存儲(chǔ)器的數(shù)據(jù)送ACC 1用于片內(nèi)RAM傳送的指令(16條),1)以累加器CC 為目的操作數(shù) ,n ; . , direct; , Ri (R1,R0) , #data,2)以 Rn 為目的操作數(shù) n, A n, direct n, #data 3)以直接地址為目的操作數(shù) direct, direct,Rn direct,#data direct,Ri(R1,R0) direct,direct ;,4)以 寄存器間址 為目的操作數(shù) Ri, di

39、rect; Ri, A; Ri, #data 5)16位數(shù)據(jù)送數(shù)據(jù)指針 DPTR DPTR,#Ddata16,例如:MOV30H,#7AH ;將立即數(shù)7AH送片內(nèi)RAM 30H單元中 MOVR0,#30H ;將立即數(shù)30H送R0寄存器 MOVA,R0 ;將R0指定的30H中的數(shù)7AH送A中 MOV DPTR,#1000H ;將1000H送DPTR寄存器 MOVX DPTR,A,練習(xí):將R1中的內(nèi)容送R2,2用于片外RAM傳送的指令(共4條) 片外RAM單元的地址為16位,一般用DPTR間接尋址;也可使用Ri來間接尋址(低8位編址時(shí))。,1)外部RAM低256字節(jié)單元與之間的傳送 MOVX ,

40、i MOVX i, )外部RAM單元與之間的傳送 MOVX ,DPTR MOVX DPTR, 例: MOV DPTR, #2000H MOVX ,DPTR ;將外部RAM中2000H單元內(nèi)容A,思考:將片內(nèi)RAM 50H單元 內(nèi)容 片外RAM 5000H單元,3用于ROM傳送的指令(共2條),MOVC A,A+DPTR;(A)(A)+DPTR)) MOVC A,A+PC ;(A)(A)+(PC) 以PC的當(dāng)前值為基址,A為變址,例3-1:在ROM 1000H開始存有5個(gè)字節(jié)數(shù),編程將第二個(gè)字節(jié)數(shù)取出送片內(nèi)RAM 30H單元中。程序段如下: MOV DPTR,#1000H ;置ROM地址指針(基

41、址)DPTR MOV A,#01H ;表內(nèi)序號(hào)送A(變址) MOVC A,A+DPTR ;從ROM 1000H單元中取數(shù)送到A MOV 30H,A ;再存入內(nèi)RAM 30H中 ORG 1000H ;偽指令,定義數(shù)表起始地址 TAB: DB 55H,67H,9AH,;在ROM 1000H開始的空間中定義5個(gè) ; 字節(jié),例3-2:設(shè)某數(shù)N已存于20H單元(N10),查表求N平方值,存入21H單元。 程序段如下: MOV A,20H;取數(shù)N ADD A,#01;加查表偏移量 MOVC A,A+PC;查表 NOP TAB:DB 00H,01H,04H,09 ;定義數(shù)表,由于PC為程序計(jì)數(shù)器,總是指向下

42、一條指令的地址在執(zhí)行第二條指令“MOVC A,A+PC”時(shí),在查表前應(yīng)在A累加器中加上該指令與表之間的偏移量。 用DPTR查表時(shí),表格可放在ROM的64K范圍(不用考慮偏移量),用MOVC A,A+PC指令時(shí)則必須把表格就放在該條指令下面開始的255個(gè)字節(jié)的空間中。,4交換指令(共5條) 其中3條為整個(gè)字節(jié)相互交換,XCHD指令為低4位相互交換,SWAP為ACC中的高、低4位互換。,1)字節(jié)交換 XCH A, Rn ; (A)(Rn) XCH A, direct XCH A, Ri 2)半字節(jié)交換 XCHD A, Ri ; SWAP A 例:已知(A)=34H,(R6)=29H,執(zhí)行以下指令后

43、,(A)=? XCH A,R6 SWAP A,思考:用不同的方法實(shí)現(xiàn)片內(nèi)RAM (20H)R1,5堆棧操作指令(共2條) 堆棧是在內(nèi)RAM開辟的一個(gè)數(shù)據(jù)的暫存空間,遵守“后進(jìn)先出”原則操作,其地址指針為SP,它指出棧頂?shù)奈恢?,?fù)位時(shí)SP=07H。,入棧:PUSH direct ;SP先增1,再將數(shù)據(jù)壓棧。 出棧;POP direct ;數(shù)據(jù)先出棧,再SP減1。 例如,已知(A)=44H,(30H)=55H,執(zhí)行 MOVSP,#5FH ;棧起點(diǎn)設(shè)置為5FH PUSH ACC ;A中的44H壓到60H中保存 PUSH 30H ;30H中的55H壓到61H中保存 POP30H ;把61H中的55H彈

44、出到30H POPACC ;把60H中的44H彈出到A中,【例】 將片內(nèi)RAM 30H單元與40H單元中的內(nèi)容互換。,方法1(直接地址傳送法): MOV31H,30H MOV30H,40H MOV40H,31H SJMP$,方法2(間接地址傳送法): MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$,方法4(字節(jié)交換傳送法): MOVA,30H XCHA,40H MOV30H,A SJMP$,方法3(堆棧傳送法): PUSH30H PUSH40H POP30H POP40H SJMP$,二、算術(shù)運(yùn)算類指令 算術(shù)運(yùn)算類指令有加

45、、減、乘、除法指令,增1和減1指令,十進(jìn)制調(diào)整指令,共24條,使用時(shí)應(yīng)注意判斷各種結(jié)果對(duì)哪些標(biāo)志位(CY、OV、AC、P)產(chǎn)生影響。,1.不帶進(jìn)位的加法指令A(yù)DD(4條),ADD A,Rn ;A(A)+ (Rn) ADD A,direct ;A(A)+(direct) ADD A,Ri ;A(A)+ (Ri) ADD A,#data ;A(A)+ data,練習(xí)3-3 98H+75H 分析各標(biāo)志位的置位情況,加法和減法指令的第一操作數(shù)都是A,并將運(yùn)算結(jié)果放在A中,2. 帶進(jìn)位的加法指令A(yù)DDC (4條),ADDC A, Rn ;A(A)+(Rn)+(CY) ADDC A, direct ;A(

46、A)+(direct)+(CY) ADDC A, Ri ;A(A)+((Ri))+(CY) ADDC A, #data ;A(A)+data +(CY),例如求 5688H+2396H 低字節(jié)用ADD指令,高字節(jié)用ADDC指令,3. 帶借位減法指令SUBB (4條),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),減法只有帶借位減法指令,在不須減借位時(shí)可先清CY。,4.乘法指令MUL(1條),MUL A

47、B ;B A (A)(B),5.除法指令DIV(1條),DIV AB ;A A/B(商)B 余數(shù) 說明:無符號(hào)數(shù)相除,當(dāng)除數(shù)(B)=0時(shí),結(jié)果為無意義,并置OV=1;CY位總是0。,說明:當(dāng)積大于255(0FFH)時(shí),即積的高字節(jié)B不為0時(shí),置OV=1,否則OV=0;CY位總是0。,6.加1指令 INC (5條),INC A INC Rn INC direct INC Ri INC DPTR,7.減1指令(4條),注意:沒有對(duì)DPTR 的減1操作指令,DEC A DEC Rn DEC direct DEC Ri,只有INC A 和 DEC A這兩條指令影響影響P,其他不影響任何標(biāo)志。,8.十進(jìn)

48、制調(diào)整指令 DA A(1條) ADD、ADDC指令都是對(duì)8位二進(jìn)制數(shù)進(jìn)行加法運(yùn)算,當(dāng)兩個(gè)BCD碼數(shù)進(jìn)行加法時(shí),必須增加一條DA A指令(對(duì)其結(jié)果進(jìn)行調(diào)整),否則結(jié)果就會(huì)出錯(cuò)。 注意: DA A指令只能用于加法指令后,第三章 2-11,三. 邏輯運(yùn)算與循環(huán)類指令 特點(diǎn):是當(dāng)A作目的操作數(shù)(第一操作數(shù))時(shí),影響P位;帶進(jìn)位的移位指令影響Cy位,其余都不影響PSW。,第二節(jié) MCS-51 單片機(jī)的指令分類,1. 邏輯“或”運(yùn)算指令ORL (6條) 2. 邏輯“與”運(yùn)算指令A(yù)NL (6條) 3. 邏輯“異或”運(yùn)算指令XRL (6條),此類指令都是按位操作,其中有4條指令的第一操作數(shù)都為A。另外兩條指令

49、的第一操作數(shù)為direct,第二操作數(shù)為A和data。,邏輯運(yùn)算類指令:,如:邏輯或指令格式: ,n ,direct ,i ,data direct, direct, data,用AND指令可對(duì)指定位或指定的一些位進(jìn)行屏蔽(清零) 。 例如:ANL A,#0FH;將A中的高4位清零 #0FH稱為屏蔽字,屏蔽字中的0對(duì)應(yīng)于需要清0的位。,用ORL指令可對(duì)一些指定位置1。 例如:ORL A,#80H 可將A中的最高位置1,其他位保持不變。,通過XRL指令用“1”與某數(shù)的對(duì)應(yīng)位異或,可將該位取反,用“0”與某數(shù)的對(duì)應(yīng)位異或,可將指定位不變;,邏輯運(yùn)算類指令的常用功能:, 求反指令(1條) CPL A

50、;對(duì)累加器A的內(nèi)容各位求反,結(jié)果送回A中,影響P位。 清0指令(1條) CLR A ; 將累加器A的內(nèi)容清0。,注意:兩條指令僅對(duì)A有效, 循環(huán)移位指令(4條,僅對(duì)A有效) 其中有兩條不帶CY位的逐位循環(huán)移位一次指令,不影響PSW。兩條帶CY位的逐位循環(huán)移位一次指令,僅影響CY位。,RL A;左移 RR A;右移 RLC A;帶進(jìn)位CY的左移 RRC A;帶進(jìn)位CY的右移,例:將雙字節(jié)數(shù)(R2)(R3)右移一位 CLR C MOV A,R2 RRC A MOV R2,A MOV A,R3 RRC A MOV R3,A 分析執(zhí)行過程,四、控制程序轉(zhuǎn)移類指令,控制程序轉(zhuǎn)移類指令主要功能是控制程序轉(zhuǎn)

51、移到新的PC所指地址去執(zhí)行程序。,1.無條件轉(zhuǎn)移指令(4條) (1)長(zhǎng)轉(zhuǎn)移指令 LJMP addr16 ;PC addr16 范圍 64K,(2)絕對(duì)轉(zhuǎn)移指令 AJMP addr11 ;PC100 addr11 指令中包含有11位的目的地址(a10 a9 a0), PC 高5位不變,*轉(zhuǎn)移范圍2K字節(jié) 目的地址必須和 PC+2 在同一頁內(nèi) *機(jī)器碼為兩字節(jié) a10 a9 a8 0 0 0 0 1 a7-a0,(3)短(相對(duì))轉(zhuǎn)移指令 SJMP rel ; PC PC + 2 + rel 其目的地址是由PC中的當(dāng)前值和指令的第二字節(jié)中帶符號(hào)的相對(duì)地址相加而成的。因此本指令轉(zhuǎn)移的范圍為:下一條指令

52、的(128127)字節(jié)內(nèi),即本指令的(-126+129)字節(jié)內(nèi)。 實(shí)際應(yīng)用時(shí),addr16、addr11、rel一般用符號(hào)地址形式。,(4)間接轉(zhuǎn)移指令(又稱散轉(zhuǎn)指令) JMP A+DPTR ;PC (A) + (DPTR 目的地址由指針DPTR和變址A的內(nèi)容之和形成,范圍達(dá) 64K 。,2條件轉(zhuǎn)移指令(8條) 此類指令均為相對(duì)尋址指令。,(1)累加器判零轉(zhuǎn) JZ rel;A=0 轉(zhuǎn),PC=PC+2+rel JNZ rel;A0轉(zhuǎn),(2)CY位條件判轉(zhuǎn) JC rel; CY=1 轉(zhuǎn)PC=PC+2+rel JNC rel;CY=0 轉(zhuǎn),(3)數(shù)值比較轉(zhuǎn) 均為三字節(jié) CJNE A,#data,re

53、l CJNE A,direct,rel CJNE Rn,#data ,rel CJNE Ri,#data, rel 指令功能為兩數(shù)比較不相等 轉(zhuǎn)移,操作過程為 第一數(shù)減第二數(shù) 狀態(tài)標(biāo)志送PSW,但不改變?cè)瓉?的操作數(shù),注意:參與比較的數(shù)為無符號(hào)數(shù),(4)可尋址位條件判轉(zhuǎn) (三字節(jié)) JB bit,rel; (bit)=1 轉(zhuǎn) JNB bit,rel ;(bit)=0 轉(zhuǎn) JBC bit,rel ;(bit)=1 轉(zhuǎn), 并將該位清零,(5)循環(huán)控制指令DJNZ DJNZ Rn,rel DJNZ direct,rel; 指令功能是把源操作數(shù)減1,結(jié)果送回原操作數(shù)中,再判結(jié)果不為0就轉(zhuǎn)到目的地去,否

54、則繼續(xù)下面一條指令執(zhí)行。 主要應(yīng)用在循環(huán)結(jié)構(gòu)的編程中,作循環(huán)結(jié)束控制用。,例2:比較兩無符號(hào)數(shù)的大小 求R1、R2中較大的數(shù),結(jié)果存R3 中。,解: ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV A,R1 CJNE A,02H,NEXT NEXT:JC/JNC DONE (?) MOV A,R2 DONE:MOV R3,A LP:SJMP JP END,條件轉(zhuǎn)移指令的應(yīng)用: 例3-7:根據(jù)A中的數(shù)是大于/等于/小于64H這三種情況去執(zhí)行三種不同的處理程序。,3.子程序調(diào)用及返回指令(4條),(1)長(zhǎng)調(diào)用指令 LCALL addr16 ;PCPC+3,SPSP+1

55、,(SP)PC710 SPSP+1,(SP)PC158 , PCaddr16,(2)絕對(duì)調(diào)用指令 ACALL addr11;PC PC+2,SPSP+1,(SP)PC70 SP SP+1,(SP) PC158,PC100addr1,(3)子程序返回指令 RET ;PC158 (SP),SPSP-1 ;PC70 (SP),SPSP-1 從堆棧中彈出(斷點(diǎn))地址值給PC(先高后低,棧指針減2),使程序從該P(yáng)C值處開始執(zhí)行程序。不影響PSW。 (4)中斷返回 RETI ;PC158(SP),SPSP-1 ;PC70 (SP),SPSP-1 除具有RET指令的所有功能外,還將自動(dòng)清除優(yōu)先級(jí)狀態(tài)觸發(fā)器。

56、RETI指令用在中斷服務(wù)子程序中,作最后一條返回指令。 注意:不能用RET指令代替RETI。,4空操作指令(1條) NOP; 指令的執(zhí)行時(shí)間為一個(gè)機(jī)器周期,占一個(gè)字節(jié)。,1.位傳送指令(2條) MOV C,bit; C(bit) MOV bit,C; bitC 指令中必須有一個(gè)位操作數(shù)是布爾累加器C,另一個(gè)才可以是直接可尋址的位。 例:MOV P1.5,C;把C中的值送到P1.5口線輸出 2.位修改指令(6條) CLR C ; C0 CLR bit ;(bit)0 SETB C ;C1 SETB bit ;(bit)1 CPL C ;C/C CPL bit ;(bit)/(bit),五、位操作

57、類指令,這組指令用來實(shí)現(xiàn)對(duì)位清0,取反,置1,不影響其它標(biāo)志位。,3.位邏輯運(yùn)算指令(4條) 這組指令的第一操作數(shù)必須是C,兩位邏輯運(yùn)算的結(jié)果送C中,式中的斜杠是位取反,但并不影響操作數(shù)本身的值。,ANL C,bit ; CC(bit) ANL C,/bit ;CC/(bit) ORL C,bit ;CC(bit) ORL C,/bit ; CC/(bit),第三章 3-1,用匯編語言編寫程序,一般可分為以下幾個(gè)步驟: 1)分析題意,確定算法; 2)設(shè)計(jì)程序流程圖; 3)確定數(shù)據(jù)結(jié)構(gòu):合理地選擇和分配內(nèi)存單元以 及工作寄存器; 4)編寫源程序: 5)上機(jī)調(diào)試程序。,第三節(jié) 程序設(shè)計(jì)方法,MCS-51單片機(jī)匯編語言,包含兩類不同性質(zhì)的指令。 (1)基本指令:即指令系統(tǒng)中的指令。它們都是機(jī)器能夠執(zhí)行的指令,每一條指令都有對(duì)應(yīng)的機(jī)器碼。 (2)偽指令:匯編時(shí)用于控制匯編的指令。它們都是機(jī)器不執(zhí)行的指令,無機(jī)器碼 匯編語言的語句格式 匯編語言一般由四部分組成。 標(biāo)號(hào):操作碼 操作數(shù);注釋 START:MOV A,30H;A(30H),(1)標(biāo)號(hào)段 標(biāo)號(hào)是用戶根據(jù)需要設(shè)定的符號(hào)地址。通常是在一段程序的入口或程序的轉(zhuǎn)向點(diǎn)設(shè)置一個(gè)標(biāo)號(hào)。使用標(biāo)號(hào)便于程序的閱讀、修改及轉(zhuǎn)移指令的書寫。標(biāo)號(hào)由英文字母開頭的18個(gè)字母數(shù)字串組成。 標(biāo)號(hào)以“:”結(jié)束,且同一個(gè)標(biāo)號(hào)名在一個(gè)程序中只能使用一次,不能重

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論