MCS-51單片機復習要點_第1頁
MCS-51單片機復習要點_第2頁
MCS-51單片機復習要點_第3頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、MCS-51單片機8051單片機是8位單片機,有40個管腳,8根數據線,16根地址線。單片機的八大組成部分:CPU、ROM、RAM、I/O 、定時/ 計數器、串口、SFR、中斷服務系統、MCS-51機的存結構(如圖1所示)FFFFH60KBFFFFH64KB外部ROM1000H外部RAM程序存儲器部數據存儲器物理上分為:4個空間,圖1 MCS-51機的存結構 片ROM、片夕卜ROM邏輯上分為;3個空間,片RAM、片外RAM程序存(片、外)統一編址 MOVC數據存儲器(片)MOV數據存儲器(片外)MOVX1、程序存尋址圍:0000H FFFFH 容量 64KBEA = 1,尋址從部ROM ; E

2、A = 0,尋址從外部 ROM 地址長度:16位 存儲器地址空間為64KB作用:存放程序及程序運行時所需的常數。外部數據存儲器0FFFHViLFFH80H7FH特殊功能|寄存器4KB 內部EA = 10FFFH4KB外部EA = 0內咅B RAM0000H0000H00H部170000H8051單片機6個具有特殊含義的單元是:0000H 系統復位,PC指向此處;0003H 外部中斷0入口000BHT0溢出中斷入口0013H外中斷1入口001BHT1溢出中斷入口0023H串口中斷入口2、部數據存儲器物理上分為兩大區:00H 7FH即128BRAM 和SFR區。如圖2所示80字節數據緩沖器用161

