51單片機(jī)發(fā)展,指令代碼與中斷定時器計數(shù)器綜述_第1頁
51單片機(jī)發(fā)展,指令代碼與中斷定時器計數(shù)器綜述_第2頁
51單片機(jī)發(fā)展,指令代碼與中斷定時器計數(shù)器綜述_第3頁
51單片機(jī)發(fā)展,指令代碼與中斷定時器計數(shù)器綜述_第4頁
51單片機(jī)發(fā)展,指令代碼與中斷定時器計數(shù)器綜述_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

3.1單片機(jī)的定義

把組成微型計算機(jī)的各功能部件:中央處理器CPU、隨機(jī)存取存儲器RAM、只讀存儲器ROM、I/O接口電路、定時器/計數(shù)器以及串行通信接口等制作在一塊集成芯片中,構(gòu)成一個完整的微型計算機(jī)。

微控制器(MicroControllerUnit)嵌入式微控制器第三章醫(yī)學(xué)儀器中常用的單片機(jī)3.1.1基于單片機(jī)的醫(yī)學(xué)儀器

基于單片機(jī)的醫(yī)學(xué)儀器有很多種,例如:液晶顯示心電圖儀片斷式心電監(jiān)視儀胃電分析儀80C196KC便攜式生命參數(shù)監(jiān)護(hù)儀單片機(jī)自動采血3-53.1.2醫(yī)學(xué)儀器的軟件系統(tǒng)3-63.2單片機(jī)的發(fā)展第一階段(1971~1974年):

1971年Intel40041972年Intel8008

第二階段(1974~1978年):初級階段。以Intel公司的MCS-48為代表。特點:集成有8位CPU、并行I/O接口、8位定時器/計數(shù)器,尋址范圍不大于4K,無串行口。

產(chǎn)品系列:8048,8748;8035和8039

第三階段(1978~1983年):單片機(jī)普遍帶有串行口,有多級中斷處理系統(tǒng)、16位定時器/計數(shù)器。片內(nèi)RAM、ROM容量加大,且尋址范圍可達(dá)64KB,有的片內(nèi)還帶有A/D轉(zhuǎn)換器接口。代表:MCS-51系列單片機(jī)

第四階段(1983年~1990):

16位單片機(jī)和8位高性能單片機(jī)并行發(fā)展階段。特點:實時處理能力強(qiáng)生產(chǎn)工藝先進(jìn),集成度高,內(nèi)部功能強(qiáng)允許用戶采用工業(yè)控制的專用語言編程,如

PL/M、C語言、BASIC語言等

第五階段(1990~現(xiàn)在):

i80860超級單片機(jī)特點:運(yùn)算速度快(1.2億次/秒)運(yùn)算功能強(qiáng)可進(jìn)行32位整數(shù)運(yùn)算和64位浮點運(yùn)算具有一個三維圖形處理器,可構(gòu)成超級圖形工作站。3.3單片機(jī)的應(yīng)用特性(1)集成度高

MCS-51系列單片機(jī)代表產(chǎn)品為8051,8051內(nèi)部包含4KB的ROM、128B的RAM、四個8位并行口、一個全雙工串行口、兩個16位定時器/計數(shù)器以及一個處理功能強(qiáng)大的中央處理器。(2)系統(tǒng)結(jié)構(gòu)簡單

MCS-51系列單片機(jī)芯片內(nèi)部采用模塊化結(jié)構(gòu)。MCS-51系列單片機(jī)具有64KB的外部程序存儲器尋址能力和64KB的外部RAM和I/O口尋址能力。(3)可靠性高單片機(jī)屬于工業(yè)品,能在常溫下工作,不需要在溫度恒定的機(jī)房內(nèi)工作。由于單片機(jī)總線大多在芯片內(nèi)部不易受干擾,而且單片機(jī)應(yīng)用系統(tǒng)體積小,易于屏蔽,所以單片機(jī)的可靠性較高。(4)處理功能強(qiáng),速度快

MCS-51系列單片機(jī)指令系統(tǒng)中具有加、減、乘、除指令,各種邏輯運(yùn)算和轉(zhuǎn)移指令,還具有位操作功能。CPU時鐘頻率高達(dá)12MHz,單字節(jié)乘法和除法僅需要4μs,而且具有特殊的多機(jī)通信功能。3.4單片機(jī)的制造工藝

制造單片機(jī)的工藝只有兩種:HMOS工藝和CHMOS工藝。早期的MCS-51系列芯片都采用HMOS工藝,即()MOS工藝。8051、8751、8031、8951等產(chǎn)品均屬于HMOS工藝制造的產(chǎn)品。

CHMOS工藝是CMOS和HMOS的結(jié)合,除保持了HMOS工藝的高密度、高速度之外,還具有CMOS工藝低功耗的特點。3.5

