MCS_51單片機復習要點說明_第1頁
MCS_51單片機復習要點說明_第2頁
MCS_51單片機復習要點說明_第3頁
MCS_51單片機復習要點說明_第4頁
MCS_51單片機復習要點說明_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、MCS-51單片機8051單片機是8位單片機,有40個管腳,8根數據線,16根地址線。單片機的八大組成部分:CPU 、ROM、RAM、I/O 、定時/計數器、串口、SFR、中斷服務系統一、MCS-51機的存結構 (如圖1所示)60KB外部ROM64KB外部RAM4KB內部EA = 14KB外部EA = 0特殊功能寄存器內部RAM FFFFH FFFFH 1000H 0FFFH 0FFFH FFH80H7FH 0000H 0000H 00H 0000H7F 程序存儲器 部數據存儲器 外部數據存儲器 圖1 MCS-51機的存結構物理上分為:4個空間, 片ROM、片外ROM片RAM、片外RAM邏輯上

2、分為;3個空間, 程序存(片、外)統一編址 MOVC 數據存儲器(片) MOV 數據存儲器(片外) MOVX1、程序存尋址圍:0000H FFFFH 容量64KB EA = 1,尋址從部ROM;EA = 0,尋址從外部ROM地址長度:16位 存儲器地址空間為64KB 作用: 存放程序及程序運行時所需的常數。8051 單片機6個具有特殊含義的單元是:0000H 系統復位,PC指向此處; 0003H 外部中斷0入口 000BH T0溢出中斷入口 0013H 外中斷1入口 001BH T1溢出中斷入口 0023H 串口中斷入口 2、部數據存儲器物理上分為兩大區:00H 7FH即128BRAM 和 S

3、FR區。如圖2所示。 7FH資料緩沖區堆棧區 80字節 數據緩沖器用工作單元30H2FH 位地址: 16字節00H7FH 128 可位尋址位20H1FH 3區 2區 1區 32字節 4組R0R7工作寄存器 0區00H 圖2 部數據存儲器 二、 殊功能寄存器SFR尋址空間離散分配在:80H FFH , 注意PC不在此圍。地址末尾為0或8的SFR具有位尋址功能1、 CPU是運算器加控制器2、 算術運算寄存器(1)累加器A(E0H)(2)B寄存器:乘、除法運算用(3)程序狀態字PSW寄存器:包含程序運行狀態信息。PSW CY AC FO RS1 RS0 OV PCY(PSW.7) 進位/借位標志;位

4、累加器。AC (PSW.6) 輔助進/借位標志;用于十進制調整。F0 (PSW.5) 用戶定義標志位;軟件置位/清零。OV (PSW.2) 溢出標志; 硬件置位/清零。P (PSW.0) 奇偶標志;A中1的個數為奇數 P = 1;否則 P = 0。RS1、RS0 寄存器區選擇控制位。 0 0 : 0區 R0 R7 0 1 : 1區 R0 R7 1 0 : 2區 R0 R7 1 1 : 3區 R0 R72、指針寄存器(1)程序計數器PC PC的容是指明即將執行的下一條指令的地址,16位,尋址64KB圍,復位時PC = 0000H 具有自動加1功能 不可尋址即不能通過指令訪問。(2)堆棧指針SP指

5、明棧頂元素的地址,8位,可軟件設置初值,復位時SP = 07H(3)數據指針DPTRR0、R1、DPTR;指明訪問的數據存儲器的單元地址,16位,尋址圍64KB。 DPTR = DPH + DPL,也可單獨使用。沒有自動加1功能 通過軟件 INC DPTR 容加1時序單片機的各種操作都是在一系列脈沖控制下進行的,而各脈沖在時間上是有先后順序的,這種順序就稱為時序。執令周期:即從取指到執行完,所需時間。 不同機器指令周期不一樣;即使相同機器,不同的指令其指令周期也不一樣。機器周期:機器的基本操作周期。 一個指令周期含若干機器周期(單、雙、四周期)狀態周期:一個機器周期分6個狀態周期Si 每個狀態