3、2832字節可位尋址位4組R0R7工作寄存器二、殊功能寄存器SFR尋址空間離散分配在:80H FFH,注意PC不在此圍。地址末尾為0或8的SFR具有位尋址功能1、CPU是運算器加控制器2、算術運算寄存器(1)累加器A( E0H)(2)B寄存器:乘、除法運算用(3)程序狀態字PSW寄存器:包含程序運行狀態信息CYAC FORS1RS0 |OVPCY( PSW.7) 進位/借位標志;位累加器。AC ( PSW.6輔助進/借位標志;用于十進制調整。F0 ( PSW.5) 用戶定義標志位;軟件置位/清零。OV ( PSW.2) 溢出標志; 硬件置位/清零。P ( PSW.0) 奇偶標志;A中1的個數為

4、奇數P = 1;否則P = 0 RS1、RS0 寄存器區選擇控制位。00 :0區R0 R701 :1區R0 R710 :2區R0 R711 :3區R0 R72、指針寄存器( 1)程序計數器 PCPC的容是指明即將執行的下一條指令的地址,16位,尋址64KB圍, 復位時PC = 0000H具有自動加1功能 不可尋址即不能通過指令訪問。( 2)堆棧指針 SP指明棧頂元素的地址,8位,可軟件設置初值,復位時SP = 07H(3)數據指針 DPTRR0、R1、DPTR ;指明訪問的數據存儲器的單元地址,16位,尋址圍64KB。DPTR=DPH + DPL,也可單獨使用。沒有自動加1功能 通過軟件INC

5、 DPTR容加1時序單片機的各種操作都是在一系列脈沖控制下進行的,而各脈沖在時間上是有先后順序的,這種順序就稱為時序。執令周期:即從取指到執行完,所需時間。 不同機器指令周期不一樣;即使相同機器,不同的指令其指令周期也不一樣。 機器周期:機器的基本操作周期。一個指令周期含若干機器周期(單、雙、四周期) 狀態周期:一個機器周期分 6個狀態周期 Si 每個狀態周期含兩個振蕩周期,即相位 P1、 P2。振蕩周期:由振蕩時鐘產生。 振蕩周期 Tosc = 1/fosc 一個機器周期=12個振蕩周期=12 x 1/fosc。例如,若fosc = 12MHz,則一個機器周期 =1卩s。時鐘的產生:通過XT

6、AL1 (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/O 口 P0、P1、P2、P3作為通用 I / O 使用, 是一個準雙向口:“讀管腳在輸入數據時應先把口置 1,使兩個 FET 都截止,引腳處于懸浮狀態,可作高 阻抗輸入” MOV P1.#0FFHMOV A,P1讀端口數據方式是一種

7、對端口鎖存器中數據進行讀入的操作方式, CPU 讀入的這個數據 并非端口引腳的數據。(對端口進行讀-修改-寫類指令 列如CPL P1.0是讀端口鎖存器而不是管腳)一、P0 口地址80H系統復位后PO=FFH(1) P0 口可作通用I / O 口使用,又可作地址/數據總線口;(2) P0既可按字節尋址,又可按位尋址;(3) P 0作為輸入口使用時:是準雙向口;(4) 作通用 I / O 口輸出時:是開漏輸出; (外部管腳必須接上拉電阻)(5) 作地址/數據總線口時,P0是一真正雙向口,分時使用,提供地址線A0A7由ALE 控制信號鎖存,數據線 D0D7二、P1 口地址 90H 地址 90H 系統

8、復位后 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=FFH2、特點(1) 作通用 I / O 時,是一準雙向口,不是開漏輸出(無需外接上拉電阻) 。(2) P3 口具有第二功能1、P0 口:地址低8位

9、與數據線分時使用端口,2、P1 口:按位可編址的輸入輸出端口,3、P2 口:地址高8位輸出口4、 P3 口:雙功能口。若不用第二功能,也可作通用 I / O 口。5、按三總線劃分:地址線:P0低八位地址,P2高八地址;數據線:P0輸入輸出8位數據;控制線:P3 口的 8 位(RXD、TXD、INTO、INT1、TO、T1、WR*、RD*加上 PSEN*、ALE、EA組成制總線。)中斷系統五個中斷源,兩個優先級中斷請求源(五源中斷)五個中斷源:入口地址外部中斷0 (/INTO)0003HTO溢出中斷OOOBH外部中斷1 (/INT1 )0013HT1溢出中斷001BH串口中斷0023H有了中斷請

10、求,如何通知 CPU?通過中斷請求標志位來通知 CPU。外部中斷源、定時/計數器的中斷請求標志位分布在 TCON 中; 串口中斷標志位分布在 SCON中。TF1TR1TFOTR0IE1IT1IE0IT0TIRI中斷請求標志位IE0( INTO) IE1( INT1) TFO(TO) TF1(T1) TI/RI (串 口)TF1T1的溢出中斷標志。硬件置1,硬件清O (也可軟件清O)。TFO TO的溢出中斷標志。(同TF1,只是針對TO的)IE1 外部中斷1(/INT1 )請求標志。外部有中斷請求時,硬件使IE1置1,硬件清0。IE0 外部中斷0(/INTO)請求標志。IT1 外部中斷1(/IN

11、T1 )觸發類型控制位。IT1 = 0,低電平觸發。IT1 = 1,下降沿觸發。IT0 夕卜中斷0 (/INTO )觸發類型控制位,用法同IT1 外部中斷INTO、INT1觸發方式有電平觸發和跳變觸發TI串口發送中斷標志位。發送完數據,硬件使TI置1,軟件清0 (CLR TI)RI串行口接收中斷標志位。硬件置1,軟件清0。二、 中斷控制(兩級管理)1、中斷屏蔽在中斷源與CPU之間有一級控制,類似開關,其中第一級為一個總開關, 第二級為五個分開關,由IE控制。EAESET1EX1ET0EX0EA總控制位ES串口控制位ET1T1中斷控制位EX1/INT1控制位ET0T0中斷控制位EX0 /INT0

12、控制位若為“T,允許(開關接通) 若為“ 0”,不允許(開關斷開)例如,SETB EACLR IE.72、中斷優先級為什么要有中斷優先級?CPU按中斷申請時間先后順序響應中斷,同一時間只能響應一個中斷請求。若同時來了兩個或兩個以上中斷請求 CPU響應高級別中斷。為此將5個中斷源分成高級、低 級兩個級別,高級優先,由IP控制。同時同級的中斷源申請中斷 CPU按優先順序響應中斷。PSPT1PX1PT0PX0以上各位與IE的低五位相對應,為“1”時為高級。初始化編程時,由軟件確定 例如,SETB PT0 或 SETB IP.1CLR PX0 等。同一級中的5個中斷源的優先順序是:/INT0中斷高T0

13、中斷/INT1中斷T1中斷串口中斷卄低(注意是同級)廠家出廠時已固化好順序< 事先約定中斷嵌套 同級或低級中斷不能打斷正在響應的中斷的服務程序, 高級中斷能夠打斷低級中斷 服務程序而形成中斷嵌套定時/計數器定時/計數器 兩個定時器/計數器TO、T1四種工作方式 中斷方式定時器程序初始化主要部分如下MOV TMOD,#DATA ;設置定時器工作方式MOV TH0(TH1),# DATA ;給定時器計數器裝入初值MOV TLO ( TL1),# DATASETB EA;開中斷SETB ETO( ET1);開中斷SETB TRO(TR1);啟動定時器計數器、定時/計數器的結構TO、T1均為16

14、位加1計數器TH0TLO工作方式1、工作方式控制寄存器 TMODT1TOTMODGATEC/TM1MOGATE C/TM1MOGATE門控位。GATE = O軟件啟動,僅由軟件置TRO(TR1 )為1啟動定時器/計數器;置O 停止定時/計數GATE = 1硬件啟動,軟件置TRO(TR1)為1后.INTO管腳或/INT1管腳高 電平啟動定時器/計數器。C/T外部計數器/定時器方式選擇位C/T = O定時方式;C /T = 1計數方式。M1M2 工作模式選擇位。M1 MO 模式說明OOO13位定時/計數器 八位TH( 7 O)+低五位TL( 4 O)O1116 位定時 /計數器 TH( 7 0)+

15、 TL( 7 0)TR028位計數初值自動重裝TL (7 0) TH ( 7 0)TR1定時/計數器1運行控制位。用法與TR0類似。1 13T0工作在兩個8位定時/計數。運行,而T1只能工作方式2,TR1TR0定時/計數器0運行控制位。軟件置位,軟件復位。與GATE有關,分兩種情況:GATE = 0時,若TR0 = 1,開啟T0計數工作;若TR0 = 0,停止T0計數。GATE = 1時,若TR0 = 1且/INT0 = 1時,開啟T0計數;若TR0 = 1但/INT0 = 0,貝U不能開啟T0計數' 若TR0 = 0, 停止T0計數。C/T = 0定時C/T = 1對外計數定時:fo

16、sc / 12 = 1 / (12/fosc)= 1 / Tcyrun等間隔,次數已定,時間確定 即對機器周期進行計數。左圖定時時間為nx Tcy。計數:脈沖不等間隔。 外部管腳輸入(T0 P3.4、T1 P3.5 )每個下降沿計數一次- LI U 確認一次負跳變需兩個機器周期,(要求計數脈沖的高、低電平要大于一個機器周期)所以,計數頻率最高為fosc / 24定時器初值計算計數脈沖的個數 N=t (定時時間)/Tcy(機器周期計數初值X=M(定時計數器的模)-N方式 0 X=213-N =8192-N方式 1X=216-N=65536-N方式 2X=28-N=256-N推薦工作方式1和方式2

17、 例1、設計一個P1.0能產生t=1ms的周期信號發生器,主頻試編程解:選 T0;C/T=0,GATE= 0 定時時間 0.5msN = t / Tcy= t / (12x( 1/fosc) = 500所以,X = M 500,問:M取多少?模式0、模式1均可,取模式1, M=216X = 65536-500=65036 = FE0CHTH0 0FEHTL0 0CH程序:ORG 0000HLJMP MAINORG 000BHLJMP INSE1ORG 1000HMAIN : MOV SP, #60HMOV TL0, #0CHMOV TH0, #0FEHMOV TMOD , #01HSETB T

18、R0;SETB ET0;SETB EASJMP $INSE1:MOV TL0, #0CHMOV TH0, #0F0HCPL P10RETI單片機串行接口8051單片機有一個異步全雙工串行通訊口 通過RXD(P3.0)接收,通過 TXD(P3.1)發送,(串行通信有單工、半雙工、全雙工),8051單片機串行口有4種工作方 式。異步通信一幀數據的格式如下空閑位起始位58位數據奇偶校驗位停止位空閑位3、串行通信方向A單工AB4、波特率即串行通信速率。 b/s 、 bps舉例、設有一幀信息,1個起始位、8個數據位、1個停止位,傳輸速率為 240個字符。求波特率。解:(1 + 8+ 1)X 240 =

19、2400 b/s = 2400波特。5、串行通信接口發送:CPU通過指令MOV SBUF,A來啟動發送 發送一幀數據完畢后TI置1,通發送時鐘接收:必須置位寄存器SCON, REN位為1才能啟動串口接收數據,當接收一幀數據后,RI置1,CPU通過查詢RI=1或中斷方式,通過指令 MOV A.SBUF來取走接收的數據, 并軟件復位RI=0( CLR RI)接收時鐘接收數據寄存器CPU接收數據/發送器 UART4種工作方式,波特率可編程設置,可中斷。二、MCS-51機串行接口 單片機有:通用異步接收全雙工,1、串口的組成SMOD從編程角度講來看主要由以下寄存器組成。PCONSM0SM1 SM2RE

20、NTB8RB8TIRISCOND7D6D5D4D3D2D1D0SBUF 發I SBUF 收SM0、SM1:工作方式選擇位SM2 :多機通信控制位,常與 RB8配合,決定是否激活RIREN :允許接收TB8:發送的第九位數RB8:接收的第九位數TI I:中斷標志RISMOD :波特系數選擇位,0 2° = 11 21 = 22、串行口的工作方式(1)SM0、SM仁00;方式0:是8位同步移位寄存器方式,波特率固定為 fosc / 12RXD 接收/發送數據TXD產生同步移位脈沖接收/發送完,置位RI / TI ,(要求SM2 = 0)D7D6 D5D4D3D2 D1D0方式0D0D1D

21、2D3D4D5 | D6D7無起始位,無停止位(2)SMO、SM1=01 方式 1: 8 位 UART,波特率為(2SMOD X T1 的溢出率)/ 32起始位D0D1D2D3D4D5D6D7停止位1幀信息:10位。送RB8位波特率可變:2smod / 32 X( T1的溢出率)發送完置位TI。接收位RXD停止位D7D6D5D4D3D2D1D0起始位發送位TXD接收完數據置位RI o置位RI是有條件的。即:REN = 1, RI = 0且SM2 = 0或SM2 = 1但是接收到的停止位為1 此時,數據裝載SBUF,停止位進入RB8, RI置1。(3)方式2 ( SMO、SM仁10)、方式3 (

22、SMO、SM仁11) : 9位UART,多機通信。多機通信只能工作在方式2、方式3停止位TB8D7D6D5D4 D3D2D1D0 起始位起始位D0D1D2D3D4D5D6D7TB8停止位發送數據接收數據送SCON寄存器RB8位方式2波特率:(固定)2smod / 64 X fosc方式3波特率:2SMOD / 32 X( T1 溢出率)數據發送串口方式2、3發送第九位數據必須通過軟件置事先寫入寄存器SCON的TB8位,把要發送的數據發送到SBUF ( MOV SUBF,A )啟動數據發送,發送完數據置位 TI。CPU通過查詢 方式查詢到TI=1或中斷方式可以繼續發送下一幀數據,并軟件復位TI=

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

24、自動重裝初值)。N = 28 t / T, t = (28N) T =(28N)X 12 / fosc 所以, T1 溢出率 = 1/t = fosc / 12(28N), 故, 波特率 = 2SM°D / 32 X fosc / 12( 256N)。 若已知波特率,則可求出 T1 的計數初值:y = 256 2sm°d X fosc / (波特率 X 32X 12)例、若fosc = 6MHz,波特率為2400波特,設SMOD = 1,則定時/計數器T1的計數初值為多 少?并進行初始化編程。解:y = 256 2smod X fosc /(2400X 32X 12) =

25、242.98" 243 = F3H同理,fosc = 11.0592MHz,波特率為 2400,設 SMOD = 0,貝Uy = F4H初始化編程:M°VTM°D , #20HM°VPC°N, #80HM°VTH1 , #0F3HM°VTL1 , #0F3HSETBTR1M°VSC°N, #50H指令系統 指令按尋址方式分有 7種尋址方式,直接尋址(direct)、立即尋址(#20H)、寄存器尋址(Rn)、寄存器間接尋址(Ri)、相對尋址(rel)、寄存器變址尋址(A+PC)、位尋址(ACC.1) 指令按

26、功能上分有5種,傳送類指令、算術運算類指令、邏輯運算及移位類指令、控制轉 移類指令、位操作類指令指令三大屬性。功能屬性、空間屬性(指令站用的字節數)、時間屬性(指令執行的機器周 期數)傳送類指令有四種尋址方式對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條

27、指令MOVC A,A+PC MOVC A,A+DPTR (這兩條指令是讀程序 ROM的數據伴隨著控制信號 PSEN*有效)2、棧操作指令PUSH directPOP direct不影響任何標志位。Direct可以是存RAM 128個單元任意一個單元 也可以特殊功能寄存器這里注意PUSH ACC ( ACC是直接地址,不能寫A)PUSH direct指令執行中,機器自動進行兩步操作:(1) (SP) 一 (SP) + 1(2) (SP)(direct)例1、設分析:執行 PUSH DPLPUSH DPH后,各單元中的容。(0AH)=23H(0BH)=01H(SP) =0BHPOP direct指

28、令執行中,機器也自動進行兩步操作:(1) (direct) (SP)(2) (SP) (SP) 1例 2、設(SP) = 40H, (40H) = 12H, (3FH) = 34H執行 POP DPHPOP DPL后,各單元中的容。(SP) = 3EH,(DPTR) = 1234H,結論:1) PUSH與POP操作過程剛好相反;2) 進、出棧規則:先進后出,后進先出。應注意指令書寫先后順序;3) 可用于“保護現場,恢復現場”3、字節交換指令XCH A,Rn 'XCH A,direct整字節交換XCH A,RiXCHD A,Ri _SWAP A -半字節交換不影響任何標志位。算術運算類指

