單片計算機及其應用課件_第1頁
單片計算機及其應用課件_第2頁
單片計算機及其應用課件_第3頁
單片計算機及其應用課件_第4頁
單片計算機及其應用課件_第5頁
已閱讀5頁,還剩430頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片計算機及其應用單片計算機及其應用第一章緒論第二章MCS—51單片機的結構和原理第三章MCS51指令系統第四章匯編語言程序設計第五章MCS-51單片機內部定時/計數器及其應用第六章單片機系統擴展第七章MCS-51系統的串行接口第八章MCS-51單片機的中斷系統第九章單片機應用系統的組成第

本章內容SingleChipMicrocomputer什么是單片機單片機特點及應用單片機的結構特點一、什么是單片機

1、微型計算機硬件結構——常見的微機外形臺式微機便攜式微機立式微機微型計算機硬件結構——微機硬件組成

顯示器主機鍵盤鼠標微型計算機硬件結構——運算器控制器CPU存儲器輸入接口電路輸入設備輸出設備輸出接口電路硬件系統內部結構硬件系統——構成微機的實體和裝置軟件系統——微機系統所使用的各種程序的總稱軟件系統與硬件系統共同構成實用的微機系統,兩者是相輔相成、缺一不可的。

軟件系統+微型計算機系統運算器控制器CPU存儲器輸入接口電路輸入設備輸出設備輸出接口電路硬件系統微型計算機系統CPU輸入設備輸出設備軟件系統+微型計算機系統硬件系統輸入接口設備輸出接口設備運算器控制器存儲器單片微型計算機是指集成在一個芯片上的微型計算機,簡稱單片機——單片機實質上就是一個芯片2、單片微型計算機單片機內部結構示意圖

CPU

存儲器定時器/計數器

中斷系統P0-P3TxDRxD

TINT并行I/O口串行I/O口單片機應用系統

單片機應用系統單片機+接口電路及外設等+軟件硬件單片機應用系統由硬件和軟件組成硬件是應用系統的基礎軟件是在硬件的基礎上對其資源進行合理調配和使用,從而完成應用系統所要求的任務,二者相互依賴,缺一不可注:本課程的重點1.掌握單片機應用系統硬件原理的分析方法。2.掌握軟件設計與調試的基本技能。

二、單片機的結構特點2、引腳采用分時復用技術。由于芯片集成度高,而引腳又不宜過多,因此將部分引腳設計為多功能的,例如,地址總線和數據總線采用分時復用等。1、存儲結構。采用ROM和RAM嚴格分開的哈佛結構,可分為:內部ROM、RAM,外部ROM、RAM。3、特殊功能寄存器(21個)采用特殊功能寄存器來控制單片機的功能狀態,如定時/計數器、串行口和中斷邏輯等。4、全雙工串行接口內部具有全雙工串行接口,可實現單機或多機通訊,為實現分布式控制系統提供了可能。5、布爾處理器內部具有布爾處理器,可十分方便的進行二進制位邏輯運算,進行組合邏輯設計三、單片機的特點及應用

1.單片機的特點體積小,重量輕電源單一,功耗低功能強,價格低運行速度快,抗干擾能力強,可靠性高可以嵌入到電子產品中——嵌入式應用系統2.單片機應用

工業方面民用方面儀表方面電訊方面數據處理方面汽車方面A、單片機應用模式1、單機應用 即在一個應用系統中僅使用了一個單片機,其主要應用領域有:智能產品、智能儀表、測控系統、數控控制機智能接口。2、多機應用

多機應用是單片機在高科技領域中應用的主要模式,其高可靠性、高控制功能及高運行速度的“三高”技術,在未來的高科技工程系統中采用單片機多機系統作為主要的發展方向。其應用模式可分為功能彌散系統、并行多機處理系統和局部網絡系統。B、單片機的供應狀態

單片機通過執行指令流來完成預先設定的功能,其指令的存放方式取決于片內ROM的配置情況:

1、片內ROM配置即單片機片內帶有掩模ROM,其內容由廠家出廠時設定,因而其生產周期長、經濟風險大但成本較低。征對以上特點,已有廠家推出了一次性(即OTP型)用戶可編程的單片機,因而兼具成本低、周期短、低風險等優點。2、片內EPROM配置

適用于樣機開發,可多次重寫。3、片內E2PROM配置適用于樣機開發,可多次重寫,其重寫比EPROM更方便,目前使用最為廣泛。4、片內無ROM配置由于片內無ROM,因而需在片外擴展ROM,其電路復雜,靈活性差,已逐漸被淘汰。C、單片機的等級集成電路依據其使用環境可分為三個等級1、商用級溫度范圍為0~70OC,限用于機房及辦公環境2、工業級溫度范圍為-45~85OC3、軍用級溫度范圍為-50~125OC

不同級別之間價格相差很大,如軍用級為商用級的10倍乃至上百倍。單片機為工業級產品。3.單片機種類

◆生產廠商:美國微芯片公司:PIC16C××系列、PIC17C××系列、PIC1400系列,美國英特爾公司的MCS-48和MCS-51系列,美國摩托羅拉公司的MC68HC05系列和MC68HC11系列,美國齊洛格公司的Z8系列,日本電氣公司的μPD78××系列,美國莫斯特克公司和仙童公司合作生產的F8(3870)系列等。