MCS-51單片機(jī)系列產(chǎn)品

表1MCS-51系列單片機(jī)

8052資源配置

片內(nèi)ROM形式片內(nèi)ROM片內(nèi)RAM定時/計數(shù)器無ROMEPROME2PROMMCS-5189514KB128B2×16MCS-52803289528KB256B3×1687523.6

MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)

(1)8位中央處理器(CPU)運(yùn)算器電路

運(yùn)算器電路是單片機(jī)的運(yùn)算部件,用于實現(xiàn)算術(shù)和邏輯運(yùn)算。ALU(算術(shù)邏輯單元)、ACC(累加器)、B寄存器、程序狀態(tài)字和兩個暫存寄存器等屬于運(yùn)算器電路。它以ALU為核心,包括加、減、乘、除等算術(shù)運(yùn)算,與、或、非等邏輯運(yùn)算,左右移位和半字節(jié)交換等操作。

控制電路包括:PC、PC加1寄存器、指令寄存器、指令譯碼器、定時和控制電路等。

(3)內(nèi)部數(shù)據(jù)存儲器包括128B/256B的RAM和RAM地址鎖存器等。實際上8051或80C51內(nèi)部共有256個RAM單元,但后128單元被特殊功能寄存器SFR占用,供用戶使用的只是前128個單元。(2)內(nèi)部程序存儲器

4KB/8KB的存儲器(ROM或EPROM)。對于8051、80C51內(nèi)部共有4KB的掩膜ROM,用于存放程序和原始數(shù)據(jù)。

圖3.2MCS-51系列單片機(jī)存儲空間配置示意圖3-11

程序存儲器

MCS-51片內(nèi)、片外一共可以尋址64K的程序存儲器地址空間。

內(nèi)部數(shù)據(jù)存儲器

MCS-51有128字節(jié)的片內(nèi)存儲器RAM,同時具有64K的外存尋址能力。圖3.3片內(nèi)RAM地址空間3-12(5)定時器/計數(shù)器

MCS-51有2個或3個16位定時器/計數(shù)器,以實現(xiàn)定時或計數(shù)功能,并以定時或計數(shù)的結(jié)果對單片機(jī)進(jìn)行控制。(6)串行口全雙工UART的串行口,以實現(xiàn)單片機(jī)和其他數(shù)據(jù)設(shè)備之間的串行數(shù)據(jù)傳送??勺鳛槿p工UART異步通信收發(fā)器使用,又可作為同步移位器使用。(4)并行的I/O口

MCS-51中共有4個8位的I/O口(P0、P1、P2、

P3)以實現(xiàn)并行的輸入輸出。(7)時鐘電路

MCS-51單片機(jī)芯片內(nèi)部有時鐘電路,但石英晶體振蕩器和微調(diào)電容需外接。時鐘電路為單片機(jī)產(chǎn)生時鐘脈沖序列,典型的晶振頻率為6MHz或12MHz。(8)位處理器位處理器又稱布爾處理器。位處理器以狀態(tài)寄存器中的進(jìn)位標(biāo)志C為累加位,可進(jìn)行置位、復(fù)位、取反、等于“0”轉(zhuǎn)移、等于“1”轉(zhuǎn)移以及C與可尋址位之間的傳送、邏輯與、邏輯或等位操作。(9)總線上述8個部件都通過片內(nèi)單一總線連接。系統(tǒng)的地址信號、數(shù)據(jù)信號、控制信號都是通過總線傳送的??偩€結(jié)構(gòu)減少了單片機(jī)的連線和引腳,提高了集成度和可靠性。

問題:單片機(jī)包括哪三類?3.7MCS-51單片機(jī)的信號引腳

HMOS制造工藝的MCS-51單片機(jī)都采用40引腳的DIP方式

CHMOS制造工藝的80C51/80C31芯片除采用DIP方式外,還采用方形封裝工藝

(1)主電源引腳Vcc和VssVcc:接+5V電壓

Vss:接地(2)外接晶體引腳XTAL:接外部晶體的一個引腳。在單片機(jī)內(nèi)部,它是一個反相放大器的輸入端,這個放大器構(gòu)成了片內(nèi)振蕩器。

(3)控制引腳RST/VPD、ALE/PROG、PSEN、EA/VPPRST/VPD(9腳):振蕩器運(yùn)行時,在此引腳上出現(xiàn)兩個機(jī)器周期的高電平使單片機(jī)復(fù)位。對于EPROM型的單片機(jī),在EPROM編程期間,此引腳用于輸入編程脈沖。

ALE/PROG:當(dāng)訪問外部存儲器時,ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍然以不變的頻率周期性地出現(xiàn)正脈沖信號,此頻率為振蕩器的1/6。因此,它可以用作對外輸出的時鐘,或用于定時。問題:PSEN、EA/VPP各有什么功能?PSEN外部程序存儲器讀選通信號:在讀外部ROM時PSEN低電平有效,以實現(xiàn)外部ROM單元的讀操作。

