(完整版)MCS-51單片機(jī)復(fù)習(xí)要點(diǎn)_第1頁(yè)
(完整版)MCS-51單片機(jī)復(fù)習(xí)要點(diǎn)_第2頁(yè)
(完整版)MCS-51單片機(jī)復(fù)習(xí)要點(diǎn)_第3頁(yè)
(完整版)MCS-51單片機(jī)復(fù)習(xí)要點(diǎn)_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余27頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、MCS-51單片機(jī)8051 單片機(jī)是 8 位單片機(jī),有 40 個(gè)管腳, 8 根數(shù)據(jù)線, 16 根地址線。單片機(jī)的八大組成部分: CPU 、ROM、RAM、I/O 、定時(shí) / 計(jì)數(shù)器、串口、SFR、中斷服務(wù)系統(tǒng)一、 MCS-51 機(jī)的內(nèi)存結(jié)構(gòu)(如圖 1 所示 )FFFFH60KB外部 ROM1000H0FFFH0FFFHFFH4KB4KB80H內(nèi)部外部EA=17FHEA=00000H0000H7F00HFFFFH64KB外部RAM特殊功能寄存器內(nèi)部 RAM0000H程序存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器圖 1 MCS-51 機(jī)的內(nèi)存結(jié)構(gòu)物理上分為: 4 個(gè)空間, 片內(nèi) ROM 、片外 ROM片內(nèi)

2、 RAM 、片外 RAM邏輯上分為; 3 個(gè)空間,程序內(nèi)存(片內(nèi)、外)統(tǒng)一編址 MOVC 數(shù)據(jù)存儲(chǔ)器(片內(nèi)) MOV數(shù)據(jù)存儲(chǔ)器(片外)MOVX1、程序內(nèi)存尋址范圍: 0000H FFFFH容量 64KBEA = 1,尋址從內(nèi)部 ROM ;EA = 0,尋址從外部 ROM地址長(zhǎng)度: 16 位存儲(chǔ)器地址空間為64KB作用:存放程序及程序運(yùn)行時(shí)所需的常數(shù)。8051 單片機(jī) 6 個(gè)具有特殊含義的單元是:0000H 系統(tǒng)復(fù)位, PC 指向此處;0003H 外部中斷 0 入口000BH T0 溢出中斷入口0013H 外中斷 1 入口001BH T1 溢出中斷入口0023H 串口中斷入口2、內(nèi)部數(shù)據(jù)存儲(chǔ)器物

3、理上分為兩大區(qū): 00H 7FH 即 128B 內(nèi) RAM和 SFR 區(qū)。如圖 2 所示。7FH資料緩沖區(qū)堆棧區(qū)80 字節(jié)數(shù)據(jù)緩沖器用工作單元30H2FH16 字節(jié)位地址:20H00H7FH128 可位尋址位1FH3 區(qū)2 區(qū)1 區(qū)32 字節(jié)4 組 R0R7 工作寄存器00H0 區(qū)圖 2內(nèi)部數(shù)據(jù)存儲(chǔ)器二、 殊功能寄存器 SFR尋址空間離散分配在:80H FFH ,注意 PC 不在此范圍內(nèi)。 地址末尾為 0 或 8 的 SFR 具有位尋址功能1、 CPU是運(yùn)算器加控制器2、算術(shù)運(yùn)算寄存器(1)累加器 A (E0H)(2)B寄存器:乘、除法運(yùn)算用(3)程序狀態(tài)字 PSW寄存器:包含程序運(yùn)行狀態(tài)信息

4、。PSWCYACFORS1RS0OVPCY (PSW.7) 進(jìn)位 /借位標(biāo)志;位累加器。AC ( PSW.6)輔助進(jìn) /借位標(biāo)志;用于十進(jìn)制調(diào)整。F0 (PSW.5) 用戶定義標(biāo)志位;軟件置位/清零。OV ( PSW.2)溢出標(biāo)志;硬件置位 /清零。P (PSW.0) 奇偶標(biāo)志; A 中1的個(gè)數(shù)為奇數(shù) P = 1;否則 P = 0。RS1、 RS0 寄存器區(qū)選擇控制位。00:0區(qū) R0R701:1區(qū)R0R710:2區(qū)R0R711:3區(qū)R0R72、指針寄存器( 1)程序計(jì)數(shù)器 PCPC的內(nèi)容是指明即將執(zhí)行的下一條指令的地址,16位,尋址 64KB范圍,復(fù)位時(shí) PC = 0000H 具有自動(dòng)加 1