A、單片機的分類(按用途)(1)通用型單片機它可向開發者提供較多資源,具有較強的通用性,適應性較強,應用較為廣泛,便于普及和推廣,但有時會造成大量資源的浪費。(2)專用型單片機專門征對特殊使用場合的具體要求而設計,通常是微控制系統的集成產品,因而其抗干擾能力比通用型強,適用于各種惡劣環境,但由于其專用性強,其應用范圍受到了很大的限制。B、按字長分類(1)4位機主產于日本,如SM系列,UPD系列等,其特點是價格便宜,其數值運算能力差。(2)8位機目前市面上的主導機型,如Intel,Motorola,Zilog等廠家的產品,由于其功能強大,價格低廉,品種繁多,數值處理能力一般,應用范圍較廣。(3)16位機、32位機具有強大的數值處理能力,且具有并行功能,適用于有大量數據處理的應用系統,由于其字長較長,運行速度較高,因而數據處理速度高。它的發展壯大直接推動了信息化時代的到來。如TMS320C50,進行一次乘法運算僅需60ns。◆單片機的發展經歷了由4位機到8位機,再到16位機的發展過程◆目前8位單片機仍是單片機的主流機型;2-1關于MCS-51系列2-2MCS-51系列單片機的結構原理2-3 MCS-51單片機的引腳及其片外總線結構2-4MCS-51單片機的工作方式2-5MCS-51單片機的時序第二章MCS—51單片機的結構和原理一、MCS-51系列型號型號片內程序存儲器片內數據存儲器8031NO128Bytes80514KROM128Bytes87514KEPROM128Bytes8032NO256Bytes89C514KE2PROM128Bytes89C528KE2PROM256Bytes89C20512KE2PROM128Bytes2-1關于MCS-51系列二、MCS-51的主要特點1、單+5V供電,40引腳封裝2、8位字長CPU3、片內有振蕩電路和時鐘電路4、32根I/O線5、64K外部RAM(不含內部RAM)6、64K外部ROM(含內部ROM)7、2個16位定時/計數器(8X52有3個)8、具有2個優先級別的5個中斷源(8X52有6個)9、可編程的全雙工串行口,如工作方式、波特率等10、布爾處理器11、128個用戶可尋址位單元12、128字節內部RAM(8X52有256個字節)時鐘電路CPUROMRAMT0T1中斷系統串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時計數器結構框圖中央處理器CPU:8位,運算和控制功能內部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數據,后128個單元被專用寄存器占用。內部ROM:4KB掩膜ROM,用于存放程序、原始數據和表格。定時/計數器:兩個16位的定時/計數器,實現定時或計數功能。并行I/O口:4個8位的I/O口P0、P1、P2、P3。串行口:一個全雙工串行口。中斷控制系統:5個中斷源(外中斷2個,定時/計數中斷2個,串行中斷1個)時鐘電路:可產生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZ2-2MCS-51系列單片機的結構原理一、基本組成1、8051單片機的基本組成中央處理器CPU:8位,運算和控制功能內部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數據,后128個單元被專用寄存器占用。內部ROM:4KB掩膜ROM,用于存放程序、原始數據和表格。定時/計數器:兩個16位的定時/計數器,實現定時或計數功能。并行I/O口:4個8位的I/O口P0、P1、P2、P3。串行口:一個全雙工串行口。中斷控制系統:5個中斷源(外中斷2個,定時/計數中斷2個,串行中斷1個)時鐘電路:可產生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZ1

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15EPROM27641

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15EPROM27641

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

31302928272625242422211

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15RAM62641

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15RAM6264

2.

器80318751805189C51片內RAM片內ROM256B(字節)4K64K64K(1)程序存儲器程序存儲器內部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執行的起始單元,

在這三個單元存放一條

無條件轉移指令

中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位...0FFFH0FFEHEA=1EA=0程序存儲器資源分布中斷入口地址org 0000h ljmp main org 002bhMain: mov sp,#60h ……..0000HFFFFH(64K)內部外部(2)數據存儲器數據存儲器00HFFH7FH80H(高128B)(低128B)RAM專用

寄存器00H07H08H0FH10H17H18H1FH0區R0R7R0R7R0R7R0R71區2區3區工作寄存器區可作一般RAM讀寫也可位尋址區20H2FH7F78070030H7FH數據緩沖區/堆棧區內部RAM存儲器

11第3區18H~1FH

01第1區08H~0FHRS1RS0寄存器區片內RAM地址

00第0區00H~07H10第2區10H~17H工作寄存器區選擇位RS0、RS1注意:一個單元地址對應有8個位地址

MSB——MostSignificantBit(最高有效位)

LSB——LeastSignificantBit(最低有效位)單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07

MSB

位地址

LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位尋址區位地址表(P11)(3)特殊功能寄存器(高128個單元)