1、內(nèi)部ROM讀取時,PSEN不動作;

2、外部ROM讀取時,在每個機(jī)器周期會動作兩次;

3、外部RAM讀取時,兩個PSEN脈沖被跳過不會輸出;

4、外接ROM時,與ROM的OE腳相接。EA/VPP訪問和序存儲器控制信號

1、接高電平時:

CPU讀取內(nèi)部程序存儲器(ROM)

擴(kuò)展外部ROM:當(dāng)讀取內(nèi)部程序存儲器超過0FFFH(8051)1FFFH(8052)時自動讀取外部ROM。

2、接低電平時:CPU讀取外部程序存儲器(ROM)。在前面的學(xué)習(xí)中我們已知道,8031單片機(jī)內(nèi)部是沒有ROM的,那么在應(yīng)用8031單片機(jī)時,這個腳是一直接低電平的。

3、8751燒寫內(nèi)部EPROM時,利用此腳輸入21V的燒寫電壓。(4)輸入/輸出(I/O)引腳P0、P1、P2、P3P0口:雙向8位三態(tài)I/O口。P0用于分時地址/數(shù)據(jù)總線(低8位地址),P2也用于外部地址總線(高8位地址),與P0一起形成16位地址。

P1口(1腳~8腳):是準(zhǔn)雙向8位I/O口。P1口可以驅(qū)動(吸收或輸出電流)4個LS型的TTL負(fù)載。對于8052、8032,P1.0引腳的第二功能為T2定時器/計數(shù)器的外部輸入,P1.1引腳的第二功能為T2的外部控制端。。3.8MCS-51的中斷系統(tǒng)

3.8.1中斷的定義及優(yōu)點(1)中斷的定義

CPU在處理某事件

A時,發(fā)生了另一事件B請求(中斷發(fā)生)CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù))待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回)

(2)中斷的優(yōu)點

中斷技術(shù)不僅解決了快速主機(jī)與慢速I/O設(shè)備的數(shù)據(jù)傳送問題,而且還具有如下優(yōu)點:

分時操作

CPU可以分時為多個I/O設(shè)備服務(wù),提高了計算機(jī)的利用率;

實時響應(yīng)

CPU能及時處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實時性大大增強(qiáng);

可靠性高

CPU具有處理設(shè)備故障及掉電等突發(fā)性事件的能力,從而使系統(tǒng)可靠性提高。3.8.2

MCS-51中斷系統(tǒng)的結(jié)構(gòu)

主程序繼續(xù)執(zhí)行主程序響應(yīng)中斷中斷返回中斷服務(wù)程序中斷結(jié)構(gòu)示意圖主程序響應(yīng)中斷中斷返回高級中斷繼續(xù)執(zhí)行主程序響應(yīng)中斷中斷返回低級中斷中斷嵌套示意圖中斷系統(tǒng)示意圖中斷系統(tǒng)示意圖中斷系統(tǒng)示意圖中斷系統(tǒng)示意圖3.8.3

MCS-51的中斷源

(1)中斷分類1(P3.2)P3.2引腳上出現(xiàn)有效的中斷信號時,中斷標(biāo)志IE0置12(P3.3)P3.3引腳上出現(xiàn)有效的中斷信號時,中斷標(biāo)志IE1置13TF0(TCON.5)定時/計數(shù)器T0發(fā)生溢出,置位TF0,向CPU申請中斷4TF1(TCON.7)定時/計數(shù)器T1發(fā)生溢出,置位TF1,向CPU申請中斷5RI(SCON.0)或TI(SCON.1)串行口接收或發(fā)送一幀串行數(shù)據(jù),向CPU申請中斷(2)中斷優(yōu)先級排隊(3)中斷請求標(biāo)志

TCON的中斷標(biāo)志IT0(TCON.0)外部中斷0觸發(fā)方式控制位IE0(TCON.1)外部中斷0中斷請求標(biāo)志位IT1(TCON.2)外部中斷1觸發(fā)方式控制位IE1(TCON.3)外部中斷1中斷請求標(biāo)志位TF0(TCON.5)定時/計數(shù)器T0溢出中斷請求標(biāo)志TF1(TCON.7)定時/計數(shù)器T1溢出中斷請求標(biāo)志SCON的中斷標(biāo)志TI(SCON.1),串行口發(fā)送中斷標(biāo)志位發(fā)送完一個串行幀時,由硬件置位TI。CPU響應(yīng)中斷時,不能自動清除TI,TI必須由軟件清除。

RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。同樣RI必須由軟件清除。

(1)中斷允許控制