6、周期含兩個振蕩周期,即相位P1、P2。振蕩周期:由振蕩時鐘產生。 振蕩周期Tosc = 1/fosc 一個機器周期 = 12個振蕩周期 = 12×1/fosc 。例如,若fosc = 12MHz,則一個機器周期 = 1s。時鐘的產生:通過XTAL1(19)、XTAL(18)。這兩個管腳外部加石英晶體和電容組成振蕩器系統復位 通過給RST管腳加高電平理論上大于兩個機器周期,實際大于10ms,系統復后除了SP=07H ,P0、P1、P2、P3為FFH外,所有的寄存器均為00H,PC=0000H,PSW=00H 工作寄存器組R0R7工作在0組。并行I/O端口 并行I / O端口四個8位I/

7、O口P0、P1、P2、P3 作為通用I / O使用, 是一個準雙向口:“讀管腳在輸入數據時應先把口置1,使兩個FET都截止,引腳處于懸浮狀態,可作高阻抗輸入” MOV P1.#0FFH MOV A,P1 讀端口數據方式是一種對端口鎖存器中數據進行讀入的操作方式,CPU讀入的這個數據并非端口引腳的數據。(對端口進行讀-修改-寫類指令 列如 CPL P1.0是讀端口鎖存器而不是管腳) 一、P0口地址80H系統復位后P0=FFH(1) P0口可作通用I / O口使用,又可作地址/數據總線口;(2)P0既可按字節尋址,又可按位尋址;(3)P0作為輸入口使用時:是準雙向口;(4)作通用I / O 口輸出

8、時:是開漏輸出;(外部管腳必須接上拉電阻)(5)作地址/數據總線口時,P0是一真正雙向口,分時使用,提供地址線 A0A7由ALE控制信號鎖存,數據線D0D7二、P1口地址90H地址90H系統復位后P1=FFH2、特點(1)無地址/數據口功能(2)可按字節尋址,也可按位尋址(3)作I / O輸入口時:是一準雙向口,不是開漏輸出(無需外接上拉電阻)。三、P2口地址A0H系統復位后P2=FFH2、特點(1)當P2口作為通用I / O時,是一準雙向口。(2)從P2口輸入數據時,先向鎖存器寫“1”。(3)可位尋址,也可按字節尋址(4)可輸出地址高8位A8A15。四、P3口地址B0H系統復位后P3=FFH

9、2、特點(1)作通用I / O時,是一準雙向口,不是開漏輸出(無需外接上拉電阻)。(2)P3口具有第二功能 1、P0口:地址低8位與數據線分時使用端口,2、P1口:按位可編址的輸入輸出端口,3、P2口:地址高8位輸出口4、P3口:雙功能口。若不用第二功能,也可作通用I / O 口。5、按三總線劃分:地址線:P0低八位地址,P2高八地址;數據線:P0輸入輸出8位數據;控制線:P3口的8位(RXD、TXD、INT0、INT1、T0、T1、WR*、RD*加上PSEN*、ALE、EA組成制總線。)中斷系統五個中斷源,兩個優先級一、 中斷請求源(“五源中斷”)五個中斷源: 入口地址 外部中斷0(/INT

10、0) 0003H T0溢出中斷 000BH 外部中斷1(/INT1) 0013H T1溢出中斷 001BH 串口中斷 0023H有了中斷請求,如何通知CPU?通過中斷請求標志位來通知CPU。外部中斷源、定時/計數器的中斷請求標志位分布在 TCON中;串口中斷標志位分布在 SCON中。TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SCON TI RI 中斷請求標志位 IE0(INT0) IE1(INT1) TF0(T0) TF1(T1) TI/RI(串口)TF1 T1的溢出中斷標志。 硬件置1,硬件清0(也可軟件清0)。TF0 T0的溢出中斷標志。(同TF1,只是針對

11、T0的)IE1 外部中斷1(/INT1)請求標志。 外部有中斷請求時,硬件使IE1置1,硬件清0。IE0 外部中斷0(/INT0)請求標志。IT1 外部中斷1(/INT1)觸發類型控制位。 IT1 = 0 ,低電平觸發。 IT1 = 1 , 下降沿觸發。IT0 外中斷0(/INT0)觸發類型控制位,用法同IT1。外部中斷INT0、INT1 觸發方式有電平觸發和跳變觸發TI 串口發送中斷標志位。 發送完數據,硬件使TI置1,軟件清0(CLR TI)RI 串行口接收中斷標志位。 硬件置1,軟件清0。二、 中斷控制(兩級管理)1、中斷屏蔽在中斷源與CPU之間有一級控制,類似開關,其中第一級為一個總開

