版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單片機(jī)應(yīng)用技術(shù)1第1頁,課件共188頁,創(chuàng)作于2023年2月第一章單片機(jī)概述§1-1單片機(jī)的歷史及發(fā)展概述§1-2單片機(jī)的應(yīng)用§1-3單片機(jī)的開發(fā)和開發(fā)工具第2頁,課件共188頁,創(chuàng)作于2023年2月§1-1單片機(jī)的發(fā)展概況★單片機(jī)的概念單片機(jī):將微處理器(CPU)、存儲器、I/O接口電路和相應(yīng)實時控制件集成在一塊芯片上,稱其為單片微型計算機(jī),簡稱單片機(jī)。第3頁,課件共188頁,創(chuàng)作于2023年2月★單片機(jī)的發(fā)展歷史和發(fā)展趨勢4位單片機(jī)(1971-1974)低檔8位單片機(jī)
(1974-1978)高檔8位單片機(jī)
(1978-1982)
16位單片機(jī)
(1982-1990)新一代單片機(jī)(90年代以來)發(fā)展趨勢:單片機(jī)在集成度、功能、速度、可靠性、應(yīng)用領(lǐng)域等全方位向更高水平發(fā)展。第4頁,課件共188頁,創(chuàng)作于2023年2月§1-2單片機(jī)的應(yīng)用應(yīng)用特點體積小:基本功能部件滿足要求可靠性高:BUS大多在內(nèi)部;易采取電磁屏蔽功能強(qiáng):實時響應(yīng)速度;I/O直接操作使用方便:硬件設(shè)計簡單;提供開發(fā)工具資料性能價格比高:電路板小;接插件少易產(chǎn)品化:研制周期短第5頁,課件共188頁,創(chuàng)作于2023年2月機(jī)電一體化:電腦縫紉機(jī)智能儀表:測量儀實時控制:汽車家電:電冰箱、洗衣機(jī)、(MOTOROLA)網(wǎng)絡(luò)通信:通信協(xié)議集成其中計算機(jī)外設(shè):鍵盤、打印機(jī)保健產(chǎn)品:按摩器多機(jī)應(yīng)用應(yīng)用:量大面廣第6頁,課件共188頁,創(chuàng)作于2023年2月§1-3單片機(jī)的開發(fā)和開發(fā)工具一、單片機(jī)應(yīng)用系統(tǒng)開發(fā)條件單片機(jī)芯片開發(fā)工具資料手冊第7頁,課件共188頁,創(chuàng)作于2023年2月二、單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過程系統(tǒng)需求調(diào)查;可行性分析;系統(tǒng)方案設(shè)計;系統(tǒng)建造;系統(tǒng)調(diào)試;系統(tǒng)方案局部修改、再調(diào)試;生成正式產(chǎn)品。第8頁,課件共188頁,創(chuàng)作于2023年2月三、單片機(jī)應(yīng)用系統(tǒng)設(shè)計的基本原則與方法二、一般設(shè)計方法①確定系統(tǒng)功能與性能②確定系統(tǒng)基本結(jié)構(gòu)③硬件設(shè)計④軟件設(shè)計1)任務(wù)確定2)軟件結(jié)構(gòu)設(shè)計一、設(shè)計原則:
①可靠性高②性能價格比高③操作簡便④設(shè)計周期短第9頁,課件共188頁,創(chuàng)作于2023年2月四、單片機(jī)應(yīng)用系統(tǒng)的調(diào)試第10頁,課件共188頁,創(chuàng)作于2023年2月五、單片機(jī)開發(fā)系統(tǒng)一、通用型單片機(jī)開發(fā)系統(tǒng)二、軟件模擬開發(fā)系統(tǒng)第11頁,課件共188頁,創(chuàng)作于2023年2月第二章MCS-51單片機(jī)的結(jié)構(gòu)內(nèi)部結(jié)構(gòu)存儲器的配置I/O口的應(yīng)用功能時序及電路第12頁,課件共188頁,創(chuàng)作于2023年2月§2-1MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)(80C51)
存儲器I/O接口CPU總線控制器第13頁,課件共188頁,創(chuàng)作于2023年2月說明:中央處理機(jī)CPU(8位)存儲器:片內(nèi)數(shù)據(jù)存儲器RAM(128個字節(jié))
片內(nèi)程序存儲器EPROM(4KB)I/O接口:4個8位并行口(P0、P1、P2、P3口
1個串行I/O接口。
2個16位定時器/計數(shù)器。
5個中斷源二級優(yōu)先權(quán)的中斷系統(tǒng)第14頁,課件共188頁,創(chuàng)作于2023年2月MCS—51系列部分單片機(jī)配置一覽表
第15頁,課件共188頁,創(chuàng)作于2023年2月§2-2中央處理器CPU
中央處理器是單片機(jī)內(nèi)部的核心部件,它決定了單片機(jī)的主要功能特性。它由運(yùn)算部件和控制部件兩大部分組成。第16頁,課件共188頁,創(chuàng)作于2023年2月一、運(yùn)算器運(yùn)算部件是以算術(shù)邏輯單元ALU為核心,加上累加器A、寄存器B、暫存器TMP1和TMP2、程序狀態(tài)寄存器PSW及專門用于位操作的布爾處理機(jī)組成的,它能實現(xiàn)數(shù)據(jù)的算術(shù)邏輯運(yùn)算,位變量處理和數(shù)據(jù)傳送操作。第17頁,課件共188頁,創(chuàng)作于2023年2月用戶關(guān)心1.算術(shù)邏輯單元ALU2.累加器ACC:8位,專門存放操作數(shù)或運(yùn)算結(jié)果。
3.寄存器B:8位,專門為乘除法而設(shè)置的寄存器。4.程序狀態(tài)字PSW(ProgrameStateWord)P…OVRS0RS1F0ACCyD7D6D5D4D3D2D1D0PSW第18頁,課件共188頁,創(chuàng)作于2023年2月程序狀態(tài)字PSWCACF0RS1RS0OV---PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0進(jìn)位標(biāo)志位輔助進(jìn)位標(biāo)志位用戶自定義標(biāo)志位溢出標(biāo)志位奇偶標(biāo)志位寄存器區(qū)選擇3區(qū)112區(qū)011區(qū)100區(qū)00第19頁,課件共188頁,創(chuàng)作于2023年2月二、控制器控制部件是單片機(jī)的神經(jīng)中樞,它包括定時和控制電路、指令寄存器、譯碼器以及信息傳送控制等部件。
CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令存儲器,經(jīng)譯碼器譯碼后由定時與控制電路發(fā)出相應(yīng)的控制信號,完成指令所指定的操作。第20頁,課件共188頁,創(chuàng)作于2023年2月
MCS-51單片機(jī)的存儲器結(jié)構(gòu)為哈佛結(jié)構(gòu),既:程序存儲器和數(shù)據(jù)存儲器分開尋址。從物理結(jié)構(gòu)上可分為:片內(nèi)、片外程序存儲器
片內(nèi)、片外數(shù)據(jù)存儲器4個部分§2-3存儲器和特殊功能寄存器一、MCS—51單片機(jī)存儲器分類及配置第21頁,課件共188頁,創(chuàng)作于2023年2月從尋址空間分布可分為:程序存儲器內(nèi)部數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器3大部分從功能上可分為:程序存儲器
內(nèi)部數(shù)據(jù)存儲器特殊功能寄存器位地址空間外部數(shù)據(jù)存儲器5大部分。第22頁,課件共188頁,創(chuàng)作于2023年2月重點重點第23頁,課件共188頁,創(chuàng)作于2023年2月二、程序存儲器
計算機(jī)的工作是按照事先編制好的程序命令一條條循序執(zhí)行的,程序存儲器就是用來存放這些已編好的程序和表格常數(shù),它由只讀存儲器ROM或EPROM組成。程序運(yùn)行的入口地址MCS—51單片機(jī)程序存儲器中有復(fù)位和中斷源共7個固定的入口地址,用戶不能更改。第24頁,課件共188頁,創(chuàng)作于2023年2月MCS—51單片機(jī)復(fù)位、中斷入口地址0000H單元開始取指令來執(zhí)行程序。第25頁,課件共188頁,創(chuàng)作于2023年2月三、內(nèi)部數(shù)據(jù)存儲器
MCS—51系列單片機(jī)的內(nèi)部數(shù)據(jù)存儲器由讀寫存儲器RAM組成,用于存儲數(shù)據(jù)。內(nèi)部數(shù)據(jù)存儲器RAM塊共分為工作寄存器區(qū)、位尋址區(qū)和數(shù)據(jù)緩沖區(qū)3個部分。
第26頁,課件共188頁,創(chuàng)作于2023年2月1、工作寄存器和RAM地址對照表
第27頁,課件共188頁,創(chuàng)作于2023年2月2、位尋址區(qū)第28頁,課件共188頁,創(chuàng)作于2023年2月3、數(shù)據(jù)緩沖區(qū)
30H-7FH是數(shù)據(jù)緩沖區(qū),也即用戶RAM區(qū),共80個單元。用戶RAM區(qū)又可分為數(shù)據(jù)區(qū)和堆棧區(qū)
MCS—51單片機(jī)堆棧區(qū)不是固定的,且堆棧屬向上生長型,為了避開工作寄存器區(qū)和位尋址區(qū),一般設(shè)在30H以后的范圍內(nèi)。堆棧區(qū)數(shù)據(jù)區(qū)30H7FH第29頁,課件共188頁,創(chuàng)作于2023年2月四、特殊功能寄存器SFR
SFR又稱為專用寄存器。它專用于控制、管理單片機(jī)內(nèi)算術(shù)邏輯部件、并行I/O口鎖存器、串行口數(shù)據(jù)緩沖器、定時器/計數(shù)器、中斷系統(tǒng)等功能模塊的工作。
97H電源控制0B8H中斷優(yōu)先級控制99H串行數(shù)據(jù)緩沖器0B0H口398H串行控制0A0H口28BH定時器/計數(shù)器1(低字節(jié))90H口180H定時器/計數(shù)器1(高字節(jié))80H口08AH定時器/計數(shù)器0(低字節(jié))83H和82H數(shù)據(jù)指針8CH定時器/計數(shù)器0(高字節(jié))81H堆棧指針88H定時器/計數(shù)器控制0D0H程序狀態(tài)字89H定時器/計數(shù)器方式控制0F0HB寄存器0A8H允許中斷控制0E0H累加器地址名稱地址名稱IPP3P2P1P0DPTRSPPSWBACC標(biāo)識符PCONSBUFSCONTL1TH1TL0TH0TCONTMODIE標(biāo)識符第30頁,課件共188頁,創(chuàng)作于2023年2月說明:PC:程序地址寄存器(16位),始終指向下一條指令的內(nèi)存地址。訪問范圍:00000FFFFHACC:累加器(8位),專門存放操作數(shù)或運(yùn)算結(jié)果。B:8位,專門為乘除法而設(shè)置的寄存器。SP:堆棧指針(8位),始終指向堆棧的棧頂位置。遵循“先進(jìn)后出”的原則。DPTR:數(shù)據(jù)地址指針(16位),存放程序存儲器或外部數(shù)據(jù)存儲器的地址??煞諨PH和DPL兩個獨立8位寄存器。第31頁,課件共188頁,創(chuàng)作于2023年2月程序狀態(tài)字PSWCACF0RS1RS0OV---PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0進(jìn)位標(biāo)志位輔助進(jìn)位標(biāo)志位用戶自定義標(biāo)志位溢出標(biāo)志位奇偶標(biāo)志位寄存器區(qū)選擇3區(qū)112區(qū)011區(qū)100區(qū)00第32頁,課件共188頁,創(chuàng)作于2023年2月思考:訪問內(nèi)部數(shù)據(jù)存儲器與外部數(shù)據(jù)存儲器的區(qū)別?1、地址不同。訪問內(nèi)部數(shù)據(jù)存儲器MOV指令訪問外部數(shù)據(jù)存儲器MOVX指令內(nèi)部數(shù)據(jù)存儲器的地址為8位(00H-7FH)外部數(shù)據(jù)存儲器的地址為16位(0000H-FFFFH)2、訪問內(nèi)/外部存儲器使用的指令不同。第33頁,課件共188頁,創(chuàng)作于2023年2月思考:什么叫哈佛結(jié)構(gòu)?程序存儲器用來存放什么?程序運(yùn)行的入口地址是什么?內(nèi)部數(shù)據(jù)存儲器分為哪幾個部分?位尋址區(qū)有多少個位?堆棧指針SP是幾位寄存器?堆棧是向(大、?。┑刂飞L?第34頁,課件共188頁,創(chuàng)作于2023年2月§2-4輸入/輸出口(I/O口)四個(P0、P1、P2、P3)雙向8位I/O口,共32根I/O口線。每個I/O線均由鎖存器,輸出電路和輸入緩沖器組成。所以每個I/O既可作輸入又可作輸出;每一條口線可獨立用作輸入又可用作輸出。第35頁,課件共188頁,創(chuàng)作于2023年2月一、I/O口的應(yīng)用功能P0:系統(tǒng)擴(kuò)展
一般I/O口(輸出時,需接上拉電阻)P1:專供用戶使用的I/O口P2:
系統(tǒng)擴(kuò)展
通用I/O口P3:功能口,每位獨立定義
通用I/O口第36頁,課件共188頁,創(chuàng)作于2023年2月二、I/O的特點1.P0口:
P0口是一個三態(tài)雙向口,可作為地址/數(shù)據(jù)分時復(fù)用口,也可作為通用I/O接口。第37頁,課件共188頁,創(chuàng)作于2023年2月(1)地址/數(shù)據(jù)分時復(fù)用功能當(dāng)P0口作為地址/數(shù)據(jù)分時復(fù)用總線時,可分為兩種情況:一種是從P0口輸出地址或數(shù)據(jù),另一種是從P0口輸出數(shù)據(jù)?!?’第38頁,課件共188頁,創(chuàng)作于2023年2月(2)通用I/O接口功能在輸出數(shù)據(jù)時,由于T1截止,輸出級是漏極開路電路,要使"1"信號正常輸出,必須外接上拉電阻。R“1”“0”截止
P0口作為通用I/O口使用時,是準(zhǔn)雙向口。其特點是在輸入數(shù)據(jù)時,應(yīng)先把口置1(寫1),此時鎖存器的Q端為0,使輸出級的兩個場效應(yīng)管T1、T2均截止,引腳處于懸浮狀態(tài),才可作高阻輸入。第39頁,課件共188頁,創(chuàng)作于2023年2月2.P1口P1口只有一種通用輸入輸出I/O接口功能。
不需要外接電阻;但P1口是準(zhǔn)雙向口,其特點是在輸入數(shù)據(jù)時,應(yīng)先把口置1(寫1)使輸出級的場效應(yīng)管V1截止,引腳處于懸浮狀態(tài),才可作高阻輸入。第40頁,課件共188頁,創(chuàng)作于2023年2月3、P2口
P2口也是一準(zhǔn)雙向口。它具有通用I/O接口或高8位地址總線輸出兩種功能。當(dāng)作為準(zhǔn)雙向通用I/O接口使用時,其工作原理與P1相同。第41頁,課件共188頁,創(chuàng)作于2023年2月4、P3口當(dāng)P3口作為通用I/O接口時,第2功能輸出線為高電平,使與非門3的輸出取決于口鎖存器的狀態(tài)。在這種情況下,P3口仍是1個準(zhǔn)雙向口,它的工作方式、負(fù)載能力均與P1、P2口相同。當(dāng)P3口作為第2功能使用時,其鎖存器Q端必須為高電平,否則V1管導(dǎo)通,引腳被箝位在低電平,無法輸入或輸出第2功能信號。當(dāng)Q端為高電平時,P3口的口線狀態(tài)就取決于第2功能輸出線的狀態(tài)。
第42頁,課件共188頁,創(chuàng)作于2023年2月
P3口第二功能表第43頁,課件共188頁,創(chuàng)作于2023年2月§2-5外部引腳說明1.主電源引腳
VCC:接+5VVSS:接地2.外接晶體引腳
XTAL1、XTAL23.輸入/輸出引腳
P0-P3口4.控制線(1)ALE/PROG:地址鎖存有效信號輸出(2)PSEN:片外程序存儲器讀選通信號(3)RST/VPD:RST即為RESET,VPD為備用電源(4)EA/VPP(31腳):片外程序存儲器選用端第44頁,課件共188頁,創(chuàng)作于2023年2月§2-6單片機(jī)工作的基本時序1.機(jī)器周期和指令周期(1)振蕩周期:也稱時鐘周期,是指為單片機(jī)提供時鐘脈沖信號的振蕩源的周期。(2)狀態(tài)周期:每個狀態(tài)周期為時鐘周期的2倍,也稱S狀態(tài),是振蕩周期經(jīng)二分頻后得到的。(3)機(jī)器周期:一個機(jī)器周期包含6個狀態(tài)周期S1~S6,也就是12個時鐘周期。在一個機(jī)器周期內(nèi),CPU可以完成一個獨立的操作。(4)指令周期:它是指CPU完成一條操作所需的全部時間。每條指令執(zhí)行時間都是有一個或幾個機(jī)器周期組成。MCS-51系統(tǒng)中,有單周期指令、雙周期指令和四周期指令。×2×6×1、2、4第45頁,課件共188頁,創(chuàng)作于2023年2月思考:外接晶振為12MHz時,MCS—51單片機(jī)的4個時間周期的具體值為多少?答:振蕩周期=1/12μs;狀態(tài)周期=1/6μs;
機(jī)器周期=1μs;
指令周期=1-4μs。第46頁,課件共188頁,創(chuàng)作于2023年2月2.MCS-51的典型時序(1)單周期指令時序第47頁,課件共188頁,創(chuàng)作于2023年2月(2)雙周期指令時序第48頁,課件共188頁,創(chuàng)作于2023年2月訪問外部RAM的雙指令周期外部數(shù)據(jù)存儲器的尋址和數(shù)據(jù)選通第49頁,課件共188頁,創(chuàng)作于2023年2月3.復(fù)位電路
(b)開關(guān)復(fù)位電路
(a)上電復(fù)位電路第50頁,課件共188頁,創(chuàng)作于2023年2月復(fù)位后內(nèi)部寄存器狀態(tài)
在RST/VPD端持續(xù)給出2個機(jī)器周期的高電平就可以完成復(fù)位操作。堆棧指針SP=07HP0-P3=FFH其余寄存器均為0第51頁,課件共188頁,創(chuàng)作于2023年2月§2-7定時器/計數(shù)器一、定時器/計數(shù)器T0、T1的結(jié)構(gòu)T1T0T0、T1的控制第52頁,課件共188頁,創(chuàng)作于2023年2月說明:兩個16位定時器/計數(shù)器T0、T1定時器/計數(shù)器的工作方式及控制由TMOD寄存器和TCON寄存器完成。第53頁,課件共188頁,創(chuàng)作于2023年2月二、基本功能1)定時功能時,每個機(jī)器周期定時器加1。2)計數(shù)功能時,在外部事件相應(yīng)輸入腳(T0和T1)產(chǎn)生負(fù)跳變,計數(shù)器加1。K1K2可預(yù)置初值的加法計數(shù)器中斷請求功能選擇啟動控制內(nèi)部時鐘脈沖(定時)TX外部輸入脈沖(計數(shù))溢出信號計數(shù)脈沖計數(shù)初值第54頁,課件共188頁,創(chuàng)作于2023年2月三、方式和控制寄存器1、定時器/計數(shù)器的方式寄存器TMOD●C/T=1,為計數(shù)器方式;C/T=0,為定時器方式。●GATE=1,外部啟動定時器/計數(shù)器;
GATE=0,程序啟動定時器/計數(shù)器。
第55頁,課件共188頁,創(chuàng)作于2023年2月●
M1M0工作方式控制位T0分成兩個獨立的8位計數(shù)器,T1在方式3時停止工作31
1自動重裝入初值的8位計數(shù)器21016位定時器/計數(shù)器10
113位定時器(TH的8位和TL的低5位)000說明方式M1M0第56頁,課件共188頁,創(chuàng)作于2023年2月2、定時器/計數(shù)器控制寄存器TCONIT0IE0IT1IE1TR0TF0TR1TF1與中斷有關(guān)T0運(yùn)行控制位:“1”啟動T0;“0”關(guān)閉T0。由軟件進(jìn)行設(shè)置。T0定時器/計數(shù)器溢出中斷標(biāo)志位。當(dāng)T0計數(shù)溢出時,由硬件置位,在允許中斷的情況下,向CPU發(fā)出中斷請求信號,CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時,由硬件自動將該位清零。第57頁,課件共188頁,創(chuàng)作于2023年2月四、計算時間常數(shù)X(初值)加法計數(shù)器是計滿溢出時才申請中斷,所以在給計數(shù)器賦初值時,不能直接輸入所需的計數(shù)值,而應(yīng)輸入的是計數(shù)器計數(shù)的最大值與這一計數(shù)值的差值。初值X的計算方法:
計數(shù)功能:X=2?-計數(shù)值定時功能:X=2?-定時時間/T
其中:方式0:n=13;方式1:n=16;方式2、3n=8T=12÷晶振頻率=機(jī)器周期
第58頁,課件共188頁,創(chuàng)作于2023年2月例:計算定時1ms對應(yīng)的初值,設(shè)單片機(jī)晶振頻率為12MHz,方式1。解X=M-定時時間/T機(jī)器周期=12÷12MHz=1μs所以:X=216-1ms/1μs=FC17H第59頁,課件共188頁,創(chuàng)作于2023年2月例:若晶振頻率為6MHz,試計算MCS-51單片機(jī)定時/計數(shù)器的最小定時時間和最大定時時間。解:先確定機(jī)器周期:機(jī)器周期T=12÷6MHz=2μs①計算最小定時時間:對于定時器的幾種工作方式來說,最小定時時間都是一樣的,即:X=M-定時時間/
Tmin=(M-X)T=1×2μs=2μs
②計算最大定時時間:在方式1下的定時時間最長,則最大定時時間為
Tmax=(M-X)T=(216-0)×2μs=131ms第60頁,課件共188頁,創(chuàng)作于2023年2月五、定時器/計數(shù)器的初始化定時/計數(shù)器在使用之前需要進(jìn)行初始化。初始化編程包括:
①要能正確寫入控制字;
②能進(jìn)行計數(shù)初值的計算。一般情況下,包括以下幾個步驟:(1)確定工作方式,即對TMOD寄存器進(jìn)行賦值。(2)計算計數(shù)初值,并寫入寄存器TH0、TL0或TH1、TL1中。(3)根據(jù)需要,置位ETx允許T/C中斷。(4)置位EA使CPU開中斷(需要時)。(5)置位TRx啟動計數(shù)。第61頁,課件共188頁,創(chuàng)作于2023年2月思考題1、MCS-51單片機(jī)有幾個定時/計數(shù)器?2、定時/計數(shù)器的核心是1個(加1、減1)計數(shù)器,它的輸入脈沖有兩個來源:一個是(內(nèi)部時鐘脈沖(定時)),另一個是(外部部時鐘脈沖(計數(shù)))。3、定時/計數(shù)器有幾種工作方式?如何選擇和設(shè)定?4種4、MCS-51單片機(jī)定時/計數(shù)器在使用之前需要進(jìn)行初始化,在編程時主要注意兩點:第一(正確寫入控制字);第二(計數(shù)初值的計算)。第62頁,課件共188頁,創(chuàng)作于2023年2月中斷的定義計算機(jī)在程序執(zhí)行過程中,當(dāng)出現(xiàn)硬件或軟件請求時,處理器暫時停止正在執(zhí)行的程序,轉(zhuǎn)去對請求進(jìn)行處理,處理完后,回到程序斷點位置繼續(xù)執(zhí)行。斷點主程序中斷服務(wù)程序有中斷請求對外設(shè)進(jìn)行處理繼續(xù)執(zhí)行返回斷點中斷源:任何能夠引發(fā)中斷事件的來源§2-8MCS-51單片機(jī)的中斷系統(tǒng)第63頁,課件共188頁,創(chuàng)作于2023年2月一、MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)IEIPTCON的高4位SCON的低2位采用中斷技術(shù)的優(yōu)點
(1)可方便地處理隨機(jī)事件(實時處理、故障處理)。
(2)提高處理器的使用效率和提高計算機(jī)的工作速度。
第64頁,課件共188頁,創(chuàng)作于2023年2月1、5個中斷源2個外部中斷源信號2個定時器T0、T1溢出中斷請求1個串行口數(shù)據(jù)發(fā)送、接收結(jié)束中斷請求第65頁,課件共188頁,創(chuàng)作于2023年2月2、中斷請求寄存器(TCON、SCON中的部分標(biāo)志)中斷請求標(biāo)志位:TF1、TF0、IE1、IE0、RI、TI登記各中斷源請求信號:=1,有中斷請求;=0,無中斷請求。CPU響應(yīng)中斷后,TI,RI標(biāo)志必須軟件清零,其余中斷標(biāo)志自動清零。外部中斷觸發(fā)方式選擇位:IT0、IT1 =1:負(fù)邊沿觸發(fā)中斷請求; =0:低電平觸發(fā)中斷請求。第66頁,課件共188頁,創(chuàng)作于2023年2月3、中斷允許控制(IE)EX0ET0EX1ET1ESXXEA
(MSB)(LSB)中斷允許控制位:=1開中斷;=0關(guān)中斷??傇试S開關(guān)源允許開關(guān)例:允許CPU響應(yīng)INT0的中斷請求
SETB EX0 SETB EA 第67頁,課件共188頁,創(chuàng)作于2023年2月4、2級中斷的優(yōu)先級控制(IP)對于每1個中斷源,均可通過對IP的設(shè)置來確定其優(yōu)先等級。置1為高優(yōu)先級,清0為低優(yōu)先級。PX0PT0PX1PT1PSXXX(MSB)(LSB)同級的中斷優(yōu)先級順序為:外部中斷0→T0中斷→外部中斷1→T1中斷→串行口中斷高級
低級
第68頁,課件共188頁,創(chuàng)作于2023年2月例如,某軟件中對寄存器IE、IP設(shè)置如下:MOVIE,#8FHMOVIP,#06H
則此時該系統(tǒng)中的中斷優(yōu)先次序為什么?
答:1、除串口中斷禁止外,其余均允許。
1111ESXX1中斷允許控制位:=1開中斷;=0關(guān)中斷。
2、允許中斷源的中斷優(yōu)先次序為:
T0
→
INT1
→
INT0→
T1
高級別低級別01100XXXPX0PT0PX1PT1PSXXX第69頁,課件共188頁,創(chuàng)作于2023年2月二、中斷響應(yīng)的條件、過程1.中斷響應(yīng)的條件單片機(jī)響應(yīng)中斷的條件為中斷源有請求(中斷允許寄存器IE相應(yīng)位置1),且CPU開中斷(即EA=1)。2.中斷響應(yīng)過程單片機(jī)一旦響應(yīng)中斷,自動轉(zhuǎn)到各中斷源對應(yīng)的中斷服務(wù)程序的入口地址執(zhí)行中斷服務(wù)程序。第70頁,課件共188頁,創(chuàng)作于2023年2月各中斷源中斷服務(wù)程序的入口地址中斷源入口地址外部中斷00003HT0中斷000BH外部中斷10013HT1中斷001BH串行口中斷0023H3、中斷返回
中斷返回指令:RETI=RET指令+通知CPU中斷服務(wù)已結(jié)束第71頁,課件共188頁,創(chuàng)作于2023年2月思考題1、MCS-51單片機(jī)的中斷源有幾個?分別是什么?各中斷源所對應(yīng)的中斷服務(wù)程序的入口地址是什么?2、寄存器IE、IP和TCON的全稱是什么?作用是什么?第72頁,課件共188頁,創(chuàng)作于2023年2月§2-9MCS-51單片機(jī)的串行口一、MCS-51串行口的結(jié)構(gòu)發(fā)送器接收器第73頁,課件共188頁,創(chuàng)作于2023年2月說明:1、MCS-51單片機(jī)內(nèi)部有1個功能很強(qiáng)的全雙工串行口。2、發(fā)送器:并串?dāng)?shù)據(jù)格式轉(zhuǎn)換,添加標(biāo)識位和校驗位,一幀數(shù)據(jù)發(fā)送結(jié)束,設(shè)置發(fā)送結(jié)束標(biāo)志,申請中斷。3、接收器:串并數(shù)據(jù)格式轉(zhuǎn)換,刪除標(biāo)識位和校驗位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束標(biāo)志,申請中斷。4、控制器:接收編程命令和控制參數(shù),設(shè)置工作方式:同步/異步、字符格式、波特率、校驗方式、數(shù)據(jù)位與同步時鐘比例等。5、串行口數(shù)據(jù)緩沖器SBUF
SBUF是兩個在物理上獨立的接收、發(fā)送緩沖器,可同時發(fā)送、接收數(shù)據(jù)。第74頁,課件共188頁,創(chuàng)作于2023年2月二、串行口控制1、串行口控制寄存器SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D0
SM0、SM1:串行口工作方式選擇位SM2:多機(jī)控制位,用于多機(jī)通訊REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收TB8:發(fā)送的第9位數(shù)據(jù)位,可用作校驗位和地址/數(shù)據(jù)標(biāo)識位RB8:接收的第9位數(shù)據(jù)位或停止位TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,必須軟件清零第75頁,課件共188頁,創(chuàng)作于2023年2月2、電源控制寄存器PCONSMODGF1GF0PDIDLD7D6D5D4D3D2D1D0
PCON的最高位SMOD是串行口波特率系數(shù)控制位。SMOD=1時,波特率增大一倍。其余各位與串行口無關(guān)。第76頁,課件共188頁,創(chuàng)作于2023年2月三、串行接口的工作方式第77頁,課件共188頁,創(chuàng)作于2023年2月1、方式0為同步移位寄存器方式,用于擴(kuò)展并行I/O接口,波特率是固定的(1)方式0輸出8051第78頁,課件共188頁,創(chuàng)作于2023年2月(1)方式0輸入第79頁,課件共188頁,創(chuàng)作于2023年2月2、方式1、2、3共性問題寫入SBUF采樣(a)發(fā)送時序圖TXD數(shù)據(jù)輸出TID0D1D2D3D4D5D6D7停止位起始位RXD輸入數(shù)據(jù)(b)接收時序圖D0D1D2D3D4D5D6D7停止位起始位RI檢測負(fù)跳變①RXD:接收數(shù)據(jù)端。TXD:發(fā)送數(shù)據(jù)端。②發(fā)送:寫入SBUF,同時啟動發(fā)送,一幀發(fā)送結(jié)束,TI=1。③接收:REN=1,允許接收。將接收數(shù)據(jù)裝入SBUF,并使RI=1。第80頁,課件共188頁,創(chuàng)作于2023年2月3、方式1、2、3差別數(shù)據(jù)位不同。波特率可變、固定。方式1、3波特率:B=(2SMOD/32)×T1溢出率。方式2波特率:
B=(2SMOD
/64)×fosc第81頁,課件共188頁,創(chuàng)作于2023年2月4、波特率的選擇第82頁,課件共188頁,創(chuàng)作于2023年2月思考題:51系列單片機(jī)主要有哪些部分組成?各自作用是什么?第83頁,課件共188頁,創(chuàng)作于2023年2月第3章MCS-51單片機(jī)指令系統(tǒng)★尋址方式★指令系統(tǒng)第84頁,課件共188頁,創(chuàng)作于2023年2月§3-1MCS-51指令格式及尋址方式
一、匯編語言指令格式1.標(biāo)號:指令的符號地址2.操作碼:指明指令功能。3.操作數(shù):指令操作對象(立即數(shù)、寄存器、存儲器)4.注釋行:說明指令在程序中的作用。操作碼和操作數(shù)是指令主體。標(biāo)號:操作碼操作數(shù)1,操作數(shù)2
;注釋第85頁,課件共188頁,創(chuàng)作于2023年2月二、尋址方式
尋址方式,就是尋找操作數(shù)地址的方式。尋址方式的多少是反映指令系統(tǒng)優(yōu)劣的主要指標(biāo)之一。在MCS-51單片機(jī)指令系統(tǒng)中,有以下7種尋址方式:(1)立即尋址;(2)直接尋址;(3)寄存器尋址;(4)寄存器間接尋址;(5)基址寄存器加變址寄存器間接尋址;(6)相對尋址;(7)位尋址。第86頁,課件共188頁,創(chuàng)作于2023年2月1、立即尋址
立即尋址方式是指操作數(shù)包含在指令字節(jié)中。跟在指令操作碼后面的數(shù)就是參加運(yùn)算的數(shù),該操作數(shù)稱為立即數(shù)。立即數(shù)有一字節(jié)和二字節(jié)兩種。例如:
MOVA,#3AH;將立即數(shù)3AH傳送到累加器A中MOVDPTR,#0DFFFH“#”表示為立即數(shù)第87頁,課件共188頁,創(chuàng)作于2023年2月2、直接尋址
指令中直接給出操作數(shù)所在的存儲器地址,以供取數(shù)或存數(shù)的尋址方式稱為直接尋址。例:MOVA,40H;把片內(nèi)RAM地址為40H單元的內(nèi)容送到A中。直接尋址方式中可以訪問3種存儲器空間:(1)內(nèi)部數(shù)據(jù)存儲器的低128個字節(jié)單元(00H~7FH);(2)特殊功能寄存器;(3)位地址空間。
第88頁,課件共188頁,創(chuàng)作于2023年2月3、寄存器尋址
在該尋址方式中,參加操作的數(shù)存放在寄存器里。寄存器包括8個工作寄存器R0~R7,累加器A,寄存器B、數(shù)據(jù)指針DPTR和布爾處理器的位累加器C。例:MOVA,R0;把寄存器R0中的內(nèi)容傳送到累加器A中第89頁,課件共188頁,創(chuàng)作于2023年2月4、寄存器間接尋址在這種尋址方式中,寄存器的內(nèi)容為操作數(shù)的地址。例:MOV
A,@R0
;將以工作寄存器R0中的內(nèi)容為地址的片內(nèi)RAM單元的數(shù)據(jù)傳送到A中去注意:寄存器間接尋址只能使用寄存器R0、R1作為地址指針,尋址內(nèi)部RAM區(qū)的數(shù)據(jù)。@為間址符第90頁,課件共188頁,創(chuàng)作于2023年2月5、基址加變址尋址這種尋址方式用于訪問程序存儲器中的數(shù)據(jù)表格,它以基址寄存器DPTR或PC的內(nèi)容為基本地址,加上變址寄存器A的內(nèi)容作為操作數(shù)的地址。例如:MOVCA,@DPTR+A
第91頁,課件共188頁,創(chuàng)作于2023年2月6、相對尋址
相對尋址是以當(dāng)前程序計數(shù)器PC值加上指令規(guī)定的偏移量rel,而構(gòu)成實際操作數(shù)地址的尋址方法。它用于訪問程序存儲器,常出現(xiàn)在相對轉(zhuǎn)移指令中。
目的地址=當(dāng)前PC值+rel第92頁,課件共188頁,創(chuàng)作于2023年2月7、位尋址
位尋址是在位操作指令中直接給出位操作數(shù)的地址,可以對片內(nèi)RAM中的128位和特殊功能寄存器SFR中的93位進(jìn)行尋址。例如:SETBPSW.3;(PSW.3)←1比較: MOV C,40H ;C←40H MOV A,40H ;A←40H位地址字節(jié)地址第93頁,課件共188頁,創(chuàng)作于2023年2月7種尋址方式及使用空間第94頁,課件共188頁,創(chuàng)作于2023年2月三、指令分類按指令的功能,MCS-51指令系統(tǒng)可分為下列5類,共計111條指令:(1)數(shù)據(jù)傳送;(2)算術(shù)運(yùn)算;(3)邏輯運(yùn)算;(4)位操作;(5)控制轉(zhuǎn)移。第95頁,課件共188頁,創(chuàng)作于2023年2月四、符號的約定意義Rn:當(dāng)前選定的寄存器區(qū)中的8個工作寄存器R0-R7,n=0-7。@Ri:當(dāng)前選定的寄存器區(qū)中的2個寄存器R0、R1,i=0、1。Direct:8位內(nèi)部RAM單元的地址(00H-7FH)或特殊功能寄存器地址。#data:指令中的8位常數(shù)。#data16:指令中的16位常數(shù)。Addr16:16位的目的地址,用于LJMP,LCALL指令。Addr11:11位的目的地址,用于AJMP,ACALL指令。Rel:8位帶符號的偏移量字節(jié),用于所有條件轉(zhuǎn)移指令中。Bit:部數(shù)據(jù)RAM或特殊功能寄存器中的可直接尋址位。第96頁,課件共188頁,創(chuàng)作于2023年2月§3-2數(shù)據(jù)傳送類指令
傳送類指令不影響PSW(除P位)。第97頁,課件共188頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送類指令一覽表第98頁,課件共188頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送類指令一覽表第99頁,課件共188頁,創(chuàng)作于2023年2月例:順序執(zhí)行下列指令序列,求每一步執(zhí)行結(jié)果。MOVA,#30H MOV4FH,A MOVR0,#20H MOV@R0,4FH MOV21H,20H;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30H解2:
MOVR0,#60H MOVA,@R0解1:MOVA,60H例:用兩種尋址方式將片內(nèi)RAM60H單元的數(shù)據(jù)傳送給累加器A。第100頁,課件共188頁,創(chuàng)作于2023年2月
例:若在外部程序存儲器中TAB單元開始依次存放0-9的平方值,數(shù)據(jù)指針DPTR=3A00H,用查表指令取得2003H單元的數(shù)據(jù)后,要求保持DPTR中的內(nèi)容不變。
ORG 2000HTAB: DB00,01,04,09,…,81H;平方表
MOVA,#03H ;A←03HPUSHDPH ;保護(hù)DPTR高8位入棧PUSHDPL ;保護(hù)DPTR低8位入棧MOVDPTR,#TAB ;確定表首地址(基地址)MOVCA,@A+DPTR ;A←(TAB+03H)POPDPL ;彈出DPTR低8位POPDPH ;彈出DPTR高8位執(zhí)行結(jié)果:A=09H,DPTR=3A00H。第101頁,課件共188頁,創(chuàng)作于2023年2月例:內(nèi)部RAM2AH和2BH單元中存放的ASCII碼,轉(zhuǎn)換為壓縮的BCD碼存放在20H單元中。
MOV A,#0 ;A=0MOV R1,#2BH ;R1=2BHMOV R0,#2AH ;R0=2AHXCHD A,@R1 ;A=05HSWAPA ;A=50HXCHD A,@R0 ;A=58HXCH A,20H;(20H)=58H2BH35H2AH38H……XX20HXX58H第102頁,課件共188頁,創(chuàng)作于2023年2月§3-3算術(shù)運(yùn)算類指令
一、加、減法指令目的操作數(shù)源操作數(shù)第103頁,課件共188頁,創(chuàng)作于2023年2月影響相應(yīng)標(biāo)志位第104頁,課件共188頁,創(chuàng)作于2023年2月例:設(shè)雙字節(jié)數(shù)X存在片內(nèi)RAM41H、40H單元,Y存在42H、43H單元,編程求Z=X+Y,并存入片內(nèi)RAM單元44H、45H、46H。ADDS:MOV A,40H ADD A,42H MOV44H,A MOVA,41H DDCA,43HMOV45H,A MOVA,#0 ADDCA,#0 MOV46H,A RET;取被加數(shù)低字節(jié);加上加數(shù)低字節(jié);保存和的低字節(jié);取被加數(shù)高字節(jié);加上加數(shù)高字節(jié);保存和的高字節(jié);求高字節(jié)進(jìn)位;子程序結(jié)束第105頁,課件共188頁,創(chuàng)作于2023年2月二、十進(jìn)制調(diào)整指令和乘、除法指令DAA;對A寄存器加6調(diào)整例:MOVA,#36HADDA,#45HDAA00110110360100010145011110117B0000011006++1000000181DAA加6調(diào)整第106頁,課件共188頁,創(chuàng)作于2023年2月MULAB;BA=A×B
若乘積大于FFH,則溢出標(biāo)志OV置1,否則OV清零。乘法指令執(zhí)行后進(jìn)位標(biāo)志CY總是零,即CY=0。DIVAB;A←A÷B之商,B←A÷B之余數(shù)進(jìn)位標(biāo)志位CY和溢出標(biāo)志位OV均被清零。若B中的內(nèi)容為0時,溢出標(biāo)志OV被置1,即OV=1,而CY仍為0。第107頁,課件共188頁,創(chuàng)作于2023年2月例:利用除法指令把累加器A中的8位二進(jìn)制數(shù)轉(zhuǎn)換為BCD數(shù),并以壓縮形式存放在內(nèi)部RAM區(qū)M1、M2單元中。MOVB,#64H;除數(shù)100送BDIVAB
;得百位數(shù)MOVM1,A ;百位數(shù)存于M1中MOVA,#0AH;取除數(shù)10XCHA,B;上述余數(shù)與除數(shù)交換DIVAB ;得十位數(shù)和個位數(shù)SWAPA ;十位數(shù)存于A的高4位ADDA,B ;組成壓縮BCD數(shù)MOVM2,A ;十、個位壓縮BCD數(shù)存M2
若上述程序執(zhí)行前:A=A8H(168),則執(zhí)行后:(M1)=01H,(M2)=68H。第108頁,課件共188頁,創(chuàng)作于2023年2月§3-4邏輯運(yùn)算及移位類指令目的操作數(shù)源操作數(shù)目的操作數(shù)源操作數(shù)第109頁,課件共188頁,創(chuàng)作于2023年2月邏輯操作指令表第110頁,課件共188頁,創(chuàng)作于2023年2月第111頁,課件共188頁,創(chuàng)作于2023年2月例:A=01××××××B,×表示隨機(jī)狀態(tài),為1或0,執(zhí)行下述一組指令執(zhí)行后A的值如何?
XRLA,#0C0H ;將累加器A的內(nèi)容D7、D6取反
ORLA,#03H ;將累加器A的內(nèi)容D1、D0置1
ANLA,#0E7H ;將累加器A的內(nèi)容D4、D3清0
解:執(zhí)行上述指令后,A=10×00×11B。思考:如何將累加器A中的數(shù)據(jù)高4位清0,低位不變?
如何將寄存器R2中的數(shù)據(jù)奇數(shù)位取反,偶數(shù)位不變?第112頁,課件共188頁,創(chuàng)作于2023年2月例:設(shè)A=43H,CY=0,則執(zhí)行指令:RLA;A=86H,CY=0RLCA;A=0CH,CY=1RRA;A=06H,CY=1
RRCA;A=83H,CY=0
第113頁,課件共188頁,創(chuàng)作于2023年2月§3-5控制轉(zhuǎn)移類指令一、無條件轉(zhuǎn)移指令第114頁,課件共188頁,創(chuàng)作于2023年2月二、條件轉(zhuǎn)移指令第115頁,課件共188頁,創(chuàng)作于2023年2月例:將片外RAM首地址為DATA1的一個數(shù)據(jù)塊傳送到片內(nèi)RAM首地址為DATA2的存儲區(qū)中,當(dāng)數(shù)據(jù)塊中有0時停止傳送 MOVR0,#DATA1;R0作為外部數(shù)據(jù)塊的地址指針 MOVR1,#DATA2 ;R1作為內(nèi)部數(shù)據(jù)塊的地址指針LOOP:MOVXA,@R0;取外部RAM數(shù)據(jù)送入A JZHERE;數(shù)據(jù)為零則終止傳送 MOV@R1,A ;數(shù)據(jù)傳送至內(nèi)部RAM單元INCR0 ;修改指針,指向下一數(shù)據(jù)地址INCR1SJMPLOOP;循環(huán)取數(shù)HERE:MOVR7,#0 ……第116頁,課件共188頁,創(chuàng)作于2023年2月例:當(dāng)從P1口輸入數(shù)據(jù)為01H時,程序繼續(xù)執(zhí)行,否則等待,直到P1口出現(xiàn)01H。
MOVA,#01H ;立即數(shù)01H送AWAIT:CJNEA,P1,WAIT
;P1≠01H,則等待
MOVR0,#2…….第117頁,課件共188頁,創(chuàng)作于2023年2月例:將內(nèi)部RAM中從DATA單元開始的10個無符號數(shù)相加,相加結(jié)果送SUM單元保存。設(shè)相加結(jié)果不超過8位二進(jìn)制數(shù),則相應(yīng)的程序如下:解: MOVR0,#0AH;給R0置計數(shù)器初值 MOVR1,#DATA;數(shù)據(jù)塊首址送R1 CLRA;A清零LOOP: ADDA,@R1;加一個數(shù)INCR1;修改地址,指向下一個數(shù)
DJNZR0,LOOP;R0減1,不為零循環(huán)MOVSUM,A;存10個數(shù)相加和第118頁,課件共188頁,創(chuàng)作于2023年2月三、子程序調(diào)用與返回指令第119頁,課件共188頁,創(chuàng)作于2023年2月(1)RET指令必須作子程序的最后一條指令; RETI指令必須作中斷服務(wù)程序的最后一條指令。(2)RET指令只能恢復(fù)返回地址 RETI指令除恢復(fù)斷點地址外,還恢復(fù)CPU響應(yīng)中斷時硬件自動保護(hù)的現(xiàn)場信息。執(zhí)行RETI指令后,將清除中斷響應(yīng)時所置位的優(yōu)先級狀態(tài)觸發(fā)器,使得已申請的同級或低級中斷申請可以響應(yīng)。第120頁,課件共188頁,創(chuàng)作于2023年2月§3-6布爾操作類指令
MCS-51在硬件上設(shè)置了一個獨立的布爾處理器也稱為位處理機(jī)有自己相應(yīng)的累加器,即進(jìn)位標(biāo)志位CY。有自己的存儲器空間,即內(nèi)部RAM的位尋址區(qū)的128位和特殊功能寄存器SFR中的可位尋址的寄存器中93位。第121頁,課件共188頁,創(chuàng)作于2023年2月第122頁,課件共188頁,創(chuàng)作于2023年2月例:將位地址20H的一位數(shù)傳送到位地址30H中: MOVC,20H MOV30H,CXX第123頁,課件共188頁,創(chuàng)作于2023年2月例:使儀表蜂鳴器間斷發(fā)聲的程序。N1: CLR P2.3 ;BEEP響 CALL DELAY1 ;延時 SETB P2.3 ;BEEP不響 CALL DELAY2 ;延時 SJMP N1第124頁,課件共188頁,創(chuàng)作于2023年2月影響標(biāo)志位的指令第125頁,課件共188頁,創(chuàng)作于2023年2月第4章MCS-51匯編語言程序設(shè)計偽指令匯編語言程序設(shè)計第126頁,課件共188頁,創(chuàng)作于2023年2月§4.1偽指令一、匯編起始指令ORG指令格式:ORGnn功能:指明后面的程序或數(shù)據(jù)塊的起始地址。二、等值指令EQU指令格式:字符名稱EQU數(shù)字或匯編符號
功能:使指令中的字符名稱等價于給定的數(shù)字或匯編符號。三、定義字節(jié)指令DB指令格式:標(biāo)號:DB8位二進(jìn)制數(shù)表功能:把8位二進(jìn)制數(shù)表依次存入從標(biāo)號開始的連續(xù)的存儲單元中。四、匯編結(jié)束指令END指令格式:標(biāo)號:END地址或標(biāo)號第127頁,課件共188頁,創(chuàng)作于2023年2月例:
ORG0000HSJMP MAIN
ORG0030H
MAIN:MOVSP,#60HMOVR0,#2FHMOVR2,#0FFHORG偽指令說明其后面程序的目標(biāo)代碼在存儲器中存放的起始地址。0000H0030H程序存儲器X5X6X3X4…………X1X2第128頁,課件共188頁,創(chuàng)作于2023年2月§4-2匯編語言程序設(shè)計
一、簡單程序設(shè)計例:設(shè)內(nèi)部RAM40H,41H單元中分別存放著8位二進(jìn)制數(shù),要求取出兩個單元中的低半字節(jié),并成一個字節(jié)后,存入50H單元中。
MOVR1,#40H;設(shè)置R1為數(shù)據(jù)指針MOVA,@R1;取出第一個單元中的內(nèi)容ANLA,#0FH;取第一個數(shù)的低半字節(jié)SWAPA ;移至高半字節(jié)INCR1 ;修改數(shù)據(jù)指針XCHDA,@R1 ;取第二個單元低半字節(jié)SWAPAMOV50H,A ;存放結(jié)果RET第129頁,課件共188頁,創(chuàng)作于2023年2月§4-3分支程序設(shè)計
例:
x,y均為8位二進(jìn)制數(shù),設(shè)x存入R0,y存入R1,求解:第130頁,課件共188頁,創(chuàng)作于2023年2月
START:CJNE R0,#00H,SUL1
;X0
則轉(zhuǎn)移SUL1 MOV R1,#00H ;X=0,R1(Y)←0SJMP SUL2SUL1:JC NEG
;兩數(shù)不等,若X<0,轉(zhuǎn)向NEGMOV R1,#01H;X>0,R1(Y)←01HSJMPSUL2NEG:MOV R1,#0FFH ;X<0,R1(Y)←0FFHSUL2:RET;第131頁,課件共188頁,創(chuàng)作于2023年2月§4-4循環(huán)結(jié)構(gòu)程序設(shè)計
第132頁,課件共188頁,創(chuàng)作于2023年2月例:將外部存儲器8000H開始的50個單元清零。
CLEAR:CLRAMOVDPTR,#8000H;工作單元首址送指針MOVR2,50 ;置循環(huán)次數(shù)CLEAR1:MOVX@DPTR,AINCDPTR ;修改指針
DJNZR2,CLEAR1 ;控制循環(huán)
RET第133頁,課件共188頁,創(chuàng)作于2023年2月例:設(shè)計100ms延時程序。解:計算機(jī)執(zhí)行一條指令需要一定的時間,由一些指令組成一段程序,并反復(fù)循環(huán)執(zhí)行,利用計算機(jī)執(zhí)行程序所用的時間來實現(xiàn)延時,這種程序稱為延時程序。如當(dāng)系統(tǒng)使用12MHz晶振時,一個機(jī)器周期為1μs,計算執(zhí)行次數(shù)約50000次,就可以達(dá)到延時100ms的目的。對于50000次循環(huán)可采用外循環(huán)、內(nèi)循環(huán)嵌套的多重循環(huán)結(jié)構(gòu)。第134頁,課件共188頁,創(chuàng)作于2023年2月程序清單:START:ORG1000HMOVR6,#0C8H;外循環(huán)200次
LOOP1:MOVR7,#0F8H;內(nèi)循環(huán)250次LOOP2:DJNZR7,LOOP2 ;延時2μs×250=500μsDJNZR6,LOOP1 ;延時500μs×200=100msRET
2μs×250=500μs500μs×200=100ms第135頁,課件共188頁,創(chuàng)作于2023年2月§4-5子程序設(shè)計
子程序名即為子程序入口標(biāo)號。調(diào)用子程序之前要檢查堆棧是否已設(shè)置好。用RET結(jié)束子程序,并保證保證棧平衡。子程序嵌套須考慮堆棧容量。提供足夠的調(diào)用信息:子程序名、子程序功能、入口參數(shù)和出口參數(shù)、子程序占用的硬件資源、子程序中調(diào)用的其他子程序名。第136頁,課件共188頁,創(chuàng)作于2023年2月在匯編語言源程序中使用子程序,需要強(qiáng)調(diào)注意兩個問題: ①參數(shù)傳遞(入口參數(shù)和出口參數(shù)) ②現(xiàn)場保護(hù)(占用的硬件資源和棧平衡)第137頁,課件共188頁,創(chuàng)作于2023年2月例:把內(nèi)部RAM40H單元中一個字節(jié)的十六進(jìn)制數(shù)轉(zhuǎn)換成兩位ASCII碼,結(jié)果存放在內(nèi)部RAM的50H,51H兩個單元中??梢杂枚褩_M(jìn)行參數(shù)傳遞。MAIN:MOV R1,#50H;R1為存結(jié)果的指針
MOV A,40H;A為需轉(zhuǎn)換的十六進(jìn)制數(shù)
SWAP A;先轉(zhuǎn)換高位半字
PUSH ACC;壓棧
LCALLHEASC;調(diào)用將低半字節(jié)的內(nèi)容轉(zhuǎn)換
;成ASCII碼子程序HEASC
POP ACCMOV @R1,A;存高半字節(jié)轉(zhuǎn)換結(jié)果
INC R1PUSH 40H第138頁,課件共188頁,創(chuàng)作于2023年2月
LCALL HEASC
POP ACC MOV @R1,A ;存低半字節(jié)轉(zhuǎn)換結(jié)果HR1:SJMP HR1;------------------------------------------------------------;功能:將低半字節(jié)的內(nèi)容轉(zhuǎn)換成ASCII碼;入口參數(shù):棧頂;出口參數(shù):棧頂;------------------------------------------------------------HEASC: MOV R0,SP DEC R0 DEC R0 ;R0指向入口參數(shù)地址
XCH A,@R0 ;取被轉(zhuǎn)換參數(shù)
ANL A,#0FH ;保留低半字節(jié)
MOV DPTR,#TAB ;查表
MOVC A,@A+DPTR XCH A,@R0 ;結(jié)果送回堆棧
RETTAB: DB30H,31H,32H,…
第139頁,課件共188頁,創(chuàng)作于2023年2月
子程序調(diào)用中應(yīng)注意的問題
由于子程序調(diào)用過程中,CPU自動使用了堆棧,因此,容易出現(xiàn)以下幾種錯誤:(1)忘記給堆棧指針SP賦初值,堆棧初始化位置與第1組工作寄存器重合,如果以不同的方式使用了同一個內(nèi)存區(qū)域,會導(dǎo)致程序亂套。(2)程序中的PUSH和POP沒有配對使用,使RET指令執(zhí)行時不能彈出正確的斷點地址,造成返回錯誤。(3)堆棧設(shè)置太小,使棧區(qū)溢出。
第140頁,課件共188頁,創(chuàng)作于2023年2月§4-6程序設(shè)計舉例例:編程完成始終統(tǒng)計來自P1口的數(shù)據(jù)中正數(shù)、負(fù)數(shù)、零的個數(shù)的任務(wù)。解:設(shè)R0、R1、R2三個工作寄存器分別為統(tǒng)計正數(shù)、負(fù)數(shù)、零的個數(shù)的計數(shù)器。第141頁,課件共188頁,創(chuàng)作于2023年2月START:CLRAMOVR0,A ;+統(tǒng)計
MOVR1,A ;-統(tǒng)計
MOVR2,A ;0統(tǒng)計
ENTER:MOVA,P1 ;自P1口取一個數(shù)
JZZERO ;該數(shù)為0,轉(zhuǎn)ZEROJBP1.7,NEG ;該數(shù)為負(fù),轉(zhuǎn)NEGINCR0 ;該數(shù)不為0、不為負(fù),則必為正數(shù)
SJMPENTER ;循環(huán)自P1口取數(shù)
ZERO:INCR2 ;零計數(shù)器加1SJMPENTERNEG:INCR1 ;負(fù)數(shù)計數(shù)器加1SJMPENTER第142頁,課件共188頁,創(chuàng)作于2023年2月例:根據(jù)A的位狀態(tài)散轉(zhuǎn)到不同的處理程序。BIT-JMP:JBACC.0,LP0;A累加器D0為1,則轉(zhuǎn)LP0
JBACC.1,LP1
JBACC.2,LP2JBACC.3,LP3JBACC.4,LP4
JBACC.5,LP5JBACC.6,LP6JBACC.7,LP7
RETLP0:ACALLPRG0;調(diào)相應(yīng)子程序
……..
LJMP XXXLP1:ACALLPRG1…….. LJMP XXXLP7: ACALLPRG7…….. LJMP XXX第143頁,課件共188頁,創(chuàng)作于2023年2月 設(shè):將R3中的二位十六進(jìn)制數(shù)轉(zhuǎn)換成七段顯示代碼存放在R4、R5中。(1)根據(jù)電路圖,做出0F的七段顯示代碼表;(2)分離R3,分別查表。8A0800R3R4R5【例4-6-5】十六進(jìn)制數(shù)轉(zhuǎn)換成七段顯示代碼。第144頁,課件共188頁,創(chuàng)作于2023年2月START:PUSH A MOV DPTR,#TAB ;置表首地址
MOV A,R3 ;取十六進(jìn)制數(shù)
ANL A,#0FH ;處理低4位
MOVC A,@A+DPTR
;查表,取對應(yīng)七段顯示碼
MOV R5,A ;低4位七段顯示碼存入R5 MOV A,R3 ;取高4位十六進(jìn)制數(shù)
ANL A,#0F0H ;處理高4位
SWAP A ;A中高4位與低4位交換
MOVC A,@A+DPTR
;查表,取高4位七段顯示碼
MOV R4,A ;高4位七段顯示碼存入R1 POP A RETTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H 00H,18H,08H,03H,46H,21H,06H,0EH第145頁,課件共188頁,創(chuàng)作于2023年2月例:電路如圖,利用單片機(jī)內(nèi)部的定時器/計數(shù)器實現(xiàn)喇叭1秒間斷發(fā)聲。設(shè)單片機(jī)振蕩頻率fosc=12MHz。分析:單片機(jī)內(nèi)部定時器/計數(shù)器,按定時工作方式,最長定時時間只有65.536ms。要達(dá)到1秒定時可采用定時器與軟件程序結(jié)合完成。即:采用定時器1中斷定時50ms,用R3做秒計數(shù)器,從而實現(xiàn)對喇叭的1秒定時控制。第146頁,課件共188頁,創(chuàng)作于2023年2月
ORG 0000H ;程序入口
AJMP MAIN ;轉(zhuǎn)向主程序
ORG 001BH ;T1中斷入口地址
AJMP CONT ;轉(zhuǎn)到中斷服務(wù)子程序
ORG 30HMAIN: MOVTMOD,#10H ;置定時器1為工作方式1 MOVTH1,#3CH ;置50ms定時初值
MOV TL1,#0B0H SETB EA ;CPU開中斷
SETBET1 ;定時器定時器1開中斷
MOV R3,#0 ;秒計數(shù)初值
SETB P1.0 ;喇叭初始時為不響
SETBTR1 ;啟動定時器1NEXT: NOP ;其它工作
SJMP NEXT第147頁,課件共188頁,創(chuàng)作于2023年2月T1中斷服務(wù)子程序CONT: INC R3 CJNE R3,#20,EXIT
CPL P1.0 ;中斷服務(wù)子程序主要工作
MOV R3,#0EXIT:
MOV TH1,#3CH ;重置50ms定時初值
MOV TL1,#0B0H SETBTR1 ;啟動定時器1 RETI END第148頁,課件共188頁,創(chuàng)作于2023年2月第五章MCS-51系
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工質(zhì)量驗收標(biāo)準(zhǔn)及規(guī)范方案
- 道路橋墩施工技術(shù)方案
- 防腐蝕與保溫工程的協(xié)同設(shè)計方案
- 道路施工人員培訓(xùn)與管理方案
- 軟裝配飾色彩搭配方案
- 2026年如何實施有效的紅牌作戰(zhàn)管理實務(wù)題目集
- 2026年國際商務(wù)談判技巧與文化差異面試題
- 2026年旅游目的地管理與服務(wù)創(chuàng)新試題
- 2026年幼兒教育初級考試知識模擬卷
- 2026年二級計算機(jī)技能應(yīng)用考試模擬題
- 腰椎常見病變課件
- 對賬單模板完整版本
- 介紹壁球班課件
- 工業(yè)互聯(lián)網(wǎng)安全技術(shù)(微課版)課件全套 項目1-7 工業(yè)互聯(lián)網(wǎng)及安全認(rèn)識-工業(yè)互聯(lián)網(wǎng)安全新技術(shù)認(rèn)識
- 甲狀腺乳腺外科診療規(guī)范
- 退換貨方案及措施
- 麻醉科常用耗材分類與管理要點
- 材料力學(xué)性能檢驗工安全教育培訓(xùn)手冊
- 小說影視化改編的深度解析
- JJF 2214-2025 機(jī)動車檢測用氣象單元校準(zhǔn)規(guī)范
- 嚴(yán)格招標(biāo)需求管理制度
評論
0/150
提交評論