5、功能 不可尋址即不能通過(guò)指令訪問(wèn)。( 2)堆棧指針 SP指明棧頂元素的地址,8位,可軟件設(shè)置初值, 復(fù)位時(shí) SP = 07H( 3)數(shù)據(jù)指針 DPTRR0、R1、DPTR;指明訪問(wèn)的數(shù)據(jù)存儲(chǔ)器的單元地址,16位,尋址范圍 64KB。 DPTR = DPH + DPL ,也可單獨(dú)使用。 沒有自動(dòng)加 1功能 通過(guò)軟件 INC DPTR 內(nèi)容加 1時(shí)序單片機(jī)內(nèi)的各種操作都是在一系列脈沖控制下進(jìn)行的,而各脈沖在時(shí)間上是有先后順序的,這種順序就稱為時(shí)序。執(zhí)令周期:即從取指到執(zhí)行完,所需時(shí)間。不同機(jī)器指令周期不一樣;即使相同機(jī)器,不同的指令其指令周期也不一樣。機(jī)器周期:機(jī)器的基本操作周期。一個(gè)指令周期含若

6、干機(jī)器周期(單、雙、四周期)狀態(tài)周期:一個(gè)機(jī)器周期分6個(gè)狀態(tài)周期Si每個(gè)狀態(tài)周期含兩個(gè)振蕩周期,即相位P1、P2。振蕩周期:由振蕩時(shí)鐘產(chǎn)生。振蕩周期 Tosc = 1/fosc一個(gè)機(jī)器周期個(gè)振蕩周期= 12×1/fosc。= 12例如,若fosc = 12MHz,則一個(gè)機(jī)器周期s。= 1時(shí)鐘的產(chǎn)生:通過(guò) XTAL1 (19)、 XTAL (18)。這兩個(gè)管腳外部加石英晶體和電容組成振蕩器系統(tǒng)復(fù)位通過(guò)給RST管腳加高電平理論上大于兩個(gè)機(jī)器周期,實(shí)際大于,系統(tǒng)復(fù)后10ms除了、為FFH外,所有的寄存器均為00H,PC=0000H,PSW=00H工作SP=07H ,P0P1P2P3寄存器組

7、R0R7工作在 組。0并行 I/O 端口并行I/O端口四個(gè) 8 位 I/O 口 P0、P1、 P2、P3作為通用 I / O 使用,是一個(gè)準(zhǔn)雙向口:“讀管腳在輸入數(shù)據(jù)時(shí)應(yīng)先把口置 1,使兩個(gè) FET 都截止,引腳處于懸浮狀態(tài),可作高阻抗輸入” MOV P1.#0FFHMOV A,P1讀端口數(shù)據(jù)方式是一種對(duì)端口鎖存器中數(shù)據(jù)進(jìn)行讀入的操作方式,CPU 讀入的這個(gè)數(shù)據(jù)并非端口引腳的數(shù)據(jù)。 (對(duì)端口進(jìn)行讀 -修改 -寫類指令 列如 CPL P1.0是讀端口鎖存器而不是管腳 )一、 P0 口地址 80H 系統(tǒng)復(fù)位后 P0=FFH(1) P0 口可作通用 I / O 口使用,又可作地址 /數(shù)據(jù)總線口;(2

8、)P0 既可按字節(jié)尋址,又可按位尋址;(3)P0 作為輸入口使用時(shí):是準(zhǔn)雙向口;(4)作通用 I / O 口輸出時(shí):是開漏輸出;(外部管腳必須接上拉電阻)(5)作地址 /數(shù)據(jù)總線口時(shí), P0 是一真正雙向口, 分時(shí)使用,提供地址線 A0A7 由 ALE 控制信號(hào)鎖存,數(shù)據(jù)線 D0D7二、 P1 口地址 90H 地址 90H 系統(tǒng)復(fù)位后 P1=FFH2、特點(diǎn)(1)無(wú)地址 /數(shù)據(jù)口功能(2)可按字節(jié)尋址,也可按位尋址(3)作 I / O 輸入口時(shí):是一準(zhǔn)雙向口,不是開漏輸出(無(wú)需外接上拉電阻) 。三、 P2 口地址 A0H 系統(tǒng)復(fù)位后 P2=FFH2、特點(diǎn)(1)當(dāng) P2 口作為通用 I / O 時(shí)

9、,是一準(zhǔn)雙向口。(2)從 P2 口輸入數(shù)據(jù)時(shí),先向鎖存器寫“1”。(3)可位尋址,也可按字節(jié)尋址(4)可輸出地址高 8 位 A8A15 。四、 P3 口地址 B0H 系統(tǒng)復(fù)位后 P3=FFH2、特點(diǎn)(1)作通用 I / O 時(shí),是一準(zhǔn)雙向口,不是開漏輸出(無(wú)需外接上拉電阻)。(2)P3 口具有第二功能1、 P0 口:地址低 8 位與數(shù)據(jù)線分時(shí)使用端口,2、P1 口:按位可編址的輸入輸出端口,3、P2 口:地址高 8 位輸出口4、P3 口:雙功能口。若不用第二功能,也可作通用I / O 口。5、按三總線劃分:地址線: P0 低八位地址, P2 高八地址;數(shù)據(jù)線: P0 輸入輸出 8 位數(shù)據(jù);控制