29、令包括:加、減、乘、除;加一、減一。一、加法指令ADDA,Rn; (A)-(A) +(Rn)以下類同ADDA,directADDA,RiADDA,#data無符號數相加時:若C = 1,說明有溢出(其值 255 ) 帶符號數相加時:若 OV = D7c® D6c = 1,說明有溢出。 影響C OV AC這三個標志位 奇偶標志P由累加器A的值決定INC A; (A) (A) +1 ,以下類同INC RnINC directINC RiINC DPTR不影響C OV AC這三個標志位 奇偶標志P由累加器A的值決定邏輯操作類指令共分兩大類:單字節邏輯操作,雙字節邏輯操作,共24條一、單字節

30、邏輯操作指令CLR A;(A) 0CPL AA中8位按位求反。循環左移、右移指令:RL ARLC ARR ARRC A二、雙字節邏輯操作指令“與操作”:ANL A , Rn;(A)(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)V( Rn),以下類同ORLA,directORLA,RiORLA,#dataORLdirect,AORLdir

31、ect,#data例2、將A中的低3位送入P1中,并且保持P1中高5位不變。ANL A, #07HANL P1, #0F8HORL P1, A;( P1)=這稱為“數位組合”。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

32、0 0 0 1 0 1 B = 85H這稱為“指定位取反”。,還是第二操在上述ANL、ORL、XRL操作中,用于端口操作時,無論 P0 P3是第 作數,都遵循“讀一修改一寫”端口鎖存器的操作。§ 3-5控制轉移類指令作用:改變程序計數器PC的值,從而改變程序執行方向分為四大類:無條件轉移指令;條件轉移指令;調用指令;返回指令。、無條件轉移指令LJMP addr16AJMP addrllSJMP relJMP A + DPTRLJMP addr16;長跳轉轉移目的地址 addr16 ( PC); OOOOH FFFFH, 64KBAJMP addrll;絕對轉移轉移目的地址的形成:先(

33、PC) ( PC)+ 2;addr1O 0后 PC15 11 不變,PC10 0 64KB = 216 =25X 211 = 32 X 2KB轉移目的地址與(PC) + 2在同一個2KB圍。SJMP rel;短轉移,相對尋址。轉移目的地址=(PC) + 2 + rel,所以rel =轉移目的地址一(PC) 2但,實際使用中常寫成SJMP addr16,匯編時會自動轉換出rel轉移目的地址=(A)+(DPTR)、調用指令LCALLaddr16ACALLaddrll;絕對調用LCALLaddr16;轉移圍64KB,不影響標志位。執行中自動完成如下過程:(PC)(PC)+ 3(SP) ( SP)+

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