MCS-51內部安排有21個特殊功能寄存器各特殊功能寄存器的符號及地址見表2-2。分別由于以下各個功能單元:CPU:ACC、B、PSW、SP、DPTR(由兩個8位寄存器DPL、DPH組成)并行口:P0、P1、P2、P3中斷系統:IE、IP定時/計數器:TMOD、TCON、TH1、TL1、TH0、TL0串行口:SCON,SBUF,PCON高128個單元☆離散分布有21個特殊功能寄存器SFR。☆

11個可以進行位尋址:ACC、B、PSW、IE、IP、P0、P1、P2、P3、SCON、TCON☆特別提示:對SFR只能使用直接尋址方式,書寫時可使用寄存器符號,也可用寄存器單元地址。3、CPU由運算器、控制器和若干SFR(ACC,B,PSW,SP,DPTR)構成。(1)運算器:實現數據的算術運算和邏輯運算。(2)累加器ACC:提供一個操作數并存放運算結果,其進位標志CY同時也是布爾處理器的累加器。(3)寄存器B:用于乘法和除法操作,也用作暫存器。(4)CPU標志寄存器CY:進位標志,有進位或借位時為1,否則為0

AC:輔助進位標志當D3向D4有進位或借位時為1,否則為0

F0:用戶標志RS1、RS0:工作寄存器組OV:溢出標志,結果超過-128~+127時,OV=1,否則為0CYACF0RS1RS0OV—PPSW

11第3區18H~1FH

01第1區08H~0FHRS1RS0寄存器區片內RAM地址

00第0區00H~07H10第2區10H~17H(4)CPU標志寄存器P:奇偶校驗標志,當ACC中“1”的個數為奇數個時,P=1PSW.1:保留位,用戶可使用。椎棧指針SP:先入后出的特殊存儲器指針。數據指針DPTR:用于存放16位地址,可分為DPH和DPL。MOV SP,#60HMOV DPL,#0FFHMOV DPH,#0FH4、并行I/O口P0.0

P0.1

P0.2P0.3P0.4P0.5P0.6P0.7P1.0

P1.1

P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.0

P3.1

P3.2P3.3P3.4P3.5P3.6P3.74個8位并行I/O口:P0,P1,P2,P3;均可作為雙向I/O端口使用。輸入時可以緩沖,輸出時可以鎖存。(1)特點:P0:訪問片外擴展存儲器時,

復用為低8位地址線和數據線

P2:高8位地址線。P1:雙向I/O端口

P3:第二功能1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318051875189C51片外擴展存儲器時P0、P2口自動作為總線使用(2)I/O口的字節地址和位地址(3)下面分別介紹4個I/O口的結構1)P0口的位結構鎖存器三態緩沖器場效應管P0口既可用作I/O口,也可用作地址/數據總線,但二者不能兼用,用作I/O口時,必須在管腳上接上拉電阻。用作地址/數據總線時,地址和數據采取分時復用方式。用作輸入時,必須對輸出鎖存器置“1”—“讀引腳”操作B、P1口的位結構P1口由于只能作為I/O口使用,因而輸出控制電路結構同P0口不同。C、P2口位結構P2口既可用作I/O口,也可用作高8位地址總線。D、P3口位結構P3口既可用I/O口,又分別具有第二功能,但二者不能混用,其第二功能如下表所示。P3口第二功能ALEWR

RDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7指令1:MOVP1,#00H指令2:MOVP1,#0FFH指令3:MOVP1,#0AAH000000001111111101010101E輸出舉例指令4:CLRP1.0指令5:SETBP1.0111111110+5V1111111111111111F輸入舉例S0+5V4.7kWALEWR

RDP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7讀端口:MOVP3,#11111111BMOVA,P389C51××××××××寄存器A注:當I/O端口作為輸入使用時,需先向端口寫入“1”,使內部的FET截止,再讀入引腳的狀態。你知道P3.4對應寄存器A哪一位嗎?P3.4你知道這是為什么嗎?1111111101一、MCS-51單片機信號引腳簡介

P3口線的第二功能VCCVSSXTAL2

XTAL1RSTP0.0

P0.1

P0.2P0.3P0.4P0.5P0.6P0.7P1.0

P1.1

P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0

P3.1

P3.2P3.3P3.4P3.5P3.6P3.7(2)、振蕩電路:XTAL1、XTAL2(3)、復位引腳:RST(4)、并行口:P0、P1、P2、P3(7)、ALE:地址鎖存控制信號(1)、電源線:VCC(+5V)、VSS(地)EAPSEN(5)、EA:訪問程序存儲控制信號(6)、PSEN:外部ROM讀選通信號RXD/

TXD/

INT0/INT1/

T0/

T1/

WR/

RD/1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318051875189C511、管腳圖2-3 MCS-51單片機的引腳及其片外總線結構二、片外三總線結構1、地址總線(AB)由P2,P0提供16位地址2、數據總線(DB)由P0口提供8位數據3、控制總線(CB)由P3口和RST、EA、ALE、PSEN組成2-4 MCS-51單片機的工作方式一、復位方式

在振蕩電路工作時,在RST引腳上加上一個至少保持2個機器周期的高電平,單片機完成復位。其復位電路結構和內容如圖所示