3.8.4MCS-51中斷的控制

EX0(IE.0):外部中斷0允許位ET0(IE.1):定時/計數(shù)器T0中斷允許位EX1(IE.2):外部中斷1允許位ET1(IE.3):定時/計數(shù)器T1中斷允許位ES(IE.4):串行口中斷允許位EA(IE.7):CPU中斷允許(總允許)位“1”為允許中斷“0”為禁止中斷(2)中斷優(yōu)先級控制

PX0(IP.0):外部中斷0優(yōu)先級設(shè)定位;PT0(IP.1):定時/計數(shù)器T0優(yōu)先級設(shè)定位;PX1(IP.2):外部中斷1優(yōu)先級設(shè)定位;PT1(IP.3):定時/計數(shù)器T1優(yōu)先級設(shè)定位;PS(IP.4):串行口優(yōu)先級設(shè)定位?!?”為高優(yōu)先級,“0”為低優(yōu)先級。(4)中斷優(yōu)先級原則

CPU同時接收到幾個中斷時,首先響應(yīng)優(yōu)先級別最高的中斷請求。正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。

為實現(xiàn)后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個用戶不能尋址的優(yōu)先級狀態(tài)觸發(fā)器。一個表示正在響應(yīng)高優(yōu)先級的中斷,它將阻斷后來所有的中斷請求;另一個表示正在響應(yīng)低優(yōu)先級中斷,它將阻斷后來所有的低優(yōu)先級中斷請求。3.8.5MCS-51單片機(jī)中斷處理過程

(1)中斷響應(yīng)中斷響應(yīng)定義中斷響應(yīng)是CPU對中斷源中斷請求的響應(yīng),包括保護(hù)斷點和將程序轉(zhuǎn)向中斷服務(wù)程序入口地址中斷響應(yīng)條件中斷源有中斷請求此中斷源的中斷允許位為1CPU開中斷(即EA=1)

以下情況中斷響應(yīng)會受阻CPU正在處理同級或高優(yōu)先級中斷當(dāng)前查詢的機(jī)器周期非執(zhí)行指令的最后一個機(jī)器周期正在執(zhí)行的指令為RETI或訪問IE或IP寄存器的指令

中斷響應(yīng)時間中斷響應(yīng)時間:指從查詢中斷請求標(biāo)志位到轉(zhuǎn)向中斷服務(wù)入口地址所需的機(jī)器周期數(shù)。

若M1周期的S5P2前某中斷生效,在S5P2期間其中斷請求被鎖存到相應(yīng)的標(biāo)志位中;M2周期查詢中斷標(biāo)志;M3和M4執(zhí)行硬件LCALL指令;M5周期將進(jìn)入中斷服務(wù)程序中斷響應(yīng)時間范圍最快響應(yīng)時間

以外部中斷的電平觸發(fā)為最快。

從查詢中斷請求信號到中斷服務(wù)程序需三個機(jī)器周期:

1個周期(查詢)+2個周期(長調(diào)用LCALL)

最長時間

問題:若當(dāng)前指令是RET、RETI和IP、IE指令,下一條發(fā)生乘除指令,則最長為多少個周期?

2個周期執(zhí)行當(dāng)前指令(其中含有1個周期查詢)+4個周期乘除指令+2個周期長調(diào)用(2)中斷處理

中斷處理就是執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序從中斷入口地址開始執(zhí)行,到返回指令RETI為止。執(zhí)行硬件LCALL指令,進(jìn)入中斷服務(wù)程序后,先保護(hù)現(xiàn)場,后執(zhí)行中斷處理程序,在中斷返回前再恢復(fù)現(xiàn)場。

(3)中斷返回

中斷返回是指中斷服務(wù)完后,計算機(jī)返回原來斷開的位置(即斷點),繼續(xù)執(zhí)行原來的程序。中斷返回由中斷返回指令RETI來實現(xiàn)。

RETI指令的具體功能:將中斷響應(yīng)時壓入堆棧保存的斷點地址從棧頂彈出送回PC,CPU從原來中斷的地方繼續(xù)執(zhí)行程序;將相應(yīng)中斷優(yōu)先級狀態(tài)觸發(fā)器清零。0,通知中斷系統(tǒng),中斷服務(wù)程序已執(zhí)行完畢。

(4)中斷請求的撤除8051各中斷源中斷請求撤消方法:

對串口、T2中斷:CPU在響應(yīng)中斷后,硬件不能自動清除中斷請求標(biāo)志位TI、RI,須在中斷服務(wù)程序中用軟件將其清除;

對INT0、INT1:若設(shè)置為電平中斷,CPU響應(yīng)中斷后,應(yīng)使外部引腳置高,以避免重復(fù)中斷。例多外部中斷源的系統(tǒng)示例設(shè)有5個外部中斷源,中斷優(yōu)先級排隊順序為:XI0、XI1、XI2、XI3、XI4。試設(shè)計它們與80C51單片機(jī)的接口。ORG0003HLJMPINSE0[轉(zhuǎn)外部中斷0服務(wù)程序入口]