10、線: P3 口的 8 位(RXD 、TXD 、INT0 、INT1 、T0、T1、WR* 、RD* 加上 PSEN*、ALE 、EA 組成制總線。 )中斷系統(tǒng)五個(gè)中斷源,兩個(gè)優(yōu)先級(jí)一、中斷請(qǐng)求源(“五源中斷”)五個(gè)中斷源:入口地址外部中斷 0(/INT0 )0003HT0 溢出中斷000BH外部中斷 1(/INT1 )0013HT1 溢出中斷001BH串口中斷0023H有了中斷請(qǐng)求,如何通知CPU?通過(guò)中斷請(qǐng)求標(biāo)志位來(lái)通知CPU。外部中斷源、定時(shí) / 計(jì)數(shù)器的中斷請(qǐng)求標(biāo)志位分布在TCON 中;串口中斷標(biāo)志位分布在SCON 中。TCONTF1TR1TF0TR0IE1IT1IE0IT0SCONTI

11、RI中斷請(qǐng)求標(biāo)志位IE0( INT0 )IE1(INT1 )TF0(T0) TF1(T1) TI/RI (串口)TF1 T1 的溢出中斷標(biāo)志。硬件置 1,硬件清 0(也可軟件清 0)。TF0 T0 的溢出中斷標(biāo)志。(同 TF1,只是針對(duì) T0 的)IE1 外部中斷 1(/INT1 )請(qǐng)求標(biāo)志。外部有中斷請(qǐng)求時(shí),硬件使IE1 置 1,硬件清 0。IE0 外部中斷 0(/INT0 )請(qǐng)求標(biāo)志。IT1 外部中斷 1(/INT1 )觸發(fā)類型控制位。IT1 = 0 ,低電平觸發(fā)。IT1 = 1 , 下降沿觸發(fā)。IT0 外中斷 0( /INT0 )觸發(fā)類型控制位,用法同IT1。外部中斷 INT0 、 IN

12、T1 觸發(fā)方式有電平觸發(fā)和跳變觸發(fā)TI 串口發(fā)送中斷標(biāo)志位。發(fā)送完數(shù)據(jù),硬件使TI 置 1,軟件清 0(CLRTI )RI 串行口接收中斷標(biāo)志位。硬件置 1,軟件清 0。二、中斷控制(兩級(jí)管理)1、中斷屏蔽在中斷源與 CPU 之間有一級(jí)控制,類似開關(guān),其中第一級(jí)為一個(gè)總開關(guān),第二級(jí)為五個(gè)分開關(guān),由 IE 控制。IEEAESET1EX1ET0EX0EA 總控制位ES 串口控制位若為“ 1”,允許(開關(guān)接通)ET1 T1 中斷控制位若為“ 0”,不允許(開關(guān)斷開)EX1 /INT1 控制位例如, SETBEAET0 T0 中斷控制位CLRIE.7EX0 /INT0 控制位2、中斷優(yōu)先級(jí)為什么要有中

13、斷優(yōu)先級(jí)?CPU 按中斷申請(qǐng)時(shí)間先后順序響應(yīng)中斷,同一時(shí)間只能響應(yīng)一個(gè)中斷請(qǐng)求。若同時(shí)來(lái)了兩個(gè)或兩個(gè)以上中斷請(qǐng)求 CPU 響應(yīng)高級(jí)別中斷。 為此將 5 個(gè)中斷源分成高級(jí)、 低級(jí)兩個(gè)級(jí)別,高級(jí)優(yōu)先,由 IP 控制。同時(shí)同級(jí)的中斷源申請(qǐng)中斷 CPU 按優(yōu)先順序響應(yīng)中斷。IPPSPT1PX1PT0PX0以上各位與 IE 的低五位相對(duì)應(yīng),為“ 1”時(shí)為高級(jí)。初始化編程時(shí),由軟件確定。例如, SETBPT0或SETBIP.1CLRPX0等。同一級(jí)中的5 個(gè)中斷源的優(yōu)先順序是: (注意是同級(jí) )/INT0 中斷高T0 中斷廠家出廠時(shí)已固化好順序/INT1 中斷事先約定T1中斷串口中斷低中斷嵌套 同級(jí)或低級(jí)

14、中斷不能打斷正在響應(yīng)的中斷的服務(wù)程序, 高級(jí)中斷能夠打斷低級(jí)中斷服務(wù)程序而形成中斷嵌套定時(shí) /計(jì)數(shù)器定時(shí) / 計(jì)數(shù)器兩個(gè)定時(shí)器 /計(jì)數(shù)器 T0 、 T1四種工作方式中斷方式定時(shí)器程序初始化主要部分如下MOVTMOD,#DATA;設(shè)置定時(shí)器工作方式MOVTH0 (TH1 ), # DATA ;給定時(shí)器計(jì)數(shù)器裝入初值MOVTL0 (TL1 ), # DATASETBEA;開中斷SETBET0 (ET1 );開中斷SETBTR0 (TR1 );啟動(dòng)定時(shí)器計(jì)數(shù)器一、定時(shí) / 計(jì)數(shù)器的結(jié)構(gòu)T0、T1 均為 16 位加 1 計(jì)數(shù)器。TH0計(jì)數(shù)值高八位TH1計(jì)數(shù)值高八位TL0TL1計(jì)數(shù)值低八位計(jì)數(shù)值低八位T