復位電路復位不影響RAM內容。使PC指向0000H,重新執行程序。復位可分為上電自動復位和按鍵復位兩種方式。復位方式、程序執行方式、單步執行方式、掉電方式、節電方式復位電路復位電路結構和內容二、程序執行方式

本方式是單片機的基本工作方式,復位后,程序自0000H開始執行。用戶的程序一般不可能從0000H開始存放。因此,需要從0000H開始存放一條轉移指令,以使執行轉移到用戶程序的入口地址。三、單步執行方式

在外界脈沖的控制下,單片機每執行一條指令就暫停下來。四、掉電和節電方式用于低功耗系統設計PDGF0—IDLGF1——SMOD

D0

D7PCON五、編程和校驗方式

對于內部含有EPROM或EEPROM的單片機,可用于對其編程或對其校驗。2-5 MCS-51單片機的時序一、時序在執行指令的過程中,CPU的控制器發出的一系列特定的控制信號在時間上的相互關系。內部控制信號和外部控制信號。二、區別幾個概念1、振蕩周期(時鐘周期):振蕩信號周期,fOSC2、狀態周期:又叫S周期,可分為P1和P2兩拍,其中P1通常完成邏輯操作,而P2通常完成內部寄存器與寄存器間的數據傳輸,fosc/2。3、機器周期:單片機的基本操作周期,fosc/12。(教材P25)包含六個狀態周期。4、指令周期:執行一條指令的周期,分別有單、雙和四機器周期指令。5、ALE信號:可作為一種周期信號使用。三、MCS-51指令的取指/執行時序

指令的處理都包括取指(取操作碼或操作數)和執行(指令的邏輯功能)兩個階段,每出現一次ALE信號,CPU就進行一次取指操作。 指令寄存器譯碼地址譯碼程序計數器地址寄存器累加器A運算器①②存儲器內部數據總線外部地址總線AB數據緩沖器外部數據總線DB寄存器區外部控制總線CB內部控制信號時鐘及清零三、MCS-51指令的取指/執行時序取指過程例:MOVA,#09H74H

09H;把09H送到累加器A中執行過程PC=0000H0001H0000H0002H0111010000001001(PC)(PC)0001H0002H0000H外部控制總線CB取指過程(PC)執行過程指令的處理都包括取指(取操作碼或操作數)和執行(指令的邏輯功能)兩個階段,每出現一次ALE信號,CPU就進行一次取指操作四、訪問外部ROM時序在S1P2時刻ALE信號有效。2.P0口送出ROM的低8位地址,P2口送出高8位地址,A7-A0只持續到S2結束,故在外部要用鎖存器,可用ALE作為鎖存信號,A15-A8在整個讀指令過程中都有效3.在S3P1時刻/PSEN開始有效,可以用它選通外部ROM的使能端,被選種的ROM單元的內容,從P0口讀入CPU,然后/PSEN失效。4.在S4P2后開始第二次讀入,其過程與第一次相同。五、訪問外部RAM時序本章作業:除7題外在同一機器周期的S5狀態產生的ALE信號的下降沿,將P0總線上出現的低8位地址鎖存在外部的鎖存器中。讀數據尋址方式數據傳送類指令算術運算類指令邏輯操作類指令控制轉移類指令位操作指令常用偽指令第

MCS

51

指令系統

本章內容SingleChipMicrocomputer概述MCS-51系列單片機的指令系統專用于51系列單片機,共有111條指令,具在豐富靈活的尋址方式,其指令格式與8086的指令系統相同,甚至某些指令還完全相同。使用時應注意區別。在111條指令中,從存儲空間的占用上看,單字節指令占49條,雙字節指令占45條,三字節指令占17條;從執行時間上看,在111條指令中,單機器周期指令占64條,雙機器周期指令占45條,僅乘法和除法兩條指令為四機器周期指令。因而無論是存儲空間的利用率,還是時間的執行效率都是較高的,再加上靈活的尋址方式,特別適合于實時測量和控制場合。因而,單片機又常被稱為微控制器。§3-1指令的格式及標識操作碼70數據或尋址方式70雙字節指令:標號:操作碼操作數或操作數地址;注釋單字節指令:操作碼70三字節指令:操作碼70數據或尋址方式70數據或尋址方式70指令按字節長度可以分為三種:指令的格式:例如:MOVA,R0例如:MOVA,30H例如:MOVDPTR,#2010H操作碼助記符、目的操作數、源操作數是指令的核心部分。方括號中內容為可選項,其有無視具體的指令而異。一、指令的格式二、關于標號

標號不允許只用數字,而應以字母打頭,后面跟數字,不可使用運算符號,不能同十六進制數發生混淆,較好的取名原則是見名知義。便于程序員在調試程序時更加順利,往往一個標號就是一個功能入口,因而在使用標號時應特別小心,用并非每句指令都需要標號。三、關于指令中的符號標識符號含義Rn表示當前選定寄存器組的工作寄存器R0~R7Ri表示作為間接尋址的地址指針R0~R1#data表示8位立即數,即00H~FFH#data16表示16位立即數,即0000H~FFFFHaddr16表示16位地址,用于64K范圍內尋址addr11表示11位地址,用于2K范圍內尋址direct8位直接地址,可以是內部RAM區的某一單元或某一專用功能寄存器的地址Rel帶符號的8位偏移量(-128~+127)Bit位尋址區的直接尋址位(X)X地址單元中的內容,或X作為間接尋址寄存器時所指單元的內容←將←后面的內容傳送到前面去四、關于注釋

