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è)
MCS-51單片機(jī)復(fù)習(xí)要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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所示)60KB外部ROM64KB外部RAM4KB內(nèi)部EA = 14KB外部EA = 0特殊功能寄存器內(nèi)部RAM FFFFH FFFFH 1000H 0FFFH 0FFFH FFH80H7FH 0000H 0000H 00H 0000H7F 程序存儲(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)RAM、片外R

2、AM邏輯上分為;3個(gè)空間, 程序內(nèi)存片內(nèi)、外統(tǒng)一編址 MOVC 數(shù)據(jù)存儲(chǔ)器片內(nèi) MOV 數(shù)據(jù)存儲(chǔ)器片外 MOVX1、程序內(nèi)存尋址范圍:0000H FFFFH 容量64KB EA = 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ǔ)器物理上分為兩大區(qū):00H 7FH即128B內(nèi)

3、RAM 和 SFR區(qū)。如圖2所示。 7FH資料緩沖區(qū)堆棧區(qū) 80字節(jié) 數(shù)據(jù)緩沖器用工作單元30H2FH 位地址: 16字節(jié)00H7FH 128 可位尋址位20H1FH 3區(qū) 2區(qū) 1區(qū) 32字節(jié) 4組R0R7工作寄存器 0區(qū)00H 圖2 內(nèi)部數(shù)據(jù)存儲(chǔ)器 二、 殊功能寄存器SFR尋址空間離散分配在:80H FFH , 注意PC不在此范圍內(nèi)。地址末尾為0或8的SFR具有位尋址功能1、 CPU是運(yùn)算器加控制器2、 算術(shù)運(yùn)算寄存器1累加器AE0H2B寄存器:乘、除法運(yùn)算用3程序狀態(tài)字PSW寄存器:包含程序運(yùn)行狀態(tài)信息。PSW CY AC FO RS1 RS0 OV PCYPSW.7 進(jìn)位/借位標(biāo)志;位

4、累加器。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ū)選擇控制位。 0 0 : 0區(qū) R0 R7 0 1 : 1區(qū) R0 R7 1 0 : 2區(qū) R0 R7 1 1 : 3區(qū) R0 R72、指針寄存器1程序計(jì)數(shù)器PC PC的內(nèi)容是指明即將執(zhí)行的下一條指令的地址,16位,尋址64KB范圍,復(fù)位時(shí)PC = 0000H 具有自動(dòng)加1功能 不可尋址即不能通過(guò)指令訪問(wèn)。2堆棧指針SP指明棧頂元素的地址,8

5、位,可軟件設(shè)置初值,復(fù)位時(shí)SP = 07H3數(shù)據(jù)指針DPTRR0、R1、DPTR;指明訪問(wèn)的數(shù)據(jù)存儲(chǔ)器的單元地址,16位,尋址范圍64KB。 DPTR = DPH + DPL,也可單獨(dú)使用。沒(méi)有自動(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è)指令周期含假設(shè)干機(jī)器周期單、雙、四周期狀態(tài)周期:一個(gè)機(jī)器周期分6個(gè)狀態(tài)周期Si 每個(gè)狀態(tài)周期含兩個(gè)振蕩周期,

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

7、 作為通用I / O使用, 是一個(gè)準(zhǔn)雙向口:“讀管腳在輸入數(shù)據(jù)時(shí)應(yīng)先把口置1,使兩個(gè)FET都截止,引腳處于懸浮狀態(tài),可作高阻抗輸入” MOV P1.#0FFH MOV A,P1 讀端口數(shù)據(jù)方式是一種對(duì)端口鎖存器中數(shù)據(jù)進(jìn)行讀入的操作方式,CPU讀入的這個(gè)數(shù)據(jù)并非端口引腳的數(shù)據(jù)。(對(duì)端口進(jìn)行讀-修改-寫(xiě)類指令鎖存器而不是管腳) 一、P0口地址80H系統(tǒng)復(fù)位后P0=FFH(1) P0口可作通用I / O口使用,又可作地址/數(shù)據(jù)總線口;2P0既可按字節(jié)尋址,又可按位尋址;3P0作為輸入口使用時(shí):是準(zhǔn)雙向口;4作通用I / O 口輸出時(shí):是開(kāi)漏輸出;外部管腳必須接上拉電阻5作地址/數(shù)據(jù)總線口時(shí),P0是一