15、MOD工作方式TCON工作方式控制字1、工作方式控制寄存器TMODT1T0TMODGATEC/TM1M0GATEC/TM1M0GATE 門控位。GATE = 0 軟件啟動(dòng),僅由軟件置TR0(TR1)為 1 啟動(dòng)定時(shí)器 /計(jì)數(shù)器;置 0停止定時(shí) /計(jì)數(shù)GATE = 1 硬件啟動(dòng),軟件置TR0(TR1)為 1 后 .INT0 管腳或/INT1 管腳高電平啟動(dòng)定時(shí)器 /計(jì)數(shù)器。C/T 外部計(jì)數(shù)器/ 定時(shí)器方式選擇位C/T = 0 定時(shí)方式;C /T = 1 計(jì)數(shù)方式。M1M2 工作模式選擇位。M1 M0模式說(shuō)明00013位定時(shí) /計(jì)數(shù)器 八位 TH(7 0)+ 低五位 TL(4 0)01116位定時(shí)

16、 /計(jì)數(shù)器 TH(7 0)+ TL (7 0)1028 位計(jì)數(shù)初值自動(dòng)重裝TL(7 0)TH(7 0)113T0 工作在兩個(gè) 8 位定時(shí) /計(jì)數(shù)。運(yùn)行,而T1 只能工作方式2,TCONTR1TR0TR0 定時(shí) / 計(jì)數(shù)器 0 運(yùn)行控制位。軟件置位,軟件復(fù)位。與 GATE 有關(guān),分兩種情況:GATE = 0 時(shí),若 TR0 = 1,開啟 T0 計(jì)數(shù)工作;若 TR0 = 0,停止 T0 計(jì)數(shù)。若 TR0 = 1 但 /INT0 = 0 ,則不能開啟 T0 計(jì)數(shù)。若 TR0 = 0, 停止 T0 計(jì)數(shù)。TR1 定時(shí) / 計(jì)數(shù)器 1 運(yùn)行控制位。用法與 TR0 類似。C/T = 0 定時(shí)C/T = 1