為了增強程序的可讀性,使別人易讀,或防止日久遺忘,可適當加些注釋。注釋由“;”開始。§3-2 尋址方式

在程序行中,操作碼代表了該句指令的功能,而功能的對象卻由操作數決定,由操作數指出參與運算的數或該數所在的地址。取得操作數的地址的方法叫做尋址方式。尋址方式與計算機的存儲空間結構是密切相關的。靈活運用各種尋址方式,可以大大的提高程序的運行效率。MCS-51基本七種尋址方式一、尋址方式(找信方式)我的信在他那!找信去!②①注:找信是尋找信的“地址”!你能說出第二封信的“地址”嗎?目的地#XXH操作數MOVP1,#55HMOVA,#01H#55H目的地信寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址位尋址目的地寄存器尋址P31直接尋址P32立即數尋址P32寄存器間接尋址P33變址尋址P33相對尋址P34位尋址P35內部RAM或SFR區操作數XXHMOVP1,20H20H目的地20H注:尋址是尋操作數的“地址”!直接給出地址

20H——直接尋址目的地寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址位尋址寄存器目的地操作數XXHMOVP1,A寄存器R0-R7A

B

DPTR你能說出為什么叫寄存器尋址嗎?寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址位尋址MOVP1,@R0目的地寄存器操作數3AH內部RAM3AH65H3AHR0R1

DPTR寄存器間接尋址寄存器目的地2號信在2號箱子里1號你能說出1號箱子和2號箱子分別對應內存中哪一部分嗎?尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內存20HMOVP1,#20H①直接將20H這個數送P1口錯!錯!錯!MOVP1,R0對!尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里面MOVP1,20H④地址是內存20HMOVP1,#20H①直接將20H這個數送P1口錯!錯!錯!MOVP1,@R0對!尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里面MOVP1,20HMOVP1,#20H①直接將20H這個數送P1口錯!錯!錯!MOVP1,20H對!④地址是內存20H尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內存20HMOVP1,#20H①直接將20H這個數送P1口錯!錯!錯!MOVP1,#20H對!寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址位尋址MOVCA,@A+DPTR目的地寄存器操作數內部RAM3AH65H3AH基址寄存器12H變址寄存器34H內部RAM46H65HADPTRPC46H目的地寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址XXH位尋址操作數SJMP54HPC+54HPC2002H······2002H=2056HPC2056H寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址位尋址20H······27H21H28H21H20H100000000想一想:如果想使27H單元的第3位置1,該怎么辦呢?單元地址2FH2EH2DH2CH2BH2AH29H28H

26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07

MSB

位地址

LSB7E766E665E564E46

362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44

342C241C140C047B736B635B534B43

332B231B130B037A726A625A524A42

322A221A120A027971696159514941

312921191109017870686058504840

30282018100800位尋址地址表

例:SETB3DH

3D

3C

3B3F

3E3A

393827H寄存器尋址直接尋址立即數尋址寄存器間接尋址變址尋址相對尋址位尋址SETB3DH20H······27H21H28H21H20H000000010§3-3MCS—51指令系統的分類2.1數據傳送指令(29條)

2.2算術運算指令(24條)2.3邏輯運算指令(24條)2.4控制轉移指令(17條)2.5位操作指令(17條)2.6常用偽指令(17條)目的地址源地址數據MOV<目的操作數>,<源操作數>MOVA,#20H,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data20HA2.1數據傳送指令(29條不影響標志位CYACOV)

——8位數據傳送指令(15條)

2.1數據傳送指令(29條)

——16位數據傳送指令(1條)

MOVDPTR,#data16

——外部數據傳送指令(4條)

MOVX<目的操作數>,<源操作數>,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA——交換和查表類指令(9條)

,AXCHdirect@DPTR@RidirectA@DPTR@Ri1)字節交換指令(3條)

2)低半字節交換指令(1條)

XCHDA,@Ri3)累加器A中高4位和低4位交換(1條)

SWAPA4)查表指令(2條)

MOVCA,@A+PCMOVCA,@A+DPTR5)堆棧操作指令(2條)

PUSHdirectPOPdirect舉例例3-1

將片內RAM30H單元的內容送到片外60H;將片外4312H單元的內容送到片內31H單元:

MOV A,30H MOVR0,#60H MOV @R0,A MOVDPTR,#4312H MOV A,@DPTR MOV 31H,A0000HFFFFH(64K)內部外部數據存儲器數據存儲器00HFFH7FH80H(高128B)(低128B)RAM專用

寄存器00H07H08H0FH10H17H18H1FH0區R0R7R0R7R0R7R0R71區2區3區工作寄存器區可作一般RAM讀寫也可位尋址區20H2FH7F78070030H7FH數據緩沖區/堆棧區內部RAM存儲器

11第3區18H~1FH

01第1區08H~0FHRS1RS0寄存器區片內RAM地址