8、真正雙向口,分時(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)雙向口,不是開(kāi)漏輸出無(wú)需外接上拉電阻。三、P2口地址A0H系統(tǒng)復(fù)位后P2=FFH2、特點(diǎn)1當(dāng)P2口作為通用I / O時(shí),是一準(zhǔn)雙向口。2從P2口輸入數(shù)據(jù)時(shí),先向鎖存器寫(xiě)“1”。3可位尋址,也可按字節(jié)尋址4可輸出地址高8位A8A15。四、P3口地址B0H系統(tǒng)復(fù)位后P3=FFH2、特點(diǎn)1作通用I / O時(shí),是一準(zhǔn)雙向口,不是開(kāi)漏輸出無(wú)需外接上拉電阻。2P3口具有第二功能 1、P0口:地

9、址低8位與數(shù)據(jù)線分時(shí)使用端口,2、P1口:按位可編址的輸入輸出端口,3、P2口:地址高8位輸出口4、P3口:雙功能口。假設(shè)不用第二功能,也可作通用I / O 口。5、按三總線劃分:地址線:P0低八位地址,P2高八地址;數(shù)據(jù)線:P0輸入輸出8位數(shù)據(jù);控制線: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 0003H T0溢出中斷 000BH 外部中斷1/INT1 0013H T1溢出中斷 001BH 串口中斷 0023H有了

10、中斷請(qǐng)求,如何通知CPU?通過(guò)中斷請(qǐng)求標(biāo)志位來(lái)通知CPU。外部中斷源、定時(shí)/計(jì)數(shù)器的中斷請(qǐng)求標(biāo)志位分布在 TCON中;串口中斷標(biāo)志位分布在 SCON中。TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SCON TI RI 中斷請(qǐng)求標(biāo)志位 IE0INT0 IE1INT1 TF0T0 TF1T1 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

11、觸發(fā)類型控制位。 IT1 = 0 ,低電平觸發(fā)。 IT1 = 1 , 下降沿觸發(fā)。IT0 外中斷0/INT0觸發(fā)類型控制位,用法同IT1。外部中斷INT0、INT1 觸發(fā)方式有電平觸發(fā)和跳變觸發(fā)TI 串口發(fā)送中斷標(biāo)志位。 發(fā)送完數(shù)據(jù),硬件使TI置1,軟件清0CLR TIRI 串行口接收中斷標(biāo)志位。 硬件置1,軟件清0。二、 中斷控制兩級(jí)管理1、中斷屏蔽在中斷源與CPU之間有一級(jí)控制,類似開(kāi)關(guān),其中第一級(jí)為一個(gè)總開(kāi)關(guān),第二級(jí)為五個(gè)分開(kāi)關(guān),由IE控制。IE EA ES ET1 EX1 ET0 EX0 EA 總控制位ES 串口控制位 假設(shè)為“1”,允許開(kāi)關(guān)接通ET1 T1中斷控制位 假設(shè)為“0”,不

12、允許開(kāi)關(guān)斷開(kāi)EX1 /INT1控制位 例如,SETB EAET0EX0 /INT0控制位2、中斷優(yōu)先級(jí)為什么要有中斷優(yōu)先級(jí)?CPU按中斷申請(qǐng)時(shí)間先后順序響應(yīng)中斷,同一時(shí)間只能響應(yīng)一個(gè)中斷請(qǐng)求。假設(shè)同時(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)中斷。IP PS PT1 PX1 PT0 PX0 以上各位與IE的低五位相對(duì)應(yīng),為“1”時(shí)為高級(jí)。初始化編程時(shí),由軟件確定。例如,SETB PT0 或SETB IP.1 CLR PX0等。同一級(jí)中的5個(gè)中斷源的優(yōu)先順序是:注意是同級(jí) /INT0中