ORG0013HLJMPINSE1[轉(zhuǎn)外部中斷1服務(wù)程序入口]

…………INSE0:PUSHPSW[XI0中斷服務(wù)程序]

PUSHACC…………POPACCPOPPSWRETI

INSE1:PUSHPSW[中斷服務(wù)程序]

PUSHACCJBP1.0,DV1;JBP1.1,DV2;……INRET:POPACCPOPPSWRETIDV1:……[XI1中斷服務(wù)程序]

AJMPINRETDV2:……[XI2中斷服務(wù)程序]

AJMPINRET……3.9MCS-51的定時/計數(shù)器

3.9.1三種定時方式軟件定時不占用硬件資源,但占用了CPU時間基電路定時如采用555電路,外接必要的元器件缺點:在硬件連接好以后,定時值與定時范圍不能由軟件進(jìn)行控制和修改可編程芯片定時定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強(qiáng),使用靈活3.9.2定時/計數(shù)器的結(jié)構(gòu)3.9.3

定時/計數(shù)器的工作原理

脈沖來源:

一個由系統(tǒng)時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;一個是T0或T1引腳輸入的外部脈沖源。

定時器模式

加1計數(shù)器是對內(nèi)部機(jī)器周期計數(shù),每過一個機(jī)器周期,計數(shù)器加1,直至計滿溢出為止。定時時間t=計數(shù)值N×機(jī)器周期Tcy

計數(shù)器模式

3.9.4定時/計數(shù)器的控制

工作方式寄存器TMOD定時器T1定時器T0GATE:門控位GATE=0時,用軟件使TCON中的TR0或TR1為1,就可啟動定時/計數(shù)器工作;GATE=1時,要用軟件使TR0或TR1為1,同時外部中斷引腳為高電平時,才能啟動定時/計數(shù)器工作。問題:若定時/計數(shù)器以計數(shù)方式工作,工作方式為2,那么TMOD的值應(yīng)為多少?定時器T1定時器T0MIMO

工作方式說明00

方式013位定時/計數(shù)器01方式116位定時/計數(shù)器10方式28位自動重裝定時/計數(shù)器11方式3T0分為兩個獨立的8位定時/計數(shù)器,T1此方式停止計數(shù)

控制寄存器TCON

TF1(TCON.7):T1溢出中斷請求標(biāo)志位

T1計數(shù)溢出時由硬件自動置TF1為1。CPU響應(yīng)

中斷后TF1由硬件自動清0。TR1(TCON.6):T1運(yùn)行控制位。

TR1置1時,T1開始工作;TR1置0時,T1停止工

作。TR1由軟件置1或清0。3.9.5

定時/計數(shù)器的工作方式

(1)方式0

13位計數(shù)時,由TL0的低5位和TH0的8位組成。

(2)方式1

方式1的計數(shù)位數(shù)是16位,由TL0作為低8位而TH0作為高8位,組成了16位加1計數(shù)器。計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:

(3)方式2

方式2為自動重裝初值的8位計數(shù)方式計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:

(4)方式3

方式3只適用于定時/計數(shù)器T0,定時器T1處于方式3時相當(dāng)于TR1=0,停止計數(shù)

3.9.5定時/計數(shù)器用于外部中斷擴(kuò)展

方法:定時/計數(shù)器設(shè)置為計數(shù)器方式

初值設(shè)為滿程

待擴(kuò)展外部中斷源接至外部計數(shù)引腳

3.9.5定時/計數(shù)器用于外部中斷擴(kuò)展

初始化工作:定時器T1定時器T0對TMOD賦值,以確定T0和T1的工作方式計算初值,并將其寫入TH0、TL0或TH1、TL1

3.9.5定時/計數(shù)器用于外部中斷擴(kuò)展

初始化工作:中斷方式時,則對IE賦值,開放中斷使TR0或TR1置位,啟動定時/計數(shù)器定

時或計數(shù)

例1:利用T0擴(kuò)展一個外部中斷源。T0以計數(shù)器方式工作,工作方式為2。

Program:

MOVTMOD,#06H;置T0為計數(shù)器方式2MOVTL0,#0FFH;置計數(shù)初值

MOVTH0,#0FFHSETBTR0;啟動T0工作

SETBEA;CPU開中斷

SETBET0;允許T0中斷

例2利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)時鐘頻率為12MHz。

關(guān)鍵點:計算計數(shù)初值X晶振為12MHz,機(jī)器周期Tcy為?μS機(jī)器周期=6個狀態(tài)周期=12個時鐘周期N=t/Tcy=10×10-3/1×10-6=10000X=65536-10000=55536=D8F0H