12、關,第二級為五個分開關,由IE控制。IE EA ES ET1 EX1 ET0 EX0 EA 總控制位ES 串口控制位 若為“1”,允許(開關接通)ET1 T1中斷控制位 若為“0”,不允許(開關斷開)EX1 /INT1控制位 例如,SETB EAET0 T0中斷控制位 CLR IE.7EX0 /INT0控制位2、中斷優先級為什么要有中斷優先級?CPU按中斷申請時間先后順序響應中斷,同一時間只能響應一個中斷請求。若同時來了兩個或兩個以上中斷請求CPU響應高級別中斷。為此將5個中斷源分成高級、低級兩個級別,高級優先,由IP控制。同時同級的中斷源申請中斷CPU按優先順序響應中斷。IP PS PT1

13、PX1 PT0 PX0 以上各位與IE的低五位相對應,為“1”時為高級。初始化編程時,由軟件確定。例如,SETB PT0 或SETB IP.1 CLR PX0等。同一級中的5個中斷源的優先順序是:(注意是同級) /INT0中斷 高 T0中斷 廠家出廠時已固化好順序 /INT1中斷 事先約定 T1中斷 串口中斷 低中斷嵌套 同級或低級中斷不能打斷正在響應的中斷的服務程序,高級中斷能夠打斷低級中斷服務程序而形成中斷嵌套定時/計數器定時 / 計數器 兩個定時器/計數器T0 、T1 四種工作方式中斷方式定時器程序初始化主要部分如下MOV TMOD,#DATA ;設置定時器工作方式MOV TH0(TH1

14、),# DATA;給定時器計數器裝入初值MOV TL0(TL1),# DATASETB EA ;開中斷SETB ET0(ET1) ;開中斷SETB TR0(TR1) ;啟動定時器計數器一、定時 / 計數器的結構T0、T1均為16位加1計數器。計數值高八位計數值低八位計數值高八位計數值低八位TH0 TH1 TL0 TL1 工作方式控制字 TMOD 工作方式 TCON 1、工作方式控制寄存器 TMOD T1 T0TMOD GATE C/T M1 M0 GATE C/T M1 M0GATE 門控位。 GATE = 0 軟件啟動,僅由軟件置TR0(TR1)為1啟動定時器/計數器;置0停止定時/計數 G

15、ATE = 1 硬件啟動,軟件置TR0(TR1)為1后 .INT0 管腳或 /INT1管腳高電平啟動定時器/計數器。C/T 外部計數器 / 定時器方式選擇位 C/T = 0 定時方式; C /T = 1 計數方式。M1M2 工作模式選擇位。 M1 M0 模式 說明 0 0 0 13位定時/計數器 八位TH(7 0)+ 低五位TL(4 0) 0 1 1 16位定時/計數器 TH(7 0)+ TL(7 0) 1 0 2 8位計數初值自動重裝 TL(7 0) TH(7 0) 1 1 3 T0工作在兩個8位定時/計數。運行,而T1只能工作方式2, TCON TR1 TR0 TR0 定時 / 計數器0運

16、行控制位。 軟件置位,軟件復位。 與GATE有關,分兩種情況: GATE = 0 時,若TR0 = 1,開啟T0計數工作; 若TR0 = 0,停止T0計數。 GATE = 1 時,若TR0 = 1 且/INT0 = 1時,開啟T0計數; 若TR0 = 1 但 /INT0 = 0,則不能開啟T0計數。 若TR0 = 0, 停止T0計數。TR1 定時 / 計數器1運行控制位。 用法與TR0類似。 C/T = 0 定時C/T = 1 對外計數。定時:fosc / 12 = 1 /(12/fosc) = 1 / Tcy 等間隔,次數已定,時間確定 Tcy 即對機器周期進行計數。 左圖定時時間為n