17、 對(duì)外計(jì)數(shù)。定時(shí): fosc / 12 = 1 /(12/fosc) = 1 / Tcy等間隔,次數(shù)已定,時(shí)間確定Tcy即對(duì)機(jī)器周期進(jìn)行計(jì)數(shù)。左圖定時(shí)時(shí)間為 n×Tcy。n計(jì)數(shù):脈沖不等間隔。外部管腳輸入( T0 P3.4、 T1 P3.5 )每個(gè)下降沿計(jì)數(shù)一次確認(rèn)一次負(fù)跳變需兩個(gè)機(jī)器周期, (要求計(jì)數(shù)脈沖的高、低電平要大于一個(gè)機(jī)器周期)所以,計(jì)數(shù)頻率最高為 fosc / 24。定時(shí)器初值計(jì)算計(jì)數(shù)脈沖的個(gè)數(shù) N=t (定時(shí)時(shí)間) /Tcy(機(jī)器周期計(jì)數(shù)初值 X=M( 定時(shí)計(jì)數(shù)器的模 )-N13方式 0X=2-N =8192-N16方式 1X=2-N=65536-N8方式 2X=2 -

18、N=256-N推薦工作方式 1 和方式 2例 1、設(shè)計(jì)一個(gè) P1.0 能產(chǎn)生 t=1ms 的周期信號(hào)發(fā)生器,主頻試編程。解:選 T0; C/T=0,GATE= 0 定時(shí)時(shí)間 0.5msN = t / Tcy= t / (12×( 1/fosc)= 500所以,X = M 500 ,問(wèn): M 取多少?模式 0、模式 1 均可,取模式1,M=2 16X = 65536-500=65036 = FE0CHTH00FEHTL00CH程序:ORG0000HLJMPMAINORG000BHLJMPINSE1ORG1000HMAIN : MOVSP,#60HMOVTL0 , #0CHMOVTH0

19、,#0FEHMOVTMOD ,#01HSETBTR0;SETBET0 ;SETBEASJMPINSE1:MOV MOV CPL RETITL0 ,#0CHTH0 ,#0F0HP10單片機(jī)串行接口8051 單片機(jī)有一個(gè)異步全雙工 串行通訊口通過(guò)RXD(P3.0) 接收,通過(guò)TXD(P3.1) 發(fā)送,(串行通信有單工、半雙工、全雙工) ,8051 單片機(jī)串行口有4 種工作方式。異步通信一幀數(shù)據(jù)的格式如下空閑位起始位5 8 位數(shù)據(jù)奇偶校驗(yàn)位停止位空閑位3、串行通信方向AB發(fā)單工收AB發(fā)半雙工發(fā)收收A全雙工B發(fā)收收發(fā)4、波特率即串行通信速率。b/s、bps舉例、設(shè)有一幀信息, 1 個(gè)起始位、 8 個(gè)數(shù)

20、據(jù)位、 1 個(gè)停止位,傳輸速率為240 個(gè)字符。求波特率。解:(181)× 240 = 2400 b/s = 2400波特。5、串行通信接口發(fā)送: CPU 通過(guò)指令 MOV SBUF,A 來(lái)啟動(dòng)發(fā)送 發(fā)送一幀數(shù)據(jù)完畢后 TI 置 1,通過(guò)查詢方式查詢到 TI=1 或中斷方式可以繼續(xù)發(fā)送下一幀數(shù)據(jù), 并軟件復(fù)位 TI=0 (CLR TI )D7D6D5D4D3D2D1D0發(fā)送數(shù)據(jù)寄存器SBUF(99H )1D7D6D5D4D3D2D1D00發(fā)送數(shù)據(jù)發(fā)送時(shí)鐘接收:必須置位寄存器SCON, REN 位為 1 才能啟動(dòng)串口接收數(shù)據(jù),當(dāng)接收一幀數(shù)據(jù)后,RI 置 1 , CPU 通過(guò)查詢 RI=

21、1 或中斷方式,通過(guò)指令MOVA.SBUF 來(lái)取走接收的數(shù)據(jù),并軟件復(fù)位 RI=0 ( CLR RI )接收時(shí)鐘0D0D1D2D3D4D5D6D71接收數(shù)據(jù)D0D1D2D3D4D5D6D7接收數(shù)據(jù)寄存器SBUF(99H)CPU二、 MCS-51 機(jī)串行接口單片機(jī)內(nèi)有:通用異步接收/發(fā)送器UART全雙工, 4 種工作方式,波特率可編程設(shè)置,可中斷。1、串口的組成從編程角度講來(lái)看主要由以下寄存器組成。PCONSMODSCONSM0SM1SM2RENTB8RB8TIRISBUFD7D6D5D4D3D2D1D0SBUF 發(fā)SBUF 收SM0 、SM1:工作方式選擇位SM2 :多機(jī)通信控制位,常與RB8

22、配合,決定是否激活RIREN:允許接收TB8:發(fā)送的第九位數(shù)RB8:接收的第九位數(shù)TI:中斷標(biāo)志RI0SMOD :波特系數(shù)選擇位, 0 2 = 12、串行口的工作方式(1)SM0 、SM1=00;方式 0:是 8 位同步移位寄存器方式,波特率固定為fosc / 12RXD 接收 /發(fā)送數(shù)據(jù)TXD 產(chǎn)生同步移位脈沖接收 /發(fā)送完,置位 RI / TI,(要求 SM2 = 0)方式 0D7D6D5D4D3D2D1D0發(fā)送D0D1D2D3D4D5D6D7接收無(wú)起始位,無(wú)停止位(2)SM0 、SM1=01 方式 1: 8 位 UART ,波特率為( 2SMOD×T1 的溢出率) / 32停止

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

24、始位UART ,多機(jī)通信。 多機(jī)發(fā)送數(shù)據(jù)起始位D0D1 D2 D3 D4D5 D6 D7TB8 停止位接收數(shù)據(jù)送 SCON 寄存器RB8 位方式 2 波特率:(固定) 2SMOD / 64 × fosc方式 3 波特率:2SMOD / 32 ×( T1 溢出率)數(shù)據(jù)發(fā)送串口方式 2、3 發(fā)送第九位數(shù)據(jù)必須通過(guò)軟件置事先寫入寄存器SCON 的 TB8 位,把要發(fā)送的數(shù)據(jù)發(fā)送到SBUF( MOV SUBF,A ) 啟動(dòng)數(shù)據(jù)發(fā)送,發(fā)送完數(shù)據(jù)置位TI 。CPU 通過(guò)查詢方式查詢到 TI=1 或中斷方式可以繼續(xù)發(fā)送下一幀數(shù)據(jù),并軟件復(fù)位TI=0 ( CLR TI )數(shù)據(jù)接收接收:必須

25、置位寄存器SCONREN 位為 1 才能啟動(dòng)串口接收數(shù)據(jù),當(dāng)接收一幀數(shù)據(jù)后此時(shí),數(shù)據(jù)裝載 SBUF ,接收到的第 9 位數(shù)據(jù)( TB8 )送 SCON 寄存器 RB8 位 ,RI 置 1。,CPU 通過(guò)查詢 RI=1 或中斷方式,通過(guò)指令 MOV A.SBUF 來(lái)取走接收的數(shù)據(jù),并軟件復(fù)位 RI=0 ( CLR RI )3、波特率的設(shè)置方式 0、方式 2 固定。方式 1,方式 3 可變。波特率= 2SMOD / 32 ×( T1 的溢出率)T1 溢出率=而 T1 的定時(shí)時(shí)間自動(dòng)重裝初值)。單位時(shí)間內(nèi)溢出次數(shù)= 1 /( T1 的定時(shí)時(shí)間)t 就是 T1 溢出一次所用的時(shí)間。此情況下,

26、一般設(shè)T1 工作在模式2(8 位N = 28 t / T,t = ( 28N)T =( 28N)× 12 / fosc所以, T1 溢出率= 1/t = fosc / 12( 28N),故,波特率= 2SMOD / 32 × fosc / 12(256N)。若已知波特率,則可求出T1 的計(jì)數(shù)初值:y = 2562SMOD ×fosc / (波特率× 32× 12)例、若 fosc = 6MHz,波特率為 2400 波特,設(shè) SMOD = 1,則定時(shí) /計(jì)數(shù)器 T1 的計(jì)數(shù)初值為多少?并進(jìn)行初始化編程。解: y = 256 2SMOD×

27、fosc / (2400×32×12)= 242.98243 = F3H 同理, fosc = 11.0592MHz,波特率為 2400,設(shè) SMOD = 0,則y = F4H初始化編程:MOVTMOD ,#20HMOVPCON,#80HMOVTH1 ,#0F3HMOVTL1 , #0F3HSETBTR1MOVSCON,#50H指令系統(tǒng)指令按尋址方式分有7 種尋址方式,直接尋址(direct)、立即尋址( #20H) 、寄存器尋址( Rn)、寄存器間接尋址( Ri)、相對(duì)尋址( rel)、寄存器變址尋址( A+PC)、位尋址( ACC.1 )指令按功能上分有5 種 ,傳送類

28、指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算及移位類指令、控制轉(zhuǎn)移類指令、位操作類指令指令三大屬性。功能屬性、空間屬性(指令站用的字節(jié)數(shù))、時(shí)間屬性(指令執(zhí)行的機(jī)器周期數(shù))傳送類指令有四種尋址方式對(duì) A 的數(shù)據(jù)傳送只影響狀態(tài)標(biāo)志位P訪問(wèn)片內(nèi) RAM 和 SFR 指令格式MOV唯一的一條 16 位傳送指令MOV DPTR,#DATA16訪問(wèn) 片外 RAM4 條指令MOVXA,RiMOVXA,DPTR( 這兩條指令是讀片外RAM 的數(shù)據(jù)伴隨著控制信號(hào)RD*有效 )MOVXRi,AMOVXDPTR,A (這兩條指令是寫片外RAM的數(shù)據(jù)伴隨著控制信號(hào)WR* 有效 )訪問(wèn) 程序存儲(chǔ)器 MOVC A,A+PCROM2

29、條指令MOVC A,A+DPTR (這兩條指令是讀程序ROM 的數(shù)據(jù)伴隨著控制信號(hào)PSEN* 有效 )2、棧操作指令PUSHdirectPOPdirect不影響任何標(biāo)志位。 Direct 可以是內(nèi)存 RAM 128 個(gè)單元任意一個(gè)單元 也可以特殊功能寄存器 這里注意 PUSH ACC ( ACC 是直接地址,不能寫 A)PUSHdirect指令執(zhí)行中,機(jī)器自動(dòng)進(jìn)行兩步操作:(1)(SP)(SP)+ 1(2)(SP)(direct)例 1、設(shè)分析:執(zhí)行PUSHDPLPUSHDPH后,各單元中的內(nèi)容。 (0AH)=23H(0BH)=01H (SP)=0BHPOPdirect指令執(zhí)行中,機(jī)器也自動(dòng)進(jìn)

30、行兩步操作:(1)(direct)(SP)(2)(SP)(SP) 1例 2、設(shè)( SP)= 40H,(40H) = 12H,(3FH) = 34H 執(zhí)行 POP DPHPOPDPL后,各單元中的內(nèi)容。( SP) = 3EH,( DPTR)= 1234H,結(jié)論: 1)PUSH 與 POP 操作過(guò)程剛好相反;2)進(jìn)、出棧規(guī)則:先進(jìn)后出,后進(jìn)先出。應(yīng)注意指令書寫先后順序;3)可用于“保護(hù)現(xiàn)場(chǎng),恢復(fù)現(xiàn)場(chǎng)”3、字節(jié)交換指令XCHA ,RnXCHA ,direct整字節(jié)交換XCHA ,RiXCHDA ,RiSWAPA半字節(jié)交換不影響任何標(biāo)志位。算術(shù)運(yùn)算類指令包括:加、減、乘、除;加一、減一。一、加法指令A(yù)