00第0區00H~07H10第2區10H~17H工作寄存器區選擇位RS0、RS1directdirect2.2算術運算類指令(24條)

——普通加法指令(4條)A,Rn@Ri#dataADDRn@Ri#dataADD A,RnADD A,directADD A,@RiADD A,#data注意:1.本指令影響Cy,AC,Ov,P等標志。

2.求和操作既可看成是有符號數運算,也可看成是無符號數運算,完全由程序員編程時自行設定。

3.計算機運算時的規定參見教材P38。 2.2算術運算類指令(24條)

——帶進位加法指令(4條)directdirectA,Rn@Ri#dataADDCRn@Ri#data

ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data

除相加時要考慮進位外,其余操作與前面相同。2.2算術運算類指令(24條)

——減法指令(4條)

directdirectA,Rn@Ri#dataSUBBRn@Ri#data

SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data

減法指令是帶借位的,若不需要帶借位減,則在作減法指令前清除借位位,即CLR C

減法指令影響OV、CY、AC標志位助記符格式機器碼(B)相應操作指令說明機器周期INCA00000100A

A+1影響PSW的P標志1INCRn00001rrrRn

Rn+1n=0~7,rrr=000~1111INCdirect0101direct(direct)

(direct)+1

1INC@Ri0000011i(Ri)

(Ri)+1i=0,11INCDPTR10100011DPTR

DPTR+1

2DECA00010100A

A-1影響PSW的P標志1DECRn00011rrrRn

Rn-1n=0~7,rrr=000~1111DECdirect00010101direct(direct)

(direct)+1

1DEC@Ri0001011i(Ri)

(Ri)-1i=0,11——加1減1指令——乘法指令(1條)

MULAB——除法指令(1條)

DIVAB兩個8位操作數相乘,形成16位的積,其中A為積的低位而B為積的高位。需要進行更多位的乘法運算,需另外編程方能實現。舉例見教材P40兩個8位操作數相除,其中A為被除數而B為除數;運算后,結果仍然在AB中,其中A為商而B為余數。 同乘法指令相同,需要進行更多位的除法運算,需另外編程方能實現。十進制調整指令

DA A;實現BCD碼加法

BCD碼相加后,根據Ac和Cy的狀態對A中的數作適當調整,使運算結果為BCD碼。 這條指令對加法結果的調整規則是:

(1)若累加器A低4位大于9或輔助進位標志AC=1.則低4位加6;

(2)若累加器A高4位大于9或CY=1,則高4位加6;

(3)若1、2條件都滿足時,則A加66H;

(4)若1、2條件都不滿足時,則A加00H;

(5)若果加器A的最高位因調整而產生進位時,將CY置1,若不產生進位整前的狀態而并不清零。

DA指令只影響進位標志CY。例3-3

設ACC中為壓縮BCD碼56H,R3中為壓縮BCD碼67H,且Cy=1,求ACC與R3的壓縮BCD碼之和

MOV A,#56H MOV R3,#67H ADDC A,R3 DA A ;A=?

(A)=01010110(R3)=01100111+)(Cy)=00000001

和=10111110

調整+)01100110

100100100BCD碼為1242.3邏輯及移位類指令

——邏輯與指令(6條)

助記符格式機器碼(B)相應操作指令說明機器周期ANLA,direct01010101directA

A∧direct按位相與1ANLA,Rn01011rrrA

A∧Rnn=0~7,rrr=000~1111ANLA,@Ri0101011iA

A∧(Ri)i=0,11ANLA,#data01010100dataA

A∧#data

1ANLdirect,A01010010direct(direct)

(direct)∧A不影響PSW的P標志1ANLdirect,#data01010011directdata(direct)

(direct)∧#data不影響PSW的P標志2——邏輯或指令(6條)

01000011directdata助記符格式機器碼(B)相應操作指令說明機器周期ORLA,direct01000101directA

A∨direct按位相或1ORLA,Rn01001rrrA

A∨Rnn=0~7,rrr=000~1111ORLA,@Ri0100011iA

A∨(Ri)i=0,11ORLA,#data01000100dataA

A∨#data

1ORLdirect,A01000010direct(direct)

(direct)∨A不影響PSW的P標志1ORLdirect,#data(direct)

(direct)∨#data不影響PSW的P標志2——邏輯異或指令(6條)

助記符格式機器碼(B)相應操作指令說明機器周期XRLA,direct01100101directA

A

(direct)按位相異或1XRLA,Rn01101rrrA

A

Rnn=0~7,rrr=000~1111XRLA,@Ri0110011iA

A

(Ri)i=0,11XRLA,#data01100100dataA

A

#data

1XRLdirect,A01100010direct(direct)

(direct)

A不影響PSW的P標志1XRLdirect,#data01100011directdata(direct)

(direct)#data不影響PSW的P標志2——累加器A清0和取反指令助記符格式機器碼(B)相應操作指令說明機器周期CLRA11100100A

00HA中內容清0,影響P標志1CPLA11110100A中內容按位取反,影響P標志1AAA.0A.7A.0A.7A.0A.7A.0A.7CYCYRLARRARLCARRCA注意:執行帶進位的循環移位指令之前,必須給CY置位或清零。——循環移位指令例3-4