17、15;Tcy。 n 計數:脈沖不等間隔。 外部管腳輸入(T0 P3.4、T1 P3.5 )每個下降沿計數一次 確認一次負跳變需兩個機器周期,(要求計數脈沖的高、低電平要大于一個機器周期)所以,計數頻率最高為fosc / 24。定時器初值計算計數脈沖的個數 N=t(定時時間)/Tcy(機器周期計數初值X=M(定時計數器的模)-N 方式0 X=213-N =8192-N 方式1 X=216-N=65536-N 方式2 X=28-N=256-N推薦工作方式1 和方式2例1、設計一個P1.0能產生t=1ms的周期信號發生器,主頻試編程。解:選T0; C/T=0,GATE= 0定時時間0.5ms N =

18、 t / Tcy= t /(12×(1/fosc)= 500 所以, X = M 500 ,問:M取多少? 模式0、模式1均可,取模式1,M=216X = 65536-500=65036 = FE0CH TH0 0FEH TL0 0CH程序: ORG 0000H LJMP MAIN ORG 000BH LJMP INSE1 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0FEH MOV TMOD,#01H SETB TR0; SETB ET0; SETB EA SJMP INSE1: MOV TL0,#0CH MOV TH0,#0

19、F0H CPL P10 RETI 單片機串行接口 8051單片機有一個異步全雙工串行通訊口 通過RXD(P3.0)接收 ,通過TXD(P3.1)發送,(串行通信有單工、半雙工、全雙工) ,8051單片機串行口有4種工作方式。異步通信一幀數據的格式如下空閑位 起始位 5 8位數據 奇偶校驗位 停止位 空閑位 3、串行通信方向 A B 發 單工 收 A B 發 半雙工 發 收 收 A 全雙工 B 發 收 收 發 4、波特率 即串行通信速率。 b/s 、 bps 舉例、設有一幀信息,1個起始位、8個數據位、1個停止位,傳輸速率為240個字符。求波特率。解: (181)×240 = 2400

20、 b/s = 2400波特。5、串行通信接口發送: CPU 通過指令MOV SBUF,A 來啟動發送 發送一幀數據完畢后TI置1,通過查詢方式查詢到TI=1或中斷方式可以繼續發送下一幀數據,并軟件復位TI=0 (CLR TI)D7 D6 D5 D4 D3 D2 D1 D0 發送數據寄存器 SBUF(99H)1 D7 D6 D5 D4 D3 D2 D1 D0 0 發送數據發送時鐘接收: 必須置位寄存器 SCON, REN位為1才能啟動串口接收數據,當接收一幀數據后,RI置1 ,CPU通過查詢RI=1或中斷方式,通過指令 MOV A.SBUF 來取走接收的數據,并軟件復位RI=0(CLR RI)接

21、收時鐘0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收數據 D0 D1 D2 D3 D4 D5 D6 D7 接收數據寄存器 SBUF(99H)CPU二、MCS-51機串行接口單片機有:通用異步接收/發送器 UART全雙工,4種工作方式,波特率可編程設置,可中斷。1、串口的組成 從編程角度講來看主要由以下寄存器組成。 PCON SMOD SCON SM0 SM1 SM2 REN TB8 RB8 TI RI SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF發 SBUF收SM0、SM1:工作方式選擇位SM2:多機通信控制位,常與RB8配合,決定是否激活RIREN:允許接

22、收TB8:發送的第九位數RB8:接收的第九位數TI :中斷標志RI SMOD:波特系數選擇位,0 20 = 1 1 21 = 22、串行口的工作方式(1)SM0、SM1=00;方式0:是8位同步移位寄存器方式,波特率固定為fosc / 12 RXD 接收/發送數據 TXD 產生同步移位脈沖接收/發送完,置位RI / TI ,(要求SM2 = 0)方式0 D7 D6 D5 D4 D3 D2 D1 D0 發送 D0 D1 D2 D3 D4 D5 D6 D7 接收無起始位,無停止位(2)SM0、SM1=01方式1:8位UART,波特率為(2SMOD×T1的溢出率)/ 32停止位 D7 D6

23、 D5 D4 D3 D2 D1 D0 起始位 發送位 TXD起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 接收位 RXD1幀信息,10位。 送RB8位波特率可變: 2SMOD / 32 ×(T1的溢出率)發送完置位TI。接收完數據置位RI。置位RI是有條件的。即:REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位為1。此時,數據裝載SBUF,停止位進入RB8,RI置1。(3)方式2( SM0、SM1=10)、方式3 (SM0、SM1=11) :9位UART,多機通信。多機通信只能工作在方式2、方式3停止位 TB8 D7 D6 D5 D4

24、 D3 D2 D1 D0 起始位 發送數據起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 接收數據 送SCON寄存器RB8位方式2波特率:(固定)2SMOD / 64 × fosc方式3波特率: 2SMOD / 32 ×(T1溢出率)數據發送串口方式2、3發送第九位數據必須通過軟件置事先寫入寄存器SCON的TB8位,把要發送的數據發送到SBUF(MOV SUBF,A) 啟動數據發送,發送完數據置位TI。CPU通過查詢方式查詢到TI=1或中斷方式可以繼續發送下一幀數據,并軟件復位TI=0 (CLR TI)數據接收接收: 必須置位寄存器 SCON REN

25、位為1才能啟動串口接收數據,當接收一幀數據后此時,數據裝載SBUF,接收到的第9位數據(TB8)送SCON寄存器RB8位 ,RI置1。,CPU通過查詢RI=1或中斷方式,通過指令 MOV A.SBUF 來取走接收的數據,并軟件復位RI=0(CLR RI)3、波特率的設置方式0、方式2固定。方式1,方式3可變。波特率 = 2SMOD / 32 ×(T1的溢出率) T1溢出率 = 單位時間溢出次數 = 1 /(T1的定時時間)而T1的定時時間t就是T1溢出一次所用的時間。此情況下,一般設T1工作在模式2(8位自動重裝初值)。 N = 28 t / T, t = (28N)T =(28N)

26、×12 / fosc所以,T1溢出率 = 1/t = fosc / 12(28N),故, 波特率 = 2SMOD / 32 × fosc / 12(256N)。若已知波特率,則可求出T1的計數初值: y = 2562SMOD×fosc / (波特率×32×12)例、若fosc = 6MHz,波特率為2400波特,設SMOD = 1,則定時/計數器T1的計數初值為多少?并進行初始化編程。解:y = 2562SMOD×fosc / (2400×32×12)= 242.98243 = F3H 同理,fosc = 11.0

27、592MHz,波特率為2400,設SMOD = 0,則 y = F4H 初始化編程:MOV TMOD,#20HMOV PCON,#80HMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50H 指令系統指令按尋址方式分有 7種尋址方式,直接尋址(direct)、立即尋址(#20H) 、寄存器尋址(Rn)、寄存器間接尋址(Ri)、相對尋址(rel)、寄存器變址尋址(A+PC)、位尋址 ( ACC.1)指令按功能上分有5種 ,傳送類指令 、算術運算類指令、邏輯運算及移位類指令、控制轉移類指令、位操作類指令 指令三大屬性。功能屬性、空間屬性(指令站用的字節數)、

28、時間屬性(指令執行的機器周期數)傳送類指令 有四種尋址方式 對A的數據傳送只影響狀態標志位P訪問片RAM和SFR 指令格式 MOV 唯一的一條16位傳送指令 MOV DPTR,#DATA16訪問 片外 RAM 4條指令MOVX A,Ri MOVX A,DPTR( 這兩條指令是讀片外RAM的數據伴隨著控制信號RD*有效)MOVX Ri,A MOVX DPTR,A ( 這兩條指令是寫片外RAM的數據伴隨著控制信號WR*有效)訪問 程序存儲器ROM 2條指令MOVC A,A+PC MOVC A,A+DPTR ( 這兩條指令是讀程序ROM的數據伴隨著控制信號PSEN*有效)2、棧操作指令PUSH di

29、rectPOP direct不影響任何標志位。Direct 可以是存RAM 128個單元任意一個單元 也可以特殊功能寄存器 這里注意 PUSH ACC ( ACC是直接地址,不能寫A)PUSH direct 指令執行中,機器自動進行兩步操作:(1)(SP) (SP)+ 1(2)(SP) (direct)例1、設分析: 執行 PUSH DPL PUSH DPH 后,各單元中的容。(0AH)=23H (0BH)=01H (SP)=0BHPOP direct 指令執行中,機器也自動進行兩步操作:(1)(direct) (SP)(2)(SP) (SP) 1例2、設(SP)= 40H,(40H)= 12

30、H,(3FH)= 34H 執行 POP DPH POP DPL 后,各單元中的容。(SP) = 3EH,(DPTR)= 1234H,結論:1)PUSH 與 POP 操作過程剛好相反; 2)進、出棧規則: 先進后出,后進先出。應注意指令書寫先后順序; 3)可用于“保護現場,恢復現場”3、字節交換指令XCH A,RnXCH A,direct 整字節交換XCH A,RiXCHD A,RiSWAP A 半字節交換不影響任何標志位。 算術運算類指令包括:加、 減、乘、除;加一、減一。一、加法指令ADD A,Rn ;(A) (A)+ (Rn)以下類同。ADD A,directADD A,RiADD A,#