13、斷 高 T0中斷 廠家出廠時(shí)已固化好順序 /INT1中斷 事先約定 T1中斷 串口中斷 低中斷嵌套 同級(jí)或低級(jí)中斷不能打斷正在響應(yīng)的中斷的服務(wù)程序,高級(jí)中斷能夠打斷低級(jí)中斷服務(wù)程序而形成中斷嵌套定時(shí)/計(jì)數(shù)器定時(shí) / 計(jì)數(shù)器 兩個(gè)定時(shí)器/計(jì)數(shù)器T0 、T1 四種工作方式中斷方式定時(shí)器程序初始化主要部分如下MOV TMOD,#DATA ;設(shè)置定時(shí)器工作方式MOV TH0TH1,# DATA;給定時(shí)器計(jì)數(shù)器裝入初值MOV TL0TL1,# DATASETB EA ;開(kāi)中斷SETB ET0ET1 ;開(kāi)中斷SETB TR0TR1 ;啟動(dòng)定時(shí)器計(jì)數(shù)器一、定時(shí) / 計(jì)數(shù)器的結(jié)構(gòu)T0、T1均為16位加1計(jì)數(shù)器

14、。計(jì)數(shù)值高八位計(jì)數(shù)值低八位計(jì)數(shù)值高八位計(jì)數(shù)值低八位TH0 TH1 TL0 TL1 工作方式控制字 TMOD 工作方式 TCON 1、工作方式控制寄存器 TMOD T1 T0TMOD GATE C/T M1 M0 GATE C/T M1 M0GATE 門控位。 GATE = 0 軟件啟動(dòng),僅由軟件置TR0TR1為1啟動(dòng)定時(shí)器/計(jì)數(shù)器;置0停止定時(shí)/計(jì)數(shù) GATE = 1 硬件啟動(dòng),軟件置TR0TR1為1后 .INT0 管腳或 /INT1管腳高電平啟動(dòng)定時(shí)器/計(jì)數(shù)器。C/T 外部計(jì)數(shù)器 / 定時(shí)器方式選擇位 C/T = 0 定時(shí)方式; C /T = 1 計(jì)數(shù)方式。M1M2 工作模式選擇位。 M1

15、M0 模式 說(shuō)明 0 0 0 13位定時(shí)/計(jì)數(shù)器 八位TH7 0+ 低五位TL4 0 0 1 1 16位定時(shí)/計(jì)數(shù)器 TH7 0+ TL7 0 1 0 2 8位計(jì)數(shù)初值自動(dòng)重裝 TL7 0 TH7 0 1 1 3 T0工作在兩個(gè)8位定時(shí)/計(jì)數(shù)。運(yùn)行,而T1只能工作方式2, TCON TR1 TR0 TR0 定時(shí) / 計(jì)數(shù)器0運(yùn)行控制位。 軟件置位,軟件復(fù)位。 與GATE有關(guān),分兩種情況: GATE = 0 時(shí),假設(shè)TR0 = 1,開(kāi)啟T0計(jì)數(shù)工作; 假設(shè)TR0 = 0,停止T0計(jì)數(shù)。 GATE = 1 時(shí),假設(shè)TR0 = 1 且/INT0 = 1時(shí),開(kāi)啟T0計(jì)數(shù); 假設(shè)TR0 = 1 但 /I

16、NT0 = 0,則不能開(kāi)啟T0計(jì)數(shù)。 假設(shè)TR0 = 0, 停止T0計(jì)數(shù)。TR1 定時(shí) / 計(jì)數(shù)器1運(yùn)行控制位。 用法與TR0類似。 C/T = 0 定時(shí)C/T = 1 對(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ù):脈沖不等間隔。 每個(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ù)器的模

