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

下載本文檔

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

文檔簡介

3.1單片機的定義

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

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

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

1971年Intel40041972年Intel8008

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

產品系列:8048,8748;8035和8039

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

第四階段(1983年~1990):

16位單片機和8位高性能單片機并行發展階段。特點:實時處理能力強生產工藝先進,集成度高,內部功能強允許用戶采用工業控制的專用語言編程,如

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

第五階段(1990~現在):

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

MCS-51系列單片機代表產品為8051,8051內部包含4KB的ROM、128B的RAM、四個8位并行口、一個全雙工串行口、兩個16位定時器/計數器以及一個處理功能強大的中央處理器。(2)系統結構簡單

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

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

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

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

MCS-51單片機系列產品

表1MCS-51系列單片機

8052資源配置

片內ROM形式片內ROM片內RAM定時/計數器無ROMEPROME2PROMMCS-5189514KB128B2×16MCS-52803289528KB256B3×1687523.6

MCS-51單片機的內部結構

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

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

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

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

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

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

程序存儲器

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

內部數據存儲器

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

MCS-51有2個或3個16位定時器/計數器,以實現定時或計數功能,并以定時或計數的結果對單片機進行控制。(6)串行口全雙工UART的串行口,以實現單片機和其他數據設備之間的串行數據傳送。可作為全雙工UART異步通信收發器使用,又可作為同步移位器使用。(4)并行的I/O口

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

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

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

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

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

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

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

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

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

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

1、內部ROM讀取時,PSEN不動作;

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

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

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

1、接高電平時:

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

擴展外部ROM:當讀取內部程序存儲器超過0FFFH(8051)1FFFH(8052)時自動讀取外部ROM。

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

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

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

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

CPU在處理某事件

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

(2)中斷的優點

中斷技術不僅解決了快速主機與慢速I/O設備的數據傳送問題,而且還具有如下優點:

分時操作

CPU可以分時為多個I/O設備服務,提高了計算機的利用率;

實時響應

CPU能及時處理應用系統的隨機事件,系統的實時性大大增強;

可靠性高

CPU具有處理設備故障及掉電等突發性事件的能力,從而使系統可靠性提高。3.8.2

MCS-51中斷系統的結構

主程序繼續執行主程序響應中斷中斷返回中斷服務程序中斷結構示意圖主程序響應中斷中斷返回高級中斷繼續執行主程序響應中斷中斷返回低級中斷中斷嵌套示意圖中斷系統示意圖中斷系統示意圖中斷系統示意圖中斷系統示意圖3.8.3

MCS-51的中斷源

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

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

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

(1)中斷允許控制

3.8.4MCS-51中斷的控制

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

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

CPU同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。正在進行的中斷過程不能被新的同級或低優先級的中斷請求所中斷。正在進行的低優先級中斷服務,能被高優先級中斷請求所中斷。

為實現后兩條原則,中斷系統內部設有兩個用戶不能尋址的優先級狀態觸發器。一個表示正在響應高優先級的中斷,它將阻斷后來所有的中斷請求;另一個表示正在響應低優先級中斷,它將阻斷后來所有的低優先級中斷請求。3.8.5MCS-51單片機中斷處理過程

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

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

中斷響應時間中斷響應時間:指從查詢中斷請求標志位到轉向中斷服務入口地址所需的機器周期數。

若M1周期的S5P2前某中斷生效,在S5P2期間其中斷請求被鎖存到相應的標志位中;M2周期查詢中斷標志;M3和M4執行硬件LCALL指令;M5周期將進入中斷服務程序中斷響應時間范圍最快響應時間

以外部中斷的電平觸發為最快。

從查詢中斷請求信號到中斷服務程序需三個機器周期:

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

最長時間

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

2個周期執行當前指令(其中含有1個周期查詢)+4個周期乘除指令+2個周期長調用(2)中斷處理

中斷處理就是執行中斷服務程序。中斷服務程序從中斷入口地址開始執行,到返回指令RETI為止。執行硬件LCALL指令,進入中斷服務程序后,先保護現場,后執行中斷處理程序,在中斷返回前再恢復現場。

(3)中斷返回

中斷返回是指中斷服務完后,計算機返回原來斷開的位置(即斷點),繼續執行原來的程序。中斷返回由中斷返回指令RETI來實現。

RETI指令的具體功能:將中斷響應時壓入堆棧保存的斷點地址從棧頂彈出送回PC,CPU從原來中斷的地方繼續執行程序;將相應中斷優先級狀態觸發器清零。0,通知中斷系統,中斷服務程序已執行完畢。

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

對串口、T2中斷:CPU在響應中斷后,硬件不能自動清除中斷請求標志位TI、RI,須在中斷服務程序中用軟件將其清除;

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

ORG0013HLJMPINSE1[轉外部中斷1服務程序入口]

…………INSE0:PUSHPSW[XI0中斷服務程序]

PUSHACC…………POPACCPOPPSWRETI

INSE1:PUSHPSW[中斷服務程序]

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

AJMPINRETDV2:……[XI2中斷服務程序]

AJMPINRET……3.9MCS-51的定時/計數器

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