31、DDA ,Rn;(A )(A ) + (Rn)以下類同。ADDA ,directADDA ,RiADDA ,#data無(wú)符號(hào)數(shù)相加時(shí):若C = 1,說(shuō)明有溢出(其值> 255 )。帶符號(hào)數(shù)相加時(shí):若OV = D7c D6c = 1 ,說(shuō)明有溢出。影響C OV AC 這三個(gè)標(biāo)志位奇偶標(biāo)志P 由累加器A 的值決定INC A;(A)(A)+1,以下類同。INC RnINC directINC RiINC DPTR不影響C OV AC 這三個(gè)標(biāo)志位奇偶標(biāo)志P 由累加器A 的值決定邏輯操作類指令共分兩大類:?jiǎn)巫止?jié)邏輯操作,雙字節(jié)邏輯操作,共24 條。一、單字節(jié)邏輯操作指令CLRA;(A)0CPLA

32、A 中 8 位按位求反。循環(huán)左移、右移指令:RLARLCARRARRCA二、雙字節(jié)邏輯操作指令“與操作”:ANLA ,Rn;(A )(A )( Rn),以下類同。ANLA ,directANLA ,RiANLA ,#dataANLdirect,AANLdirect,#data例 1、(P1)= 35H,使其高 4 位輸出 0,低 4 位不變。解;ANLP1, #0FH此做法稱為“屏蔽”位?!盎虿僮鳌保篛RLA ,Rn;(A )( A )( Rn),以下類同。ORLA ,directORLA ,RiORLA ,#dataORLdirect,AORLdirect,#data例 2、將 A 中的低