17、)-N 方式0 X=213-N =8192-N 方式1 X=216-N=65536-N 方式2 X=28-N=256-N推薦工作方式1 和方式2例1、設(shè)計(jì)一個(gè)能產(chǎn)生t=1ms的周期信號(hào)發(fā)生器,主頻試編程。 N = t / Tcy= t /12×1/fosc= 500 所以, X = M 500 ,問(wèn):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 M

18、OV TL0,#0CH MOV TH0,#0FEH MOV TMOD,#01H SETB TR0; SETB ET0; SETB EA SJMP INSE1: MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI 單片機(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、串行通信方向 A B 發(fā) 單工 收 A B 發(fā) 半雙工 發(fā) 收 收 A 全雙工 B

19、 發(fā) 收 收 發(fā) 4、波特率 即串行通信速率。 b/s 、 bps 舉例、設(shè)有一幀信息,1個(gè)起始位、8個(gè)數(shù)據(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 TID7 D6 D5 D4 D3 D2 D1 D0 發(fā)送數(shù)據(jù)寄存器 SBUF99H1 D7 D6 D5 D4 D3 D2 D1 D0 0 發(fā)送數(shù)據(jù)發(fā)送時(shí)鐘接收: 必須置位寄存器 S

20、CON, REN位為1才能啟動(dòng)串口接收數(shù)據(jù),當(dāng)接收一幀數(shù)據(jù)后,RI置1 ,CPU通過(guò)查詢RI=1或中斷方式,通過(guò)指令 MOV A.SBUF 來(lái)取走接收的數(shù)據(jù),并軟件復(fù)位RI=0CLR RI接收時(shí)鐘0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收數(shù)據(jù) D0 D1 D2 D3 D4 D5 D6 D7 接收數(shù)據(jù)寄存器 SBUF99HCPU二、MCS-51機(jī)串行接口單片機(jī)內(nèi)有:通用異步接收/發(fā)送器 UART全雙工,4種工作方式,波特率可編程設(shè)置,可中斷。1、串口的組成 從編程角度講來(lái)看主要由以下寄存器組成。 PCON SMOD SCON SM0 SM1 SM2 REN TB8 RB8 TI

21、 RI SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF發(fā) SBUF收SM0、SM1:工作方式選擇位SM2:多機(jī)通信控制位,常與RB8配合,決定是否激活RIREN:允許接收TB8:發(fā)送的第九位數(shù)RB8:接收的第九位數(shù)TI :中斷標(biāo)志RI SMOD:波特系數(shù)選擇位,0 20 = 1 1 21 = 22、串行口的工作方式1SM0、SM1=00;方式0:是8位同步移位寄存器方式,波特率固定為fosc / 12 RXD 接收/發(fā)送數(shù)據(jù) TXD 產(chǎn)生同步移位脈沖接收/發(fā)送完,置位RI / TI ,要求SM2 = 0方式0 D7 D6 D5 D4 D3 D2 D1 D0 發(fā)送 D0 D1

22、 D2 D3 D4 D5 D6 D7 接收無(wú)起始位,無(wú)停止位2SM0、SM1=01方式1:8位UART,波特率為2SMOD×T1的溢出率/ 32停止位 D7 D6 D5 D4 D3 D2 D1 D0 起始位 發(fā)送位 TXD起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 接收位 RXD1幀信息,10位。 送RB8位波特率可變: 2SMOD / 32 ×T1的溢出率發(fā)送完置位TI。接收完數(shù)據(jù)置位RI。置位RI是有條件的。即:REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位為1。此時(shí),數(shù)據(jù)裝載SBUF,停止位進(jìn)入RB8,RI置1。3

23、方式2 SM0、SM1=10、方式3 SM0、SM1=11 :9位UART,多機(jī)通信。多機(jī)通信只能工作在方式2、方式3停止位 TB8 D7 D6 D5 D4 D3 D2 D1 D0 起始位 發(fā)送數(shù)據(jù)起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 接收數(shù)據(jù) 送SCON寄存器RB8位方式2波特率:固定2SMOD / 64 × fosc方式3波特率: 2SMOD / 32 ×T1溢出率數(shù)據(jù)發(fā)送串口方式2、3發(fā)送第九位數(shù)據(jù)必須通過(guò)軟件置事先寫(xiě)入寄存器SCON的TB8位,把要發(fā)送的數(shù)據(jù)發(fā)送到SBUFMOV SUBF,A 啟動(dòng)數(shù)據(jù)發(fā)送,發(fā)送完數(shù)據(jù)置位TI。CPU

24、通過(guò)查詢方式查詢到TI=1或中斷方式可以繼續(xù)發(fā)送下一幀數(shù)據(jù),并軟件復(fù)位TI=0 CLR TI數(shù)據(jù)接收接收: 必須置位寄存器 SCON REN位為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=0CLR RI3、波特率的設(shè)置方式0、方式2固定。方式1,方式3可變。波特率 = 2SMOD / 32 ×T1的溢出率 T1溢出率 = 單位時(shí)間內(nèi)溢出次數(shù) = 1 /T1的定時(shí)時(shí)間而T1的定時(shí)時(shí)間t就是T1溢出一次所用

25、的時(shí)間。此情況下,一般設(shè)T1工作在模式28位自動(dòng)重裝初值。 N = 28 t / T, t = 28NT =28N×12 / fosc所以,T1溢出率 = 1/t = fosc / 1228N,故, 波特率 = 2SMOD / 32 × fosc / 12256N。假設(shè)已知波特率,則可求出T1的計(jì)數(shù)初值: y = 2562SMOD×fosc / 波特率×32×12例、假設(shè)fosc = 6MHz,波特率為2400波特,設(shè)SMOD = 1,則定時(shí)/計(jì)數(shù)器T1的計(jì)數(shù)初值為多少?并進(jìn)行初始化編程。解:y = 2562SMOD×fosc / 2

26、400×32×243 = F3H 同理,fosc = 11.0592MHz,波特率為2400,設(shè)SMOD = 0,則 y = F4H 初始化編程:MOV TMOD,#20HMOV PCON,#80HMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50H 指令系統(tǒng)指令按尋址方式分有 7種尋址方式,直接尋址direct、立即尋址#20H 、寄存器尋址Rn、寄存器間接尋址Ri、相對(duì)尋址rel、寄存器變址尋址A+PC、位尋址 ACC.1指令按功能上分有5種 ,傳送類指令 、算術(shù)運(yùn)算類指令、邏輯運(yùn)算及移位類指令、控制轉(zhuǎn)移類指令、位操作類指令 指

27、令三大屬性。功能屬性、空間屬性指令站用的字節(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) 片外 RAM 4條指令MOVX A,Ri MOVX A,DPTR( 這兩條指令是讀片外RAM的數(shù)據(jù)伴隨著控制信號(hào)RD*有效)MOVX Ri,A MOVX DPTR,A ( 這兩條指令是寫(xiě)片外RAM的數(shù)據(jù)伴隨著控制信號(hào)WR*有效)訪問(wèn) 程序存儲(chǔ)器ROM 2條指令MOVC A,A+PC MOVC A,A+DPTR ( 這兩條指令是讀程序ROM的數(shù)據(jù)伴隨著控制信

28、號(hào)PSEN*有效)2、棧操作指令PUSH directPOP direct不影響任何標(biāo)志位。Direct 可以是內(nèi)存RAM 128個(gè)單元任意一個(gè)單元 也可以特殊功能寄存器 這里注意 PUSH ACC ( ACC是直接地址,不能寫(xiě)A)PUSH direct 指令執(zhí)行中,機(jī)器自動(dòng)進(jìn)行兩步操作:1SP SP+ 12SP direct例1、設(shè)分析: 執(zhí)行 PUSH DPL PUSH DPH 后,各單元中的內(nèi)容。(0AH)=23H (0BH)=01H SP=0BHPOP direct 指令執(zhí)行中,機(jī)器也自動(dòng)進(jìn)行兩步操作:1direct SP2SP SP 1例2、設(shè)SP= 40H,40H= 12H,3FH

29、= 34H 執(zhí)行 POP DPH POP DPL 后,各單元中的內(nèi)容。SP = 3EH,DPTR= 1234H,結(jié)論:1PUSH 與 POP 操作過(guò)程剛好相反; 2進(jìn)、出棧規(guī)則: 先進(jìn)后出,后進(jìn)先出。應(yīng)注意指令書(shū)寫(xiě)先后順序; 3可用于“保護(hù)現(xiàn)場(chǎng),恢復(fù)現(xiàn)場(chǎng)”3、字節(jié)交換指令XCH A,RnXCH A,direct 整字節(jié)交換XCH A,RiXCHD A,RiSWAP A 半字節(jié)交換不影響任何標(biāo)志位。 算術(shù)運(yùn)算類指令包括:加、 減、乘、除;加一、減一。一、加法指令A(yù)DD A,Rn ;A A+ Rn以下類同。ADD A,directADD A,RiADD A,#data無(wú)符號(hào)數(shù)相加時(shí):假設(shè)C = 1

30、,說(shuō)明有溢出其值 > 255。帶符號(hào)數(shù)相加時(shí):假設(shè)OV = D7cD6c = 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é)邏輯操作指令CLR A ;A 0CPL A A中8位按位求反。循環(huán)左移、右移指令:RL ARLC ARR ARRC A二、雙字節(jié)邏輯操作指令“與操作”:ANL A,Rn ; A ARn,以下類同。A