31、data無符號數相加時:若C = 1,說明有溢出(其值 > 255)。帶符號數相加時:若OV = D7cD6c = 1,說明有溢出。影響 C OV AC這三個標志位 奇偶標志P由累加器A的值決定INC A ;(A) (A)+1 ,以下類同。INC RnINC directINC RiINC DPTR不影響 C OV AC這三個標志位 奇偶標志P由累加器A的值決定邏輯操作類指令共分兩大類:單字節邏輯操作,雙字節邏輯操作,共24條。一、單字節邏輯操作指令CLR A ;(A) 0CPL A A中8位按位求反。循環左移、右移指令:RL ARLC ARR ARRC A二、雙字節邏輯操作指令“與操作

32、”:ANL A,Rn ; (A) (A)(Rn),以下類同。ANL A,directANL A,RiANL A,#dataANL direct,AANL direct,#data例1、(P1)= 35H,使其高4位輸出0,低4位不變。解; ANL P1,#0FH 此做法稱為“屏蔽”位。“或操作”:ORL A,Rn ; (A) (A)(Rn),以下類同。ORL A,directORL A,RiORL A,#dataORL direct,AORL direct,#data例2、將A中的低3位送入P1中,并且保持P1中高5位不變。ANL A,#07HANL P1,#0F8HORL P1,A ;(P1