設(20H)=(X7X6X5X4X3X2X1X0) (21H)=(Y7Y6Y5Y4Y3Y2Y1Y0)試編程使(30H)=Y2Y1Y0X4X3X2X1X0程序清單: MOV 30H,20H ANL 30H,#00011111B;B:二進制O:八進制D:十進制H:十六進制

MOV A,21H RL A SWAP A ANL A,#11100000H ORL 30H,A例3-5若ACC=X7X6X5X4X3X2X1X0,試編程將A中的低5位送至P1口,但不能影響P1口的高3位。程序清單:

MOV A,#0AAH ANL P1,#11100000B ORL P1,A2.4控制轉移類指令

——無條件轉移指令(4條)1)長轉移指令:LJMPAAAAH;AAAAHPCPC=0000HPC=AAAAH0000H0001H······AAA9HAAAAH0002H假設執行該指令前,PC的值為0000H。注意:該指令可以轉移到64KB程序存儲器中的任意位置。PC高5位(保持不變)PC低11位A10A9A800001A7A6A5A4A3A2A1A0操作碼(第一字節)操作數(第二字節)11位轉移地址的形成示意圖程序計數器PC2)絕對轉移指令AJMPaddr11;PC+2PC,addr11PC.10~PC.0PC2002H2003H0000H0001H······2004H2005H2006HPCPCPC2006H2003HPC0002HPC3)相對轉移指令

例:SJMP03H

03H03H就是當前PC值與目的PC值相對差PC——條件轉移指令(8條)

1)累加器A判0指令(2條)助記符格式機器碼(B)相應操作機器周期JZrel0110000若A=0,則PC

PC+rel,否則程序順序執行2JNZrel01110000若A≠0,則PC

PC+rel,否則程序順序執行22)減1非零轉移指令(2條)助記符格式機器碼(B)相應操作機器周期DJNZRn,rel11011rrrrelRn

Rn-1,若Rn≠0,則PCPC+rel,否則順序執行2DJNZdirect,rel11010101directrel(direct)

(direct)-1,若(direct)≠0,則PCPC+rel,否則順序執行23)比較轉移指令(4條)助記符格式機器碼(B)相應操作機器周期CJNEA,#data,rel10110100datarel若A≠#data,則PC

PC+rel,否則順序執行;若A<#data,則CY=1,否則CY=02CJNERn,#data,rel10111rrrdatarel若Rn≠#data,則PC

PC+rel,否則順序執行;若Rn<#data,則CY=1,否則CY=02CJNE@Ri,#data,rel1011011idatarel若(Ri)≠#data,則PC

PC+rel,否則順序執行;若(Ri)<#data,則CY=1,否則CY=02CJNEA,direct,rel10110101directrel若A≠(direct),則PC

PC+rel,否則順序執行;若A<(direct),則CY=1,否則CY=02——調用和返回指令(8條)

1)絕對調用指令(1條)助記符格式機器碼(B)相應操作機器周期ACALLaddr11a10a9a810001addr7~0PC

PC+2SPSP+1,(SP)

PC0~7SPSP+1,(SP)

PC8~15PC0~10

addr1122)長調用指令(1條)助記符格式機器碼(B)相應操作機器周期LCALLaddr1600010010addr15~8addr7~0PC

PC+3SPSP+1,SP

PC0~7SPSP+1,SP

PC8~15PCaddr1623)返回指令助記符格式機器碼(B)相應操作機器周期RET00100010PC8~15

(SP),SP

SP-1PC0~7

(SP),SP

SP-1子程序返回指令2RETI00110010PC8~15

SP,SP

SP-1PC0~7

SP,SP

SP-1中斷返回指令2助記符格式機器碼(B)相應操作指令說明NOP00000000空操作消耗1個機器周期4)空操作舉例例3-6

根據累加器A命令鍵鍵值,設計命令鍵操作程序入口跳轉表。程序如下:

CLR C RLC A ;乘2,若用LJMP指令則乘3 MOV DPTR,#JPTAB JMP @A+DPTRJPTAB: AJMP CCS0 AJMP CCS1 AJMP CCS2例3-7測試P1口輸入的100個數中0~9各數的概率分布程序

MOV40H,#100READ:MOVA,P1CHK0:CJNEA,#0,CHK1 INC30H DJNZ40H,READ SJMPEENDCHK1:CJNEA,#1,CHK2 INC31H DJNZ40H,READ SJMPEENDCHK2:CJNEA,#2,CHK3 INC32H DJNZ40H,READ SJMPEENDCHK3:CJNEA,#3,CHK4 INC33H DJNZ40H,READ SJMPEENDCHK4:CJNEA,#4,CHK5 INC34H DJNZ40H,READ SJMPEENDCHK5:CJNEA,#5,CHK6 INC35H DJNZ40H,READ SJMPEENDCHK6:CJNEA,#6,CHK7 INC36H DJNZ40H,READ SJMPEENDCHK7:CJNEA,#7,CHK8 INC37H DJNZ40H,READ SJMPEENDCHK8:CJNEA,#8,CHK9 INC38H DJNZ40H,READ SJMPEENDCHK9:INC39H DJNZ40H,READEEND:SJMP$2.5位操作類指令單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07