31、NL A,directANL A,RiANL A,#dataANL direct,AANL direct,#data例1、P1= 35H,使其高4位輸出0,低4位不變。解; ANL P1,#0FH 此做法稱為“屏蔽”位。“或操作”:ORL A,Rn ; A ARn,以下類同。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= P17P16P15P14P13A2A1A0這稱為“數(shù)位組合”?!爱惢虿僮鳌保?/p>

32、XRL A,Rn ; A ARn,以下類同。XRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#data例3、設(shè)P1= 0B4H = 10110100B,執(zhí)行: XRL P1,#00110001B 結(jié)果按# 0 0 1 1 0 0 0 1 取反,即:P1= 1 0 0 0 0 1 0 1 B = 85H 這稱為“指定位取反”。在上述ANL、ORL、XRL操作中,用于端口操作時(shí),無(wú)論P(yáng)0 P3是第一,還是第二操作數(shù),都遵循“讀修改寫(xiě)”端口鎖存器的操作。§3-5 控制轉(zhuǎn)移類指令作用:改變程序計(jì)數(shù)器PC的值,從而改變程序執(zhí)行方向。分

33、為四大類:無(wú)條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;調(diào)用指令;返回指令。一、無(wú)條件轉(zhuǎn)移指令LJMP addr16AJMP addr11SJMP relJMP A + DPTRLJMP addr16 ;長(zhǎng)跳轉(zhuǎn)轉(zhuǎn)移目的地址 addr16 PC;0000H FFFFH,64KBAJMP addr11 ;絕對(duì)轉(zhuǎn)移轉(zhuǎn)移目的地址的形成: 先PC PC+ 2; 后 PC15 11不變,PC10 0 addr10 064KB = 216 =25×211 = 32×2KB 轉(zhuǎn)移目的地址與PC+ 2在同一個(gè)2KB范圍內(nèi)。SJMP rel ;短轉(zhuǎn)移,相對(duì)尋址。轉(zhuǎn)移目的地址 = PC+ 2 + rel,所以