33、)= P17P16P15P14P13A2A1A0這稱為“數位組合”。“異或操作”:XRL A,Rn ; (A) (A)(Rn),以下類同。XRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#data例3、設(P1)= 0B4H = 10110100B,執行: XRL P1,#00110001B 結果按# 0 0 1 1 0 0 0 1 取反,即:(P1)= 1 0 0 0 0 1 0 1 B = 85H 這稱為“指定位取反”。在上述ANL、ORL、XRL操作中,用于端口操作時,無論P0 P3是第一,還是第二操作數,都遵循“讀修改寫”端口

34、鎖存器的操作。§3-5 控制轉移類指令作用:改變程序計數器PC的值,從而改變程序執行方向。分為四大類:無條件轉移指令;條件轉移指令;調用指令;返回指令。一、無條件轉移指令LJMP addr16AJMP addr11SJMP relJMP A + DPTRLJMP addr16 ;長跳轉轉移目的地址 addr16 (PC);0000H FFFFH,64KBAJMP addr11 ;絕對轉移轉移目的地址的形成: 先(PC) (PC)+ 2; 后 PC15 11不變,PC10 0 addr10 064KB = 216 =25×211 = 32×2KB 轉移目的地址與(P

35、C)+ 2在同一個2KB圍。SJMP rel ;短轉移,相對尋址。轉移目的地址 = (PC)+ 2 + rel,所以 rel = 轉移目的地址(PC)2但,實際使用中常寫成 SJMP addr16,匯編時會自動轉換出rel。JMP A + DPTR ;間接轉移,散轉移指令。轉移目的地址 = (A) + (DPTR)二、調用指令LCALL addr16 ;長調用ACALL addr11 ;絕對調用LCALL addr16 ;轉移圍64KB,不影響標志位。執行中自動完成如下過程: (PC) (PC) + 3 (SP) (SP)+ 1 (SP) (PC7 0), 保護斷點地址低字節; (SP) (S

36、P)+ 2 (SP) (PC15 8),保存斷點地址高字節; (PC) addr16 ,目的地址送PC,轉子程序。例2、設(SP)= 07H,(PC)= 2100H,子程序首地址為3456H,執行: LCALL 3456H MOV A,20H ······執行結果:(SP)= 09H,(09H)= 21H,(08H)= 03H,(PC)= 3456HACALL addr11 ; 轉移圍與(PC)+ 2在同一個2KB。不影響任何標志位,執行中機器自動完成下列過程: (PC) (PC)+ 2 (SP) (SP)+ 1 (SP) (PC7

37、0) (SP) (SP)+ 2 (SP) (PC15 8) (PC10 0) addr10 0三、返回指令從子程序返回主程序。RET ;調用子程序返回;(子程序不能缺少的指令)RETI ;中斷子程序返回。(中斷程序不能缺少的指令)(PC15 8) (SP) (SP) (SP) 1 (PC7 0) (SP) (SP) (SP) 2例3、設(SP)= 0BH,(0AH)= 23H,(0BH)= 01H 執行: RET 結果;(SP)= 09H,(PC)= 0123H(返回主程序)二、條件轉移指令實現按照一定條件決定轉移的方向。分三類。1、判零轉移JZ relJNZ relJZ rel ;若(A)=