定時/計數器的工作原理

脈沖來源:

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

定時器模式

加1計數器是對內部機器周期計數,每過一個機器周期,計數器加1,直至計滿溢出為止。定時時間t=計數值N×機器周期Tcy

計數器模式

3.9.4定時/計數器的控制

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

工作方式說明00

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

控制寄存器TCON

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

T1計數溢出時由硬件自動置TF1為1。CPU響應

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

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

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

定時/計數器的工作方式

(1)方式0

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

(2)方式1

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

(3)方式2

方式2為自動重裝初值的8位計數方式計數個數與計數初值的關系為:

(4)方式3

方式3只適用于定時/計數器T0,定時器T1處于方式3時相當于TR1=0,停止計數

3.9.5定時/計數器用于外部中斷擴展

方法:定時/計數器設置為計數器方式

初值設為滿程

待擴展外部中斷源接至外部計數引腳

3.9.5定時/計數器用于外部中斷擴展

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

3.9.5定時/計數器用于外部中斷擴展

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

時或計數

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

Program:

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

MOVTH0,#0FFHSETBTR0;啟動T0工作

SETBEA;CPU開中斷

SETBET0;允許T0中斷

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

關鍵點:計算計數初值X晶振為12MHz,機器周期Tcy為?μS機器周期=6個狀態周期=12個時鐘周期N=t/Tcy=10×10-3/1×10-6=10000X=65536-10000=55536=D8F0H

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

MOVTL0,#0F0HSETBET0;T0開中斷

SETBEA;CPU開中斷

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

MOVTH0,#0D8H;重新裝入計數值

MOVTL0,#0F0HRETI;中斷返回

END4MCS-51指令系統

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

指令格式為:操作碼

[目的操作數][,源操作數4MCS-51指令系統

4.1尋址方式

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

寄存器間接尋址變址尋址

相對尋址

位尋址尋址方式中常用符號注釋Rn——當前選中的寄存器區中的8個工作寄存器R0~R7(n=0~7)Ri——當前選中的寄存器區中的2個工作寄存器(間接尋址寄存器)R0、R1direct—8位的內部數據存儲器單元中的地址#data——包含在指令中的8位常數#data16——包含在指令中的16位常數addr16——16位目的地址addr11——11位目的地址rel——8位帶符號的偏移字節,簡稱偏移量DPTR——數據指針,可用作16位地址寄存器bit——內部RAM或專用寄存器中的直接尋址位A——累加器B——專用寄存器,用于乘法和除法指令中C——進位標志或進位位,或布爾處理機中的累加器$——表示程序計數器的當前值。常出現在轉移指令中,如:SJMP$表示循環等待4.1.1立即數尋址

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

MOVA,30H;A←(30H)

30H為直接給出的內部RAM的地址4.1.3寄存器尋址

以通用寄存器的內容為操作數的尋址方式。通用寄存器指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寄存器間接尋址以寄存器中內容為地址,以該地址中內容為操作數的尋址方式。間接尋址的存儲器空間包括內部數據RAM和外部數據RAM。能用于寄存器間接尋址的寄存器有R0,R1,DPTR,SP。其中R0、R1必須是工作寄存器組中的寄存器。SP僅用于堆棧操作。例:MOV@R0,A;內部RAM(R0)←A

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

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

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

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

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

A←(A+PC)

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

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

又如:MOV32H,C;32H←進位位CORLC,32H;C←C∨32H

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

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

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

MOVX@Ri,A ;(Ri)←A

尋址范圍是片外256BRAM。

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

MOVX@DPTR,A;(DPTR)←A

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

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

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

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

如:在程序存儲器中,數據表格為:

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

執行程序

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

1002H:MOVDPTR,#7000H;

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

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

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

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

堆棧是在片內RAM中按“先進后出,后進先出”原則設置的專用存儲區。數據的進棧出棧由指針SP統一管理。堆棧的操作有如下兩條專用指令:

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習題:分別說出下列指令的尋址方式例:將片內RAM30H單元與40H單

元中的內容互換方法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算術運算類指令

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

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

功能:把源操作數指出的內容和進位標志位

CY都加到累加器A中,結果存在A中

例:設(A)=03CH,(R0)=0AAH,CY=1,執行指令ADDCA,R0后,A=6EH

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

標志位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中減去源操作數指出的內容和進位標志位CY的值,差存放在累加器A中

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

執行指令SUBBA,@R2后,A=74H

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

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

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

執行MULAB后,A=00H,B=12H

(5)除法指令

DIVAB;A÷B→商在A中,余數在B中

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

執行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功能:將操作數所指定的單元加1,其操作不影響PSW;若原單元內容為FFH,加1后溢出為00H,也不影響PSW。例:(30H)=22H,執行INC30H后,(30H)=23H

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

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

MOVA,R2 ;取第一個數的低8位

ADDA,R4 ;兩數的低8位相加

MOVR6,A ;保存和的低8位

MOVA,R1 ;取第一個數的高8位

SJMP$

ADDCA,R3;兩數的高8位相加,并把低8

位相加的進位位加進來

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

溫馨提示

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

評論

0/150

提交評論