34、rel = 轉(zhuǎn)移目的地址PC2但,實(shí)際使用中常寫(xiě)成 SJMP addr16,匯編時(shí)會(huì)自動(dòng)轉(zhuǎn)換出rel。JMP A + DPTR ;間接轉(zhuǎn)移,散轉(zhuǎn)移指令。轉(zhuǎn)移目的地址 = A + DPTR二、調(diào)用指令LCALL addr16 ;長(zhǎng)調(diào)用ACALL addr11 ;絕對(duì)調(diào)用LCALL addr16 ;轉(zhuǎn)移范圍64KB,不影響標(biāo)志位。執(zhí)行中自動(dòng)完成如下過(guò)程: PC PC + 3 SP SP+ 1 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,子程序首地址為

35、3456H,執(zhí)行: LCALL 3456H MOV A,20H ······執(zhí)行結(jié)果:SP= 09H,09H= 21H,08H= 03H,PC= 3456HACALL addr11 ; 轉(zhuǎn)移范圍與PC+ 2在同一個(gè)2KB內(nèi)。不影響任何標(biāo)志位,執(zhí)行中機(jī)器自動(dòng)完成以下過(guò)程: PC 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

36、 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)移JZ relJNZ relJZ rel ;假設(shè)A= 0 ,則轉(zhuǎn)移,否則順序執(zhí)行。JNZ rel ; 假設(shè)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í)停止傳送,試編程。解: MOV R0,#DATA2MOV