LJMPDVT0;轉(zhuǎn)向中斷服務(wù)程序MAIN:MOVTMOD,#01H;置T0工作于方式1MOVTH0,#0D8H;裝入計數(shù)初值

MOVTL0,#0F0HSETBET0;T0開中斷

SETBEA;CPU開中斷

SETBTR0;啟動T0SJMP$;等待中斷DVT0:CPLP1.0;P1.0取反輸出

MOVTH0,#0D8H;重新裝入計數(shù)值

MOVTL0,#0F0HRETI;中斷返回

END4MCS-51指令系統(tǒng)

4.1指令分類按指令功能,MCS-51指令系統(tǒng)分為:數(shù)據(jù)傳遞與交換、算術(shù)運(yùn)算、邏輯運(yùn)算、程序轉(zhuǎn)移、布爾處理操作、CPU控制等6類。4.2指令格式在MCS-51指令中,一般指令主要由操作碼、操作數(shù)組成。

指令格式為:操作碼

[目的操作數(shù)][,源操作數(shù)4MCS-51指令系統(tǒng)

4.1尋址方式

尋址方式:就是尋找指令中操作數(shù)或操作數(shù)所在地址的方法。8051共有七中尋址方式。立即尋址直接尋址寄存器尋址

寄存器間接尋址變址尋址

相對尋址

位尋址尋址方式中常用符號注釋Rn——當(dāng)前選中的寄存器區(qū)中的8個工作寄存器R0~R7(n=0~7)Ri——當(dāng)前選中的寄存器區(qū)中的2個工作寄存器(間接尋址寄存器)R0、R1direct—8位的內(nèi)部數(shù)據(jù)存儲器單元中的地址#data——包含在指令中的8位常數(shù)#data16——包含在指令中的16位常數(shù)addr16——16位目的地址addr11——11位目的地址rel——8位帶符號的偏移字節(jié),簡稱偏移量DPTR——數(shù)據(jù)指針,可用作16位地址寄存器bit——內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺籄——累加器B——專用寄存器,用于乘法和除法指令中C——進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機(jī)中的累加器$——表示程序計數(shù)器的當(dāng)前值。常出現(xiàn)在轉(zhuǎn)移指令中,如:SJMP$表示循環(huán)等待4.1.1立即數(shù)尋址

指令中直接給出操作數(shù)的尋址方式。立即操作數(shù)用加有#號的8位或16位數(shù)表示例如:MOVA,#60H;A←60HMOVDPTR,#3400H;DPTR←3400HMOV 30H,#40H;30H單元←40H上述三條指令執(zhí)行完后,累加器A中數(shù)據(jù)為立即數(shù)據(jù)60H,DPTR寄存器中數(shù)據(jù)為3400H,30H單元中數(shù)據(jù)為立即數(shù)40H。4.1.2直接尋址 指令中直接給出操作數(shù)地址的尋址方式,能進(jìn)行直接尋址的存儲空間有SFR寄存器和片內(nèi)RAM的128個單元。例如:MOV A,P1;A←(P1)把SFR中P1口的內(nèi)容送A。

MOVA,30H;A←(30H)

30H為直接給出的內(nèi)部RAM的地址4.1.3寄存器尋址

以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。通用寄存器指A、B、DPTR以及R0~R7

。

例如:MOVA,R0;A←(R0)

CLR A ;A←0INC DPTR;DPTR←DPTR+1ADD A,R5;A←(A)+(R5)4.1.4寄存器間接尋址以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式。間接尋址的存儲器空間包括內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM。能用于寄存器間接尋址的寄存器有R0,R1,DPTR,SP。其中R0、R1必須是工作寄存器組中的寄存器。SP僅用于堆棧操作。例:MOV@R0,A;內(nèi)部RAM(R0)←A

其指令操作過程示意圖如圖4.1所示。又如:MOVX@DPTR,A;外部RAM(DPTR)←A

其指令操作過程示意圖如圖4.2所示。片內(nèi)RAM30HR034HA30H34H圖4-1MOV@R0,A間接尋址示意圖片外RAM2000HDPTR30HA2000H30H圖4-2MOVX@DPTR,A間接尋址4.1.5變址尋址

基址寄存器(A)+變址寄存器(PC或DPTR)的間接尋址。

變址尋址只能對程序存儲器中數(shù)據(jù)進(jìn)行操作。由于程序存儲器是只讀的,因此變址尋址只有讀操作而無寫操作,在指令符號上采用MOVC的形式(如圖4-3所示)。例:MOVCA,@A+DPTR;

A←(A+DPTR)又如:MOVCA,@A+PC;

A←(A+PC)

圖4-3變址尋址示意圖程序存儲器2000HDPTR64H(10H)A2010H64H10H2000H4.1.6相對尋址 以當(dāng)前程序計數(shù)器PC的內(nèi)容為基礎(chǔ),加上指令給出的一字節(jié)補(bǔ)碼數(shù)(偏移量)形成新的PC值的尋址方式。相對尋址用于修改PC值,主要用于實現(xiàn)程序的分支轉(zhuǎn)移。例:SJMP08H;PC←PC+2+08H

指令操作示意圖如圖4-4所示。程序存儲器(2000H)200AHSJMP200AH08H2000H+208HPC2000H圖4-4相對尋址示意圖4.1.7位尋址只能對有位地址的單元作位尋址操作。是一種直接尋址方式,但其地址是位地址。例:SETB10H;將10H位置1。若22H單元中存放著數(shù)據(jù)40H,22H單元的D0位的位地址為10H,執(zhí)行上述指令后(22H)=41H

又如:MOV32H,C;32H←進(jìn)位位CORLC,32H;C←C∨32H

4.1.8源操作數(shù)尋址空間尋址方式源操作數(shù)尋址空間立即數(shù)尋址程序存儲器ROM直接尋址片內(nèi)RAM低128B、SFR寄存器尋址工作寄存器R0---R7、A、B、C、DPTR寄存器間接尋址片內(nèi)RAM低128B[@R0、@R1]片外RAM[@R0、@R1、@DPTR]變址尋址程序存儲器[@A+PC、@A+DPTR]相對尋址程序存儲器256B范圍(PC+偏移量)位尋址片內(nèi)RAM的20H—2FH字節(jié)地址4.2.1數(shù)據(jù)傳送類指令4.2.2算術(shù)運(yùn)算類指令4.2.3邏輯運(yùn)算類指令4.2.4控制程序轉(zhuǎn)移類指令4.2.5調(diào)用子程序及返回指令4.2.6位操作指令4.2.7空操作指令 4.2MCS-51指令系統(tǒng)4.2.1數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令共28條,是將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8種。源操作數(shù)可采用寄存器、寄存器間接、直接、立即、變址5種尋址方式尋址;目的操作數(shù)可以采用寄存器、寄存器間接、直接尋址3種尋址方式。數(shù)據(jù)傳送指令是一種最基本最常用的操作,在通常的程序中占有極大的比例。(1)以A、Rn、直接地址、DPTR為目的操作數(shù)MOVA,Rn ;A←RnMOVA,direct ;A←(direct)MOVA,@Ri ;A←(Ri)MOVA,#data ;A←#data上述指令是將源操作數(shù)指定的內(nèi)容送到累加器A中。上述操作只影響PSW的P標(biāo)志位。(2)訪問外部數(shù)據(jù)RAM

在8051指令系統(tǒng)中,訪問片外RAM只能用寄存器間接尋址,與累加器A配合,共四條指令。

MOVXA,@Ri ;A←((Ri))

MOVX@Ri,A ;(Ri)←A

尋址范圍是片外256BRAM。

MOVXA,@DPTR;A←((DPTR))

MOVX@DPTR,A;(DPTR)←A

尋址范圍是片外64KBRAM。(3)讀程序存儲器(查表指令)注:數(shù)據(jù)表格放在程序存儲器中①近程查表指令(256B)

MOVCA,@A+PC ;A←((A)+(PC))只能查找指令所在地址以后256B范圍內(nèi)的常數(shù)或代碼。②遠(yuǎn)程查表指令(64KB)MOVCA,@A+DPTR;A←((A)+(DPTR))查表范圍可達(dá)ROM的64KB空間。例如:在程序存儲器中,數(shù)據(jù)表格為

1010H:02H1011H:04H1012H:06H1013H:08H執(zhí)行程序1000H:MOVA,#0DH;A←0DH,偏移量1002H:MOVCA,@A+PC;1003H:MOVR0,A;R0←A

問題:(A)=?(R0)=?(PC)=?

如:在程序存儲器中,數(shù)據(jù)表格為:

7010H:02H7011H:04H7012H:06H7013H:08H

執(zhí)行程序

1000H:MOVA,#10H;A←10H,偏移量

1002H:MOVDPTR,#7000H;

1003H:MOVCA,@A+DPTR;問題(A)=?(3)數(shù)據(jù)交換l

字節(jié)交換XCHA,Rn ;A<=>RnXCHA,direct ;A<=>(direct)XCHA,@Ri ;A<=>(Ri)l

半字節(jié)交換XCHDA,@Ri ;A0~3<=>(Ri)0~3

低4位互換,高4位不變。SWAPA ;A0~3<=>A4~7(高低兩半字節(jié)交換)(4)堆棧操作

堆棧是在片內(nèi)RAM中按“先進(jìn)后出,后進(jìn)先出”原則設(shè)置的專用存儲區(qū)。數(shù)據(jù)的進(jìn)棧出棧由指針SP統(tǒng)一管理。堆棧的操作有如下兩條專用指令:

PUSHdirect;

SP←(SP+1),(SP)←(direct)

POPdirect;(direct)←(SP),SP←SP-1MOVR5,R7

MOVA,55H

MOVA,#55H

JMP@A+DPTR

MOV30H,C

MOVA,@R0

MOVXA,@R0習(xí)題:分別說出下列指令的尋址方式例:將片內(nèi)RAM30H單元與40H單

元中的內(nèi)容互換方法1:

MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2:

MOV R0,#40HMOV R1,#30HMOV A,@R0MOV B,@R1MOV @R1,AMOV @R0,BSJMP $

方法3:

MOV A,30HXCH A,40HMOV 30H,ASJMP $

方法4:

PUSH 30HPUSH 40HPOP 30HPOP 40HSJMP $4.2.2算術(shù)運(yùn)算類指令

8051算術(shù)運(yùn)算指令包括加、減、乘、除基本四則運(yùn)算算術(shù)運(yùn)算結(jié)果將使進(jìn)位CY、半進(jìn)位AC、溢出位OV三個標(biāo)志位置位或復(fù)位,只有加1和減1指令不影響這些標(biāo)志位加、減、乘、除及十進(jìn)制調(diào)整指令,目的操作數(shù)均為累加器A。(1)加法指令(四條)ADDA,Rn ;A←A+RnADDA,direct ;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data ;A←A+#data(2)帶進(jìn)位加指令(四條)

ADDCA,Rn ;A←A+Rn+CADDCA,direct ;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data ;A←A+#data+CC為來自PSW狀態(tài)寄存器中的進(jìn)位位C

功能:把源操作數(shù)指出的內(nèi)容和進(jìn)位標(biāo)志位

CY都加到累加器A中,結(jié)果存在A中

例:設(shè)(A)=03CH,(R0)=0AAH,CY=1,執(zhí)行指令A(yù)DDCA,R0后,A=6EH

(A):11000011+(CY):0000000111000100+(R0):1010101001101110

標(biāo)志位CY=1,AC=0(3)帶借位減指令

SUBBA,Rn ;A←A-Rn-CSUBBA,direct;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data ;A←A-#data–C

功能:從累加器A中減去源操作數(shù)指出的內(nèi)容和進(jìn)位標(biāo)志位CY的值,差存放在累加器A中

例:設(shè)(A)=0C9H,(R2)=20H,(20H)=54H,CY=1

執(zhí)行指令SUBBA,@R2后,A=74H

(A):11001001—(CY):0000000111001000—(R2):0101010001110100

標(biāo)志位CY=0,AC=0(4)乘法指令

MULAB ;BA←A×BA和B中各存放一個8位無符號數(shù),指令執(zhí)行后,16位乘積的高8位在B中,低8位存A中。例:(A)=30H,(B)=60H;

執(zhí)行MULAB后,A=00H,B=12H

(5)除法指令

DIVAB;A÷B→商在A中,余數(shù)在B中

A和B中各存放一個8位無符號數(shù),A放被除數(shù),B放除數(shù)。指令執(zhí)行后,A中存放商,B中存入余數(shù)。若B=00H,則指令執(zhí)行后OV=1,A與B不變。例:(A)=30H,(B)=07H;

執(zhí)行DIVAB后,A=06H,B=06H(6)加1指令(5條)INCA ;A←A+1INCRn ;Rn←Rn+1INCdirect;(direct)←(direct)+1INC@Ri;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1功能:將操作數(shù)所指定的單元加1,其操作不影響PSW;若原單元內(nèi)容為FFH,加1后溢出為00H,也不影響PSW。例:(30H)=22H,執(zhí)行INC30H后,(30H)=23H

(7)減1指令DECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-1功能:將操作數(shù)所指定的單元減1,其操作不影響PSW;若原單元內(nèi)容為00H,減1后溢出為FFH,也不影響PSW。例:R0=30H,(30H)=22H,執(zhí)行DEC@R0后,(30H)=21H

例:把存放在R1R2和R3R4中的兩個16位數(shù)相加,結(jié)果存于R5R6中。

MOVA,R2 ;取第一個數(shù)的低8位

ADDA,R4 ;兩數(shù)的低8位相加

MOVR6,A ;保存和的低8位

MOVA,R1 ;取第一個數(shù)的高8位

SJMP$

ADDCA,R3;兩數(shù)的高8位相加,并把低8

位相加的進(jìn)位位加進(jìn)來

MOVR5,A;把相加的高8位存R5寄存器中4.2.3邏輯運(yùn)算指令(1

溫馨提示

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

評論

0/150

提交評論