33、3 位送入 P1 中,并且保持 P1 中高 5 位不變。ANLA ,#07HANLP1, #0F8HORLP1,A;(P1) = P17P16P15P14P13A 2A 1A 0這稱為“數(shù)位組合” 。“異或操作”:XRLA ,Rn;(A )(A )( Rn),以下類同。XRLA ,directXRLA ,RiXRLA ,#dataXRLdirect,AXRLdirect,#data例 3、設(shè)( P1)= 0B4H = 10110100B,執(zhí)行:XRLP1, #00110001B結(jié)果按#00110001取反,即:(P1)=10000101B=85H這稱為“指定位取反” 。在上述 ANL 、ORL

34、 、XRL 操作中,用于端口操作時(shí),無(wú)論 P0 P3 是第一,還是第二操作數(shù),都遵循“讀修改寫”端口鎖存器的操作。§ 3-5 控制轉(zhuǎn)移類指令作用:改變程序計(jì)數(shù)器PC 的值,從而改變程序執(zhí)行方向。分為四大類:無(wú)條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;調(diào)用指令;返回指令。一、無(wú)條件轉(zhuǎn)移指令LJMPaddr16AJMPaddr11SJMPrelJMPA + DPTRLJMPaddr16;長(zhǎng)跳轉(zhuǎn)轉(zhuǎn)移目的地址addr16( PC);0000H FFFFH,64KBAJMPaddr11;絕對(duì)轉(zhuǎn)移轉(zhuǎn)移目的地址的形成:先( PC)(PC) + 2;后 PC15 11不變, PC10 0addr10 064KB

35、= 216 =25×211 = 32×2KB轉(zhuǎn)移目的地址與( PC)+ 2 在同一個(gè) 2KB 范圍內(nèi)。SJMPrel;短轉(zhuǎn)移,相對(duì)尋址。轉(zhuǎn)移目的地址= (PC)+ 2 + rel,所以rel = 轉(zhuǎn)移目的地址( PC) 2但,實(shí)際使用中常寫成SJMPaddr16,匯編時(shí)會(huì)自動(dòng)轉(zhuǎn)換出rel。JMPA + DPTR;間接轉(zhuǎn)移,散轉(zhuǎn)移指令。轉(zhuǎn)移目的地址= (A) + (DPTR)二、調(diào)用指令LCALLaddr16;長(zhǎng)調(diào)用ACALLaddr11;絕對(duì)調(diào)用LCALLaddr16;轉(zhuǎn)移范圍 64KB ,不影響標(biāo)志位。執(zhí)行中自動(dòng)完成如下過(guò)程:(PC)(PC) + 3(SP)(SP)+ 1

36、( SP)(PC7 0), 保護(hù)斷點(diǎn)地址低字節(jié);(SP)(SP)+ 2( SP)(PC15 8),保存斷點(diǎn)地址高字節(jié);(PC)addr16 ,目的地址送 PC,轉(zhuǎn)子程序。例 2、設(shè)( SP)= 07H,(PC)= 2100H,子程序首地址為 3456H,執(zhí)行:LCALL 3456H MOV A ,20H······執(zhí)行結(jié)果:(SP)= 09H,(09H) = 21H,(08H) = 03H,(PC)= 3456HACALLaddr11;轉(zhuǎn)移范圍與( PC)+ 2 在同一個(gè)2KB內(nèi)。不影響任何標(biāo)志位,執(zhí)行中機(jī)器自動(dòng)完成下列過(guò)程:(PC)

37、(PC)+ 2(SP)(SP)+ 1(SP)( PC7 0)(SP)(SP)+ 2(SP)( PC15 8)(PC10 0)addr10 0三、返回指令從子程序返回主程序。RET;調(diào)用子程序返回;(子程序不能缺少的指令)RETI;中斷子程序返回。(中斷程序不能缺少的指令)(PC15 8)( SP)( SP)( SP) 1( PC7 0)(SP)( SP)(SP) 2例 3、設(shè)( SP)= 0BH,(0AH )= 23H,( 0BH)= 01H執(zhí)行:RET結(jié)果;( SP) = 09H,(PC) = 0123H(返回主程序)二、條件轉(zhuǎn)移指令實(shí)現(xiàn)按照一定條件決定轉(zhuǎn)移的方向。分三類。1、判零轉(zhuǎn)移JZr