37、DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 MOV R0,A INC R0 INC DPTR SJMP LOOP1LOOP2: SJMP LOOP22、比較轉(zhuǎn)移指令功能:比較二個(gè)字節(jié)中的值,假設(shè)不等,則轉(zhuǎn)移。CINE A,#data,relCJNE A,direct,relCJNE Ri,#data,relCJNE Rn,#data,rel該類指令具有比較和判斷雙重功能,比較的本質(zhì)是做減法運(yùn)算,用第一操作數(shù)內(nèi)容減去第二操作數(shù)內(nèi)容,但差值不回存。轉(zhuǎn)移目的地址 = PC+ 3 + rel假設(shè)第一操作數(shù)內(nèi)容小于第二操作數(shù)內(nèi)容,則C= 1,否則C= 0。該類指令可產(chǎn)

38、生三分支程序: 即,相等分支;大于分支;小于分支。例2、設(shè)P1口的P1.0 P1.3為準(zhǔn)備就緒信號(hào)輸入端,當(dāng)該四位為全1時(shí),說(shuō)明各項(xiàng)工作已準(zhǔn)備好,單片機(jī)可順序執(zhí)行,否則,循環(huán)等待。解: MOV A,P1ANL A,#0FHCJNE A,#0FH,WAIT ;P1.0 P1.3不為全1時(shí),返回WAITMOV A,R2······3、循環(huán)轉(zhuǎn)移指令DJNZ Rn,rel ;二字節(jié)指令DINZ direct,rel ;三字節(jié)指令本指令也為雙功能指令,即減1操作和判斷轉(zhuǎn)移操作。第一操作數(shù)內(nèi)容減1后,假設(shè)差值不為零,則轉(zhuǎn)移;否則順序執(zhí)行。轉(zhuǎn)移目的

39、地址 = PC+ 2或3 + rel例3、將8031內(nèi)部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 §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等。一、位傳送指令MOV C,bitMOV bit,C功能:C bit;二、位狀態(tài)控制指令CLR bit ;bit 0SETB bit ;bit 1CPL bit ;bit / bit例1、編程通過(guò)P10線連續(xù)輸出256個(gè)寬度為5個(gè)機(jī)器周期長(zhǎng)的方波。解: MOV R0,#00H CLR P10 LOOP:CPL P10 NOP NOP DJNZ R0,LOOP四、布爾條件轉(zhuǎn)移指令有5條,分別對(duì)C和直接位地

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論