38、 0 ,則轉移,否則順序執行。JNZ rel ; 若(A) 0,則轉移,否則順序執行。轉移目的地址 = (PC)+ 2 + rel不影響任何標志位。例1、將外RAM的一個數據塊(首地址為DATA1)傳送到部數據RAM(首地址為DATA2),遇到傳送的數據為零時停止傳送,試編程。解: MOV R0,#DATA2MOV DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 MOV R0,A INC R0 INC DPTR SJMP LOOP1LOOP2: SJMP LOOP22、比較轉移指令功能:比較二個字節中的值,若不等,則轉移。CINE A,#data,relCJNE

39、 A,direct,relCJNE Ri,#data,relCJNE Rn,#data,rel該類指令具有比較和判斷雙重功能,比較的本質是做減法運算,用第一操作數容減去第二操作數容,但差值不回存。轉移目的地址 = (PC)+ 3 + rel若第一操作數容小于第二操作數容,則(C)= 1,否則(C)= 0。該類指令可產生三分支程序: 即,相等分支;大于分支;小于分支。例2、設P1口的P1.0 P1.3為準備就緒信號輸入端,當該四位為全1時,說明各項工作已準備好,單片機可順序執行,否則,循環等待。解: MOV A,P1ANL A,#0FHCJNE A,#0FH,WAIT ;P1.0 P1.3不為全

40、1時,返回WAITMOV A,R2······3、循環轉移指令DJNZ Rn,rel ;(二字節指令)DINZ direct,rel ;(三字節指令)本指令也為雙功能指令,即減1操作和判斷轉移操作。第一操作數容減1后,若差值不為零,則轉移;否則順序執行。轉移目的地址 = (PC)+ 2或3 + rel例3、將8031部RAM的40H 4FH單元置初值 #A0H #AFH。解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP: MOV R0,A INC R0 INC A DJNZ R2,LOOP 

41、67;3-6 位操作指令包括:位傳送指令、條件轉移指令、位運算指令。位操作由單片機布爾處理器來完成。位地址的四種表示:1)使用直接位地址表示:如20H、30H、33H等;2)使用位寄存器名來表示;如C、OV、F0等;3)用字節寄存器名后加位數來表示:如PSW.4、P0.5、ACC.3等;4)字節地址加位數來表示:如20.0、30.4、50.7等。一、位傳送指令MOV C,bitMOV bit,C功能:(C) (bit);二、位狀態控制指令CLR bit ;(bit) 0SETB bit ;(bit) 1CPL bit ;(bit) (/ bit)例1、編程通過P10線連續輸出256個寬度為5個機器周期長的方波。解: MOV R0,#00H CLR P

溫馨提示

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

評論

0/150

提交評論