38、elJNZrelJZrel;若( A) = 0 ,則轉(zhuǎn)移,否則順序執(zhí)行。JNZrel; 若( A ) 0,則轉(zhuǎn)移,否則順序執(zhí)行。轉(zhuǎn)移目的地址= (PC)+ 2 + rel不影響任何標(biāo)志位。例 1、將外 RAM 的一個(gè)數(shù)據(jù)塊(首地址為DATA1)傳送到內(nèi)部數(shù)據(jù)RAM (首地址為DATA2),遇到傳送的數(shù)據(jù)為零時(shí)停止傳送,試編程。解:MOVR0,#DATA2MOVDPTR,#DATA1LOOP1: MOVXA ,DPTRJZLOOP2MOVR0,AINCR0INCDPTRSJMPLOOP1LOOP2:SJMPLOOP22、比較轉(zhuǎn)移指令功能:比較二個(gè)字節(jié)中的值,若不等,則轉(zhuǎn)移。CINEA , #da

39、ta, relCJNEA , direct,relCJNERi,#data,relCJNERn,#data,rel該類指令具有比較和判斷雙重功能,比較的本質(zhì)是做減法運(yùn)算,用第一操作數(shù)內(nèi)容減去第二操作數(shù)內(nèi)容,但差值不回存。轉(zhuǎn)移目的地址= (PC)+ 3 + rel若第一操作數(shù)內(nèi)容小于第二操作數(shù)內(nèi)容,則(C)= 1,否則( C)= 0。該類指令可產(chǎn)生三分支程序:即,相等分支;大于分支;小于分支。例 2、設(shè) P1 口的 P1.0 P1.3為準(zhǔn)備就緒信號(hào)輸入端,當(dāng)該四位為全1 時(shí),說(shuō)明各項(xiàng)工作已準(zhǔn)備好,單片機(jī)可順序執(zhí)行,否則,循環(huán)等待。解:MOVA,P1ANLA , #0FHCJNEA , #0FH,

40、 WAIT; P1.0 P1.3不為全 1 時(shí),返回 WAITMOVA,R2······3、循環(huán)轉(zhuǎn)移指令DJNZRn,rel;(二字節(jié)指令)DINZdirect, rel;(三字節(jié)指令)本指令也為雙功能指令,即減1 操作和判斷轉(zhuǎn)移操作。第一操作數(shù)內(nèi)容減1 后,若差值不為零,則轉(zhuǎn)移;否則順序執(zhí)行。轉(zhuǎn)移目的地址= (PC)+ 2 或 3 + rel例 3、將 8031 內(nèi)部 RAM 的 40H 4FH 單元置初值#A0H #AFH 。解:MOVR0, #40HMOVR2, #10HMOVA ,#0A0HLOOP: MOVR0,AINCR0

41、INCADJNZR2,LOOP§ 3-6 位操作指令包括:位傳送指令、條件轉(zhuǎn)移指令、位運(yùn)算指令。位操作由單片機(jī)內(nèi)布爾處理器來(lái)完成。位地址的四種表示:1)使用直接位地址表示:如20H、30H、 33H 等;2)使用位寄存器名來(lái)表示;如C、OV 、F0 等;3)用字節(jié)寄存器名后加位數(shù)來(lái)表示:如PSW.4、P0.5、 ACC.3 等;4)字節(jié)地址加位數(shù)來(lái)表示:如20.0、 30.4、50.7 等。一、位傳送指令MOVC,bitMOVbit ,C功能:( C)(bit);二、位狀態(tài)控制指令CLRbit;( bit)0SETBbit;( bit)1CPLbit;( bit)(/ bit )例 1、編程通過(guò) P10 線連續(xù)輸出 256 個(gè)寬度為 5 個(gè)機(jī)器周期長(zhǎng)的方波。解:MOV R0,#00H CLR P10LOOP:CPL P10 NOP NOPDJNZ R0,LOOP四、布爾條件轉(zhuǎn)移指令有 5 條,分別對(duì) C 和直接位地址進(jìn)行測(cè)試,并根據(jù)其狀態(tài)執(zhí)行轉(zhuǎn)移。1、判布爾累加器轉(zhuǎn)移JC rel;( C) = 1 ,轉(zhuǎn)移,否則順序執(zhí)行。JNC rel;( C) = 0 ,轉(zhuǎn)移,否則順序執(zhí)行。不影響標(biāo)志。轉(zhuǎn)移地址:( PC)( PC)+ rel例 3、比較內(nèi)部 RAM的 30H和 40H單元中的二個(gè)無(wú)符號(hào)數(shù)的大小,將大數(shù)存入

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論