35、SP)'(SP) + 2(SP'(PP4 C Q(SP(PCI5 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

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

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

38、WAIT ; P1.0 P1.3不為全 1 時,返回 WAITMOVA, R23、循環轉移指令DJNZ Rn, rel;(二字節指令)DINZ direct, rel;(三字節指令)本指令也為雙功能指令,即減 1 操作和判斷轉移操作。第一操作數容減 1 后,若差值不為零,則轉移;否則順序執行。轉移目的地址 = (PC)+ 2或 3 + rel例 3、將 8031 部 RAM 的 40H 4FH 單元置初值 #A0H #AFH解: MOVR0, #40HMOVR2, #10HMOVA, #0A0HINC ROINC ADJNZ R2, LOOP§ 3-6位操作指令包括:位傳送指令、條件

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

40、 P10LOOP: CPL P10NOPNOPDJNZ R0,LOOP四、布爾條件轉移指令有5條,分別對C和直接位地址進行測試,并根據其狀態執行轉移。1、判布爾累加器轉移JC rel;( C)= 1,轉移,否則順序執行。JNC rel;(C)= 0,轉移,否則順序執行。不影響標志。轉移地址 :(PC C + rel20H單元,小例3、比較部RAM勺30H和40H單元中的二個無符號數的大小,將大數存入數存入21H單元,若二數相等,則使 RAM勺第127位置1。SETB 7FHSJMP $LOOP1 : JC LOOP2MOV 20H, AMOV 21H, 40HSJMP $LOOP2 : MOV

41、 20H ,40HMOV 21H , ASJMP $2、判位變量轉移JB bit ,rel;(bit )= 1 ,則轉移,否則順序執行JBC bit ,rel;(bit )= 1 ,則轉移,否則順序執行,且無論bit )是否等于 1,均使該位清零JNB bit ,rel;(bit )= 0 ,則轉移,否則順序執行不影響標志。例4、試判斷A中的正負,若為正數,存入20H單元;若為負數則存入21H單元解:JB ACC7, LOOPMOV 20H, ASJMP $LOOP : MOV 21H ASJMP $單片機小系統及外擴展單片機資源少,容量小,在進行較復雜過程的控制時,它自身的功能遠遠不能滿足需

42、要。為此,應擴展其功能。一、5-1 MCS-51單片機最小系統單片機最小系統,或者稱為最小應用系統,是指用最少的元件組成的單片機電路可以工作運行 指令的系統1、8051/8751硬件最小系統對51系列單片機來說,最小系統一般應該包括:單片機、晶振電路、復位電路2、8031硬件最小系統8031單片機片無 ROM,若要正常工作,必需外配 ROM。外接ROM后,P3 口、P2 口、P0 口均被占用只剩下P1 口作I / O 口用,其它功能不變。二、存儲器的擴展1、三總線的連接 ABUS、 DBUS、CBUSABUS (A15A8A7A0) DBUS( D7D0)CBUSPSEN*是程序存儲器讀選通信

43、號RD* WR*是片外數據存儲器讀、寫選通信號EA是片和片外程序存儲器的選擇信號EA=1, CPU開始從片程序存儲器取指令,PC大于0FFF后轉向片外程序存儲器取指令。EA=0,CPU開始從片外程序存儲器取指令。 ALE鎖定P0 口提供的地址低8位(A7A0)的鎖存信號1、數據線的連接(D7D0)P0 口的八位線承擔此任,此時不用外接上拉電阻。2、地址線的連接P0 口承擔地址低八位線,A0 A7 ;P2 口承擔地址高八位線。A8 A15。注意:P0 口線地址/數據分時復用,需用控制信號 ALE通過地址鎖存器74LS373鎖存地址 低 8 位(A7A0 )3、控制線的連接對存儲器來講控制線無非是

44、:芯片的選通控制、讀寫控制。單片機與外部器件數據交換要遵循兩個重要原則:一是,地址唯一性,一個單元一個地址。二是,同一時刻,CPU只能訪問一個地址,即只能與一個單元交換數據。 不交換時,外部器件處于鎖閉狀態,對總線呈浮空狀態。選通:CPU與器件交換數據或信息,需先發出選通信號/CE或/CS,以便選中芯片 讀/寫:CPU向外部設備發出的讀/寫控制命令。ROM :/OE /PSENRAM :/WE /WR/OE/RD2) 存儲器地址編碼RAM 6116: “ 16” 2K X 8b = 2KB21X 210 = 211即6116有11根地址線。地址空間:A10 A9 A8 A7 A6A5 A4A3

45、A2A 1 A0最低地址:0 0 0 0 00 000000000H6116本身最高地址:1 11111 111111111H的地址空間MCS-51單片機尋址圍:64KB6X 210 = 216即16位地址線地址空間: A15A14A13A12A11A10A9A8A7A0 單片機X X X X X A10A9A8A7 A0 611625 = 322KB上式中:“X”表示0或1。即單片機地址空間中包含有 32個2KB。某片6116占據的是哪2KB不能確定一一地址浮動。 只有限定A15A11的取值才能確定6116在系統中的地址圍。如,P2.6 = 0,選中 6116的/CS 線。設 P2.7 P2.5 P2.4 P2.3假定全為 1貝U:6116地址圍是 B800H BFFFH。同理,P2.7 P25 P24 P23假定全為 0則:6116地址圍是 0000H 07FFH;再設 P2.7選中 6116(設 P26 P25 P24 P23全為 1)則:地址圍是 7800H 7FFFH可見:存儲器芯片在系統中地址分布由兩個因素決定:一是,芯片本身的地址線(與容量有關) 二是,芯片選通

溫馨提示

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

評論

0/150

提交評論