MCS51單片機(jī)復(fù)習(xí)要點(diǎn)_第1頁
MCS51單片機(jī)復(fù)習(xí)要點(diǎn)_第2頁
MCS51單片機(jī)復(fù)習(xí)要點(diǎn)_第3頁
MCS51單片機(jī)復(fù)習(xí)要點(diǎn)_第4頁
MCS51單片機(jī)復(fù)習(xí)要點(diǎn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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

3、即128B內(nèi)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)累加器A(E0H)(2)B寄存器:乘、除法運(yùn)算用(3)程序狀態(tài)字PSW寄存器:包含程序運(yùn)行狀態(tài)信息。PSW CY AC FO RS1 RS0 OV PCY(

4、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ū)選擇控制位。 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功能 不可尋址即不

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

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

7、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.#0FFH MOV 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)P0既可按字節(jié)尋址,又可按位尋址;(3)P0作為輸入口使用時(shí):

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

9、四、P3口地址B0H系統(tǒng)復(fù)位后P3=FFH2、特點(diǎn)(1)作通用I / O時(shí),是一準(zhǔn)雙向口,不是開漏輸出(無需外接上拉電阻)。(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ù);控制線:P3口的8位(RXD、TXD、INT0、INT1、T0、T1、WR*、RD*加上PSEN*、ALE、EA組成制總線。)中斷系統(tǒng)五個(gè)中斷源,兩個(gè)優(yōu)先級(jí)一、 中斷請(qǐng)求源(“五源中斷”)五

10、個(gè)中斷源: 入口地址 外部中斷0(/INT0) 0003H T0溢出中斷 000BH 外部中斷1(/INT1) 0013H T1溢出中斷 001BH 串口中斷 0023H有了中斷請(qǐng)求,如何通知CPU?通過中斷請(qǐng)求標(biāo)志位來通知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)志位 IE0(INT0) IE1(INT1) TF0(T0) TF1(T1) TI/RI(串口)TF1 T1的溢出中斷標(biāo)志。 硬件置1,硬件清0(也可軟件清0)。TF0

11、 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、INT1 觸發(fā)方式有電平觸發(fā)和跳變觸發(fā)TI 串口發(fā)送中斷標(biāo)志位。 發(fā)送完數(shù)據(jù),硬件使TI置1,軟件清0(CLR TI)RI 串行口接收中斷標(biāo)志位。 硬件置1,軟件清0。二、 中斷控制(兩級(jí)管理)1、中斷屏蔽在中斷源與CPU之間

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

13、U按優(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中斷 高 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

14、;設(shè)置定時(shí)器工作方式MOV TH0(TH1),# DATA;給定時(shí)器計(jì)數(shù)器裝入初值MOV TL0(TL1),# DATASETB EA ;開中斷SETB ET0(ET1) ;開中斷SETB TR0(TR1) ;啟動(dòng)定時(shí)器計(jì)數(shù)器一、定時(shí) / 計(jì)數(shù)器的結(jié)構(gòu)T0、T1均為16位加1計(jì)數(shù)器。計(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),僅由軟件置TR0(TR1)為1

15、啟動(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 模式 說明 0 0 0 13位定時(shí)/計(jì)數(shù)器 八位TH(7 0)+ 低五位TL(4 0) 0 1 1 16位定時(shí)/計(jì)數(shù)器 TH(7 0)+ TL(7 0) 1 0 2 8位計(jì)數(shù)初值自動(dòng)重裝 TL(7 0) TH(7 0) 1 1 3 T0工作在兩個(gè)8位定時(shí)/計(jì)數(shù)。運(yùn)行,而T1只能工作方式2, TCON T

16、R1 TR0 TR0 定時(shí) / 計(jì)數(shù)器0運(yùn)行控制位。 軟件置位,軟件復(fù)位。 與GATE有關(guān),分兩種情況: GATE = 0 時(shí),若TR0 = 1,開啟T0計(jì)數(shù)工作; 若TR0 = 0,停止T0計(jì)數(shù)。 GATE = 1 時(shí),若TR0 = 1 且/INT0 = 1時(shí),開啟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 對(duì)外計(jì)數(shù)。定時(shí):fosc / 12 = 1 /(12/fosc) = 1 / Tcy 等間隔,次數(shù)已定,時(shí)間確定 Tcy 即對(duì)

17、機(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ù)器的模)-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è)P1.0能產(chǎn)生t=1ms的周期信號(hào)發(fā)生器,主頻試編程。解:選T0; C/T=0