MSB

位地址

LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM

位尋址區位地址表助記符格式機器碼(B)相應操作指令說明機器周期MOVC,bit10100010CY

bit位傳送指令,結果影響CY標志2MOVbit,C10010010bit

CY位傳送指令,結果不影響PSW22.位置位和位清零指令助記符格式機器碼(B)相應操作指令說明機器周期CLRC11000011CY

0位清0指令,結果影響CY標志1CLRbit11000010bitbit

0位清0指令,結果不影響PSW1SETBC11010011CY

1位置1指令,結果影響CY標志1SETBbitbit

1位置1指令,結果不影響PSW111010010bit1.位傳送指令3.位運算指令助記符格式機器碼(B)相應操作指令說明機器周期ANLC,bit10000010bitCY

CY∧bit位與指令2ANLC/bit10110010bit位與指令2ORL,bit01110010bitCY

CY∨bit位或指令2ORLC/bit10100010bit位或指令2CPLC10110011位取反指令2CPLbit10110010位取反指令,結果不影響CY2CY

CY∧bitCY

CY∨bitCYCYbitbit例3-8設A、B、D代表位地址,試編程實現D為A與B之異或,即D=AB+AB。

MOV C,B

MOC D,C MOV C,A ANL C,/B ORL C,D MOV D,CANL C,/A ;C與A相與 助記符格式機器碼(B)相應操作機器周期JBbit,rel00100000bitrel若bit=1,則PC

PC+3+rel,否則順序執行2JNBbit,rel00110000bitrel若bit=0,則PC

PC+3+rel,否則順序執行2JBCbit,rel00010000bitrel若bit=1,則PC

PC+3+rel,bit0,否則順序執行24.位轉移指令5.判CY標志指令助記符格式機器碼(B)相應操作機器周期JCrel01000000若CY=0,則PC

PC+2+rel,否則順序執行2JNCrel01010000若CY≠0,則PC

PC+2+rel,否則順序執行2常用偽指令定位偽指令ORG定義字節數據偽指令DB定義字數據偽指令DW定義空間偽指令DS符號定義偽指令EQU或=數據賦值偽指令DATA數據地址賦值偽指令XDATA匯編結束偽指令END++(P1.1)U(P2.2)V(TF0)W(IE1)X(20H.0)Y(21H.1)ZU(V+W)Q(P3.3)Q=U(V+W)(X+Y)Z MOV C,P2.2 ORL C,TCON.5 ANL C,P1.1 MOV F0,C MOV C,TCON.3 ORL C,/00H ANL C,F0 ANL C,/09H MOV P3.3, C例3-9編程實現下圖所示的邏輯功能補例:條件轉移類指令范例——方案一還有什么方法實現循環的終止?將00H~0FH這16個數順序地置入片內RAM20H~2FH單元中。

MOVR0,#20H MOVR7,#16 CLRALOOP:MOV@R0,AINCAINCR0DJNZR7,LOOPSJMP$JMP1.ASM條件轉移類指令范例——方案二MOVR0,#20H MOVR7,#0FH CLRALOOP:MOV@R0,AINCAINCR0CJNEA,#0FH,LOOPSJMP$JMP2.ASM條件轉移類指令范例——方案三

MOVR0,#20H MOVA,#0FH;???? MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0DECAJNZLOOPSJMP$JMP3.ASM條件轉移類指令范例——方案四

MOVR0,#20H MOVA,#0FH MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0SUBBA,#01HJNCLOOPSJMP$JMP4.ASM練習1

設內部RAM中33H單元中內容為44H,34H單元中內容為0AFH,R0中內容為33H,R1中內容為00H,給出以下每一條指令執行后A中的值和PSW中P的值。

MOVA,#34H MOVA,34H MOVA,R1 MOVA,@R0

注意:對PSW中P標志的影響。練習2設內部RAM30H單元中內容為52H,請給出以下程序結果:

MOVA,#30H MOVA,30H MOVR0,#30H MOVA,@R0 MOV30H,#30H設P1口內容為0AAH(P1口地址為90H),請給出以下程序結果:

MOVR0,#30H MOV10H,P1 MOVA,10H MOV@R0,A MOV40H,@R0本章主要知識點指令的七種尋址方式。難點:寄存器間接尋址各類指令的主要功能。難點:查表指令難點:條件轉移指令作業:2.22.42.6第

匯編語言程序設計

本章內容SingleChipMicrocomputer§4-0概述§4-2運算程序設計§4-3數據的拆拼和轉換§4-1循環程序設計§4-5查表程序§4-6散轉程序設計§4-7I/O端口控制程序§4-8子程序調用時的參數傳遞概述最早人們只能用機器語言(二進制)編寫程序;為了方便記憶,人們開始用助記符形式的匯編語言編寫程序,稱為低級語言。然后再用匯編系統將其翻譯成機器語言,該過程稱為匯編;為了用更接近人的語言編寫程序,程序設計師們發明了高級語言,如:BASIC、FORTRAN、PASCAL、

C、JAVA

然后再用編譯

溫馨提示

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

評論

0/150

提交評論