18、,GATE= 0定時(shí)時(shí)間0.5ms N = 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: MO

19、V TL0,#0CH MOV TH0,#0F0H CPL P10 RETI 單片機(jī)串行接口 8051單片機(jī)有一個(gè)異步全雙工串行通訊口 通過RXD(P3.0)接收 ,通過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 發(fā) 收 收 發(fā) 4、波特率 即串行通信速率。 b/s 、 bps 舉例、設(shè)有一幀信息,1個(gè)起始位、8個(gè)數(shù)據(jù)位、1個(gè)停止位,傳輸速率為240個(gè)字符。求波特率。解:

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

21、數(shù)據(jù),并軟件復(fù)位RI=0(CLR RI)接收時(shí)鐘0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收數(shù)據(jù) D0 D1 D2 D3 D4 D5 D6 D7 接收數(shù)據(jù)寄存器 SBUF(99H)CPU二、MCS-51機(jī)串行接口單片機(jī)內(nèi)有:通用異步接收/發(fā)送器 UART全雙工,4種工作方式,波特率可編程設(shè)置,可中斷。1、串口的組成 從編程角度講來看主要由以下寄存器組成。 PCON SMOD SCON SM0 SM1 SM2 REN TB8 RB8 TI RI SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF發(fā) SBUF收SM0、SM1:工作方式選擇位SM2:多機(jī)通信控制位,常

22、與RB8配合,決定是否激活RIREN:允許接收TB8:發(fā)送的第九位數(shù)RB8:接收的第九位數(shù)TI :中斷標(biāo)志RI SMOD:波特系數(shù)選擇位,0 20 = 1 1 21 = 22、串行口的工作方式(1)SM0、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 D2 D3 D4 D5 D6 D7 接收無起始位,無停止位(2)SM0、SM1=01方式1:8位UART,波特率為(2SMOD

23、5;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)方式2( SM0、SM1=10)、方式3 (SM0、SM1=11) :9位UART,多機(jī)通信。多機(jī)通信只能工作在方式2、

24、方式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ù)必須通過軟件置事先寫入寄存器SCON的TB8位,把要發(fā)送的數(shù)據(jù)發(fā)送到SBUF(MOV SUBF,A) 啟動(dòng)數(shù)據(jù)發(fā)送,發(fā)送完數(shù)據(jù)置位TI。CPU通過查詢方式查詢到TI=1或中斷方式可以繼續(xù)發(fā)送下一幀數(shù)據(jù),并軟件復(fù)位TI=0 (CLR TI)數(shù)據(jù)

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

26、 / 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 = 2562SMOD×fosc / (2400×32×12)= 242.982

27、43 = 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)移類指令、位操作類指令 指令三大

28、屬性。功能屬性、空間屬性(指令站用的字節(jié)數(shù))、時(shí)間屬性(指令執(zhí)行的機(jī)器周期數(shù))傳送類指令 有四種尋址方式 對(duì)A的數(shù)據(jù)傳送只影響狀態(tài)標(biāo)志位P訪問片內(nèi)RAM和SFR 指令格式 MOV 唯一的一條16位傳送指令 MOV DPTR,#DATA16訪問 片外 RAM 4條指令MOVX A,Ri MOVX A,DPTR( 這兩條指令是讀片外RAM的數(shù)據(jù)伴隨著控制信號(hào)RD*有效)MOVX Ri,A MOVX DPTR,A ( 這兩條指令是寫片外RAM的數(shù)據(jù)伴隨著控制信號(hào)WR*有效)訪問 程序存儲(chǔ)器ROM 2條指令MOVC A,A+PC MOVC A,A+DPTR ( 這兩條指令是讀程序ROM的數(shù)據(jù)伴隨著控制

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

30、) 1例2、設(shè)(SP)= 40H,(40H)= 12H,(3FH)= 34H 執(zhí)行 POP DPH POP DPL 后,各單元中的內(nèi)容。(SP) = 3EH,(DPTR)= 1234H,結(jié)論:1)PUSH 與 POP 操作過程剛好相反; 2)進(jìn)、出棧規(guī)則: 先進(jìn)后出,后進(jìn)先出。應(yīng)注意指令書寫先后順序; 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)以下類同。

31、ADD A,directADD A,RiADD A,#data無符號(hào)數(shù)相加時(shí):若C = 1,說明有溢出(其值 > 255)。帶符號(hào)數(shù)相加時(shí):若OV = D7cD6c = 1,說明有溢出。影響 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 ARL

32、C ARR ARRC A二、雙字節(jié)邏輯操作指令“與操作”: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 此做法稱為“屏蔽”位?!盎虿僮鳌保篛RL A,Rn ; (A) (A)(Rn),以下類同。ORL A,directORL A,RiORL A,#dataORL direct,AORL direct,#data例2、將A中的低3位送入P1中,并且保持P1中高5位不變。ANL A,#0

33、7HANL P1,#0F8HORL P1,A ;(P1)= P17P16P15P14P13A2A1A0這稱為“數(shù)位組合”?!爱惢虿僮鳌保篨RL A,Rn ; (A) (A)(Rn),以下類同。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í),無論P(yáng)

34、0 P3是第一,還是第二操作數(shù),都遵循“讀修改寫”端口鎖存器的操作。§3-5 控制轉(zhuǎn)移類指令作用:改變程序計(jì)數(shù)器PC的值,從而改變程序執(zhí)行方向。分為四大類:無條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;調(diào)用指令;返回指令。一、無條件轉(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×

35、211 = 32×2KB 轉(zhuǎn)移目的地址與(PC)+ 2在同一個(gè)2KB范圍內(nèi)。SJMP rel ;短轉(zhuǎn)移,相對(duì)尋址。轉(zhuǎn)移目的地址 = (PC)+ 2 + rel,所以 rel = 轉(zhuǎn)移目的地址(PC)2但,實(shí)際使用中常寫成 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)完成如下過程: (PC) (PC) + 3 (SP) (SP)+ 1 (S

36、P) (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)= 3456HACALL addr11 ; 轉(zhuǎn)移范圍與(PC)+ 2在同一個(gè)2KB內(nèi)。不影響任何標(biāo)志位,執(zhí)行中機(jī)器自動(dòng)完成下列過程: (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)移的方向。分三類。

38、1、判零轉(zhuǎn)移JZ relJNZ relJZ rel ;若(A)= 0 ,則轉(zhuǎn)移,否則順序執(zhí)行。JNZ rel ; 若(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 DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 MOV R0,A INC R0 INC DPTR SJMP LOOP1LOOP2: SJMP LOOP22、比較轉(zhuǎn)移指令功能:比較二個(gè)字

39、節(jié)中的值,若不等,則轉(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ù)內(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í),說明各項(xiàng)工作已準(zhǔn)備好,單片機(jī)可順序執(zhí)行,否則,循環(huán)等待。解: MOV A,P1ANL

40、 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后,若差值不為零,則轉(zhuǎn)移;否則順序執(zhí)行。轉(zhuǎn)移目的地址 = (PC)+ 2或3 + rel例3、將8031內(nèi)部RAM的40H 4FH單元置初值 #A0H #AFH。解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP:

41、 MOV R0,A INC R0 INC A DJNZ R2,LOOP §3-6 位操作指令包括:位傳送指令、條件轉(zhuǎn)移指令、位運(yùn)算指令。位操作由單片機(jī)內(nèi)布爾處理器來完成。位地址的四種表示:1)使用直接位地址表示:如20H、30H、33H等;2)使用位寄存器名來表示;如C、OV、F0等;3)用字節(jié)寄存器名后加位數(shù)來表示:如PSW.4、P0.5、ACC.3等;4)字節(jié)地址加位數(shù)來表示:如20.0、30.4、50.7等。一、位傳送指令MOV C,bitMOV bit,C功能:(C) (bit);二、位狀態(tài)控制指令CLR bit ;(bit) 0SETB bit ;(bit) 1CPL bit ;(bit) (/

溫馨提示

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