版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、復(fù)習(xí)課復(fù)習(xí)課2友情提示在這里的肯定考,不在這里的不一定不考。特此提醒!3嵌入式系統(tǒng)定義以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。4嵌入式系統(tǒng)的三大要素和兩大特征 三大要素: 嵌入性、專(zhuān)用性、計(jì)算機(jī)系統(tǒng) 兩大特征: 實(shí)時(shí)性、專(zhuān)用的開(kāi)發(fā)環(huán)境5嵌入式系統(tǒng)和單片機(jī)的區(qū)別和聯(lián)系嵌入式系統(tǒng) 單片機(jī)系統(tǒng)l目前嵌入式系統(tǒng)的主流是以32位嵌入式微處理器為核心的硬件設(shè)計(jì)和基于實(shí)時(shí)操作系統(tǒng)(RTOS)的軟件設(shè)計(jì)l單片機(jī)系統(tǒng)多為4位、8位、16位機(jī),不適合運(yùn)行操作系統(tǒng),難以進(jìn)行復(fù)雜的運(yùn)算及處理功能l嵌入式系統(tǒng)強(qiáng)調(diào)基于平臺(tái)的設(shè)計(jì)、軟硬件協(xié)同設(shè)
2、計(jì),單片機(jī)大多采用軟硬件流水設(shè)計(jì)l嵌入式系統(tǒng)設(shè)計(jì)的核心是軟件設(shè)計(jì)(占70%左右的工作量),單片機(jī)系統(tǒng)軟硬件設(shè)計(jì)所占比例基本相同6嵌入式設(shè)備和嵌入式系統(tǒng)的區(qū)別和聯(lián)系宿主和模塊的關(guān)系智能電飯煲(電腦控制板)7嵌入式處理器和嵌入式系統(tǒng)的區(qū)別和聯(lián)系構(gòu)成計(jì)算機(jī)系統(tǒng),作嵌入式應(yīng)用處理器+外圍設(shè)備=系統(tǒng)8交叉編譯嵌入式系統(tǒng)采用“宿主機(jī)/目標(biāo)機(jī)”方式交叉編譯。USB/RS232/以太網(wǎng)以太網(wǎng)宿主機(jī):通用計(jì)算機(jī)(宿主機(jī):通用計(jì)算機(jī)(PC),開(kāi)發(fā)環(huán)境。),開(kāi)發(fā)環(huán)境。目標(biāo)機(jī):嵌入式系統(tǒng),運(yùn)行環(huán)境。目標(biāo)機(jī):嵌入式系統(tǒng),運(yùn)行環(huán)境。內(nèi)存小內(nèi)存小存儲(chǔ)空間有限存儲(chǔ)空間有限計(jì)算能力有限計(jì)算能力有限9實(shí)時(shí)性高速 高實(shí)時(shí)性不同應(yīng)用
3、系統(tǒng),不同的實(shí)時(shí)要求10存儲(chǔ)器系統(tǒng)-Flash*FLASH:閃存分類(lèi):NOR Flash 和 NAND Flash讀速度: NOR Flash類(lèi)似SDRM,數(shù)據(jù)/地址線獨(dú)立,讀更快, NAND Flash分頁(yè)存儲(chǔ),存儲(chǔ)量大,讀一般寫(xiě)速度: NOR一次擦除64128K,5秒, NAND一次擦除832K,4ms NOR適合代碼存儲(chǔ)(讀快)適合代碼存儲(chǔ)(讀快)NAND適合數(shù)據(jù)存儲(chǔ)(寫(xiě)快)適合數(shù)據(jù)存儲(chǔ)(寫(xiě)快)11存儲(chǔ)器系統(tǒng)存儲(chǔ)器系統(tǒng)- -FlashFLASH:閃存最典型特點(diǎn):分塊操作,整塊擦除,整塊寫(xiě)入,按字節(jié)處理 FLASH內(nèi)存內(nèi)存FLASHFLASH12 中間層中間層學(xué)名:硬件抽象層HAL(Har
4、dware Abstract Layer)工程:板極支持包BSP(Board Supporting Pakeage)作用:它把系統(tǒng)軟件與底層硬件部分隔離,使得系統(tǒng)的底層設(shè)備驅(qū)動(dòng)程序與硬件無(wú)關(guān)。優(yōu)點(diǎn):移植 開(kāi)發(fā)BSP具有以下兩個(gè)特點(diǎn):操作系統(tǒng)相關(guān)性 硬件相關(guān)性 l功能層功能層l軟件層軟件層l中間層中間層l硬件層硬件層13 嵌入式系統(tǒng)的架構(gòu)嵌入式系統(tǒng)的架構(gòu)14微處理器微處理器(MPU) (MPU) MPU嵌入式微處理器是由通用計(jì)算機(jī)中的CPU演變而來(lái)的。只保留和嵌入式應(yīng)用緊密相關(guān)的功能硬件,去除其他的冗余功能部分,這樣就以最低的功耗和資源實(shí)現(xiàn)嵌入式應(yīng)用的特殊要求。Intel創(chuàng)新模式 :不是簡(jiǎn)單的刪
5、除15片上系統(tǒng)SoC (System on Chip )。將功能做在一個(gè)芯片上,像是ARM RISC、DSP或是其他的微處理器核心,加上通信的接口單元,像通用串行端口(USB)、TCP/IP通信單元、GPRS通信接口、GSM通信接口、IEEE1394、藍(lán)牙模塊接口等等,這些單元以往都是依照各單元的功能做成一個(gè)個(gè)獨(dú)立的處理芯片。嵌入式片上系統(tǒng)嵌入式片上系統(tǒng)(System On Chip)16CISC和和RISC1、CISC:復(fù)雜指令集:復(fù)雜指令集(Complex Instruction Set Computer)具有大量的指令和尋址方式,指令長(zhǎng)度可變。具有大量的指令和尋址方式,指令長(zhǎng)度可變。大多
6、數(shù)程序只使用少量的指令就能夠運(yùn)行。大多數(shù)程序只使用少量的指令就能夠運(yùn)行。2、RISC:精簡(jiǎn)指令集:精簡(jiǎn)指令集(Reduced Instruction Set Computer) 只包含最有用的指令,指令長(zhǎng)度固定確保數(shù)據(jù)通道快只包含最有用的指令,指令長(zhǎng)度固定確保數(shù)據(jù)通道快速執(zhí)行每一條指令使速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單。硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單。 ARM7系列是馮諾依曼結(jié)構(gòu),指令系統(tǒng)是RISC。 ARM9系列是哈佛結(jié)構(gòu),指令系統(tǒng)是RISC。 TI的DSP系列是哈佛結(jié)構(gòu),指令系統(tǒng)是CISC。 MCS-51是哈佛結(jié)構(gòu),指令系統(tǒng)是CISC。 PIC單片機(jī)是哈佛結(jié)構(gòu),指令系統(tǒng)是RISC
7、。辨析哈佛結(jié)構(gòu)和馮哈佛結(jié)構(gòu)和馮. .諾依曼結(jié)構(gòu)主要是指存儲(chǔ)諾依曼結(jié)構(gòu)主要是指存儲(chǔ)器結(jié)構(gòu),與指令系統(tǒng)沒(méi)有嚴(yán)格的對(duì)應(yīng)關(guān)系。器結(jié)構(gòu),與指令系統(tǒng)沒(méi)有嚴(yán)格的對(duì)應(yīng)關(guān)系。提醒注意:后面考察提醒注意:后面考察原理 預(yù)先取若干條指令 每條指令分解為多步,并讓各步操作重疊(分成幾步稱(chēng)為幾級(jí)流水) 當(dāng)前指令尚未執(zhí)行完時(shí),提前啟動(dòng)后續(xù)指令1.3 流水線技術(shù)譯碼譯碼取指取指執(zhí)行執(zhí)行add譯碼譯碼取指取指執(zhí)行執(zhí)行sub譯碼譯碼取指取指執(zhí)行執(zhí)行cmp時(shí)間時(shí)間加加Add減減Sub比較比較Cmp舉例:汽車(chē)等工廠舉例:汽車(chē)等工廠/ /列概念列概念5+3-70?5+3-70?工作原理工作原理設(shè)備設(shè)備1控制控制設(shè)備設(shè)備2控制控制設(shè)備
8、設(shè)備3控制控制設(shè)備設(shè)備4控制控制設(shè)備設(shè)備5控制控制設(shè)備設(shè)備6控制控制高阻高阻聯(lián)通聯(lián)通控制控制控制控制 系統(tǒng)時(shí)鐘就是一個(gè)典型的頻率相當(dāng)精確和穩(wěn)定的脈沖信號(hào)發(fā)生器。 時(shí)鐘 晶振:提供標(biāo)準(zhǔn)頻率 頻率綜合器:產(chǎn)生各種頻率 時(shí)鐘電路 為嵌入式系統(tǒng)產(chǎn)生時(shí)序脈沖舉例:廣播體操舉例:廣播體操/ /列概念列概念 通用文件系統(tǒng)不適用于嵌入式系統(tǒng)。 Flash上實(shí)現(xiàn)文件系統(tǒng),了解Flash的特點(diǎn): 擦除-寫(xiě)入、塊操作 Flash上文件系統(tǒng): (1)數(shù)據(jù)管理:讀取、修改、刪除 (2)考慮擦寫(xiě)時(shí)間,協(xié)調(diào)數(shù)據(jù)吞吐量2.3.2 文件系統(tǒng)文件系統(tǒng)1.3 嵌入式軟件都是無(wú)限循環(huán)嵌入式軟件都是無(wú)限循環(huán) 嵌入式軟件的結(jié)構(gòu)上都是沒(méi)有
9、出口的,程序不能退出,整個(gè)程序的基本結(jié)構(gòu)是無(wú)限循環(huán)無(wú)限循環(huán)。配合中斷構(gòu)成整體。一、基本特征列概念列概念main() /* 超級(jí)循環(huán)超級(jí)循環(huán) */ while(1) action1(); /* 常規(guī)循環(huán)操作常規(guī)循環(huán)操作 */ action2(); /* 中斷中斷1對(duì)應(yīng)的服務(wù)程序?qū)?yīng)的服務(wù)程序 */_interrupt ISR1() /* 中斷服務(wù)工作中斷服務(wù)工作 */ 后臺(tái)后臺(tái)1.4 中斷中斷前臺(tái)前臺(tái)中斷工作原理中斷工作原理 當(dāng)某種內(nèi)部或外部事件發(fā)生時(shí),產(chǎn)生中斷信號(hào),嵌入式系統(tǒng)的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的無(wú)限循環(huán),轉(zhuǎn)而去進(jìn)行中斷事件的處理,中斷處理完畢后,又返回被中斷的無(wú)限循環(huán)處,繼續(xù)執(zhí)
10、行下去。 中斷信號(hào) 中斷后要干的事 循環(huán)的恢復(fù) 中斷機(jī)制 中斷服務(wù)程序 中斷現(xiàn)場(chǎng)入棧1.4 中斷中斷列概念列概念/ /舉例舉例 “中斷中斷+無(wú)限循環(huán)無(wú)限循環(huán)”構(gòu)成的構(gòu)成的“前臺(tái)前臺(tái)/后臺(tái)后臺(tái)”軟件結(jié)構(gòu)是嵌入式軟件的基本結(jié)構(gòu)特征軟件結(jié)構(gòu)是嵌入式軟件的基本結(jié)構(gòu)特征 裸機(jī)程序就是直接實(shí)現(xiàn)的裸機(jī)程序就是直接實(shí)現(xiàn)的“前臺(tái)前臺(tái)/后臺(tái)后臺(tái)”軟件軟件 名詞解釋?zhuān)呵芭_(tái)名詞解釋?zhuān)呵芭_(tái)/后臺(tái)后臺(tái) 常規(guī)循環(huán)任務(wù) = 后臺(tái) = 無(wú)限循環(huán) 設(shè)備中斷任務(wù) = 前臺(tái) = 中斷。1.4 中斷中斷列概念列概念30 操作系統(tǒng)是一段核心程序1. 作為軟硬件資源的控制中心軟硬件資源的控制中心,它以盡量合理有效的方法組織多個(gè)用戶共享共享
11、計(jì)算機(jī)的各種資源。2. 作為一臺(tái)功能強(qiáng)大的虛擬機(jī)虛擬機(jī),給用戶一個(gè)方便、有效、安全的工作環(huán)境和開(kāi)發(fā)環(huán)境,提供人機(jī)交互接口和API函數(shù)。 1.1 操作系統(tǒng)舉例:上節(jié)課舉例:上節(jié)課wordword和和excelexcel、打印機(jī)打印、打印機(jī)打印、UNIXUNIX多用戶多用戶 指擁有CPU資源(寄存器、堆棧)的正正在執(zhí)行在執(zhí)行的簡(jiǎn)單程序。 通用操作系統(tǒng)中的進(jìn)程和線程。 實(shí)時(shí)系統(tǒng)中的大部分任務(wù)是周期的,編程上每個(gè)任務(wù)是一個(gè)典型的無(wú)限循環(huán)無(wú)限循環(huán)。 只有任務(wù)能夠申請(qǐng)CPU資源。 任務(wù)的狀態(tài):就緒、運(yùn)行、掛起就緒、運(yùn)行、掛起。2.1 任務(wù)兩大特點(diǎn):第一是程序,第二有資源兩大特點(diǎn):第一是程序,第二有資源 2
12、.2 調(diào)度 內(nèi)核的主要職責(zé)主要職責(zé)之一。 什么是調(diào)度?決定任務(wù)運(yùn)行的次序。 調(diào)度的基本方式有可搶占式和非搶占式。 多數(shù)實(shí)時(shí)內(nèi)核是基于優(yōu)先級(jí)調(diào)度的多種方法的復(fù)合。 2.2 調(diào)度 先來(lái)先服務(wù)(FCFS) 最短周期優(yōu)先(SBF) 優(yōu)先級(jí)法(Priority) 輪轉(zhuǎn)法(Round -Robin) 多級(jí)隊(duì)列法(multi-level queues) 多級(jí)反饋隊(duì)列(multi-level feedback queues)基本的調(diào)度算法基本的調(diào)度算法2.3 優(yōu)先級(jí) 任務(wù)的輕重緩急指示 每個(gè)任務(wù)按其重要性被賦予一定的優(yōu)先級(jí)。 靜態(tài)靜態(tài)優(yōu)先級(jí)與動(dòng)態(tài)動(dòng)態(tài)優(yōu)先級(jí)。(固定和可變) 基于優(yōu)先級(jí)的系統(tǒng)會(huì)出現(xiàn)優(yōu)先級(jí)倒置優(yōu)先
13、級(jí)倒置的問(wèn)題,一個(gè)好的實(shí)時(shí)內(nèi)核應(yīng)該提供解決倒置的方法。 已開(kāi)發(fā)出多種算法用于實(shí)時(shí)任務(wù)的優(yōu)先級(jí)分配。提問(wèn):被誰(shuí)賦予?提問(wèn):被誰(shuí)賦予?2.4 代碼臨界區(qū) 指一段不可分割的代碼,一旦執(zhí)行,不能被中斷。 實(shí)現(xiàn)代碼臨界區(qū)的方法方法有:一是屏蔽中斷,通常在代碼執(zhí)行前關(guān)閉中斷,執(zhí)行后打開(kāi)中斷,只能用于單處理機(jī)的情形;二是通過(guò)信號(hào)量信號(hào)量機(jī)制。 UC/OS里內(nèi)核里得到充分體現(xiàn)提問(wèn):屏蔽中斷會(huì)有何后果提問(wèn):屏蔽中斷會(huì)有何后果舉例:前面程序中的舉例:前面程序中的a a2.5 信號(hào)量 多任務(wù)環(huán)境下使用的一種設(shè)施設(shè)施, 它負(fù)責(zé)協(xié)調(diào)各個(gè)任務(wù), 以保證它們能夠正確、合理的使用公共資源公共資源。 用以前查詢信號(hào)量 信號(hào)量符
14、合要求,使用;否則,等待。 使用完要釋放信號(hào)量。 完成代碼臨界區(qū)功能舉例:停車(chē)場(chǎng)管理員舉例:停車(chē)場(chǎng)管理員提問(wèn):為什么代碼臨界區(qū)可以使用信號(hào)量提問(wèn):為什么代碼臨界區(qū)可以使用信號(hào)量2.10 搶占 當(dāng)起執(zhí)行的任務(wù)可以被打斷而由另外一個(gè)任務(wù)執(zhí)行。 提高了相應(yīng)外部中斷的能力。 多數(shù)操作系統(tǒng)是搶占式調(diào)度。1 1、80518051單片機(jī)的基本組成單片機(jī)的基本組成1.中央處理器中央處理器CPU:8位,運(yùn)算和控制功能位,運(yùn)算和控制功能2.內(nèi)部?jī)?nèi)部RAM:共共256個(gè)個(gè)RAM單元,用戶使用前單元,用戶使用前128個(gè)單元,個(gè)單元,用于存放可讀寫(xiě)數(shù)據(jù),后用于存放可讀寫(xiě)數(shù)據(jù),后128個(gè)單元被專(zhuān)用寄存器占用。個(gè)單元被專(zhuān)用
15、寄存器占用。3.內(nèi)部?jī)?nèi)部ROM:4KB掩膜掩膜ROM,用于存放程序、原始數(shù)據(jù)和表,用于存放程序、原始數(shù)據(jù)和表格。格。4.定時(shí)定時(shí)/計(jì)數(shù)器:計(jì)數(shù)器:兩個(gè)兩個(gè)16位的定時(shí)位的定時(shí)/計(jì)數(shù)器,實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功計(jì)數(shù)器,實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能。能。5.并行并行I/O口:口:4個(gè)個(gè)8位的位的I/O口口P0、P1、P2、P3。6.串行口:串行口:一個(gè)全雙工串行口。一個(gè)全雙工串行口。7.中斷控制系統(tǒng):中斷控制系統(tǒng):5個(gè)中斷源(外中斷個(gè)中斷源(外中斷2個(gè),定時(shí)個(gè),定時(shí)/計(jì)數(shù)中斷計(jì)數(shù)中斷2 個(gè),串行中斷個(gè),串行中斷1個(gè))個(gè))8.時(shí)鐘電路:時(shí)鐘電路:可產(chǎn)生時(shí)鐘脈沖序列,允許晶振頻率可產(chǎn)生時(shí)鐘脈沖序列,允許晶振頻率6MHZ
16、和和12MHZVCCVSSXTAL2XTAL1RSTP0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P1. 0P1.1P1.2 P1.3 P1.4 P1.5 P1.6 P1.7P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0ALEP3. 0P3.1P3.2 P3.3 P3.4 P3.5 P3.6 P3.7EAPSENRXD/TXD/INT0/ INT1/ T0/ T1/WR/ RD/12345678910111213141516171819204039383736353433323130292827262524242221803180
17、51 875189C51程序程序存儲(chǔ)器存儲(chǔ)器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,在這三個(gè)單元存放一條無(wú)條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時(shí)器0中斷外部中斷1定時(shí)器1中斷串行口中斷8位位0FFFH0FFEHEA=1 EA=0EA=1 EA=0程序程序存儲(chǔ)器資源分布存儲(chǔ)器資源分布中斷入口地址0000HFFFFH(64K)內(nèi)部外部數(shù)據(jù)數(shù)據(jù)存儲(chǔ)器存儲(chǔ)器00HFFH7FH80H(高128B)(低12
18、8B)RAM專(zhuān)用寄存器0000H H07H07H0808H H0FH0FH1010H H17H17H1818H H1FH1FH0區(qū)區(qū)R0R0R7R7R0R0R7R7R0R0R7R7R0R0R7R71區(qū)區(qū)2區(qū)區(qū)3區(qū)區(qū)工作寄存器區(qū)工作寄存器區(qū)可位尋址區(qū)可位尋址區(qū)20H2FH7F 7807 0030H7FH數(shù)據(jù)緩沖區(qū)數(shù)據(jù)緩沖區(qū)/堆棧區(qū)堆棧區(qū)內(nèi)部?jī)?nèi)部RAMRAM存儲(chǔ)器存儲(chǔ)器 工作寄存器區(qū)工作寄存器區(qū)選擇位選擇位RS0RS0、RS1RS1PSW位地址 CY ACF0RS1RS0OVF1P4、并行輸入/輸出電路結(jié)構(gòu)P0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P1. 0P1.
19、1P1.2 P1.3 P1.4 P1.5 P1.6 P1.7P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0P3. 0P3.1P3.2 P3.3 P3.4 P3.5 P3.6 P3.7u4 4個(gè)個(gè)8 8位并行位并行I/OI/O口:口:P0P0,P1P1,P2P2,P3P3;u均可作為雙向均可作為雙向I/OI/O端口使用。端口使用。 P0 P0:訪問(wèn)片外擴(kuò)展存儲(chǔ)器時(shí),訪問(wèn)片外擴(kuò)展存儲(chǔ)器時(shí), 復(fù)用為低復(fù)用為低8 8位地址線和數(shù)據(jù)線位地址線和數(shù)據(jù)線 P2P2:高高8 8位地址線。位地址線。P1P1:雙向雙向I/OI/O端口端口 P3P3:第二功能第二功能1234567
20、891011121314151617181920403938373635343332313029282726252424222180318051 875189C51 地址總線地址總線(Address Bus,Address Bus,簡(jiǎn)寫(xiě)簡(jiǎn)寫(xiě)ABAB) 地址線地址線A0A0A15 A15 共共1616位,位,P2P2口提供高口提供高8 8位地址位地址A8A8A15A15,P0P0口經(jīng)地址鎖存器提口經(jīng)地址鎖存器提供低供低8 8位地址位地址A0A0A7 A7 。片外存儲(chǔ)器可尋。片外存儲(chǔ)器可尋址范圍達(dá)址范圍達(dá)64KB64KB(即(即=65536=65536個(gè)字節(jié))。個(gè)字節(jié))。 數(shù)據(jù)總線數(shù)據(jù)總線(Dat
21、a Bus(Data Bus,簡(jiǎn)寫(xiě),簡(jiǎn)寫(xiě)DB)DB) 地址線地址線D0-D7D0-D7共共8 8位,由位,由P0P0口提供,分口提供,分時(shí)輸送低時(shí)輸送低8 8位地址(通過(guò)地址鎖存器鎖存位地址(通過(guò)地址鎖存器鎖存)和)和8 8位數(shù)據(jù)信息。位數(shù)據(jù)信息。 控制總線控制總線(Control Bus(Control Bus,簡(jiǎn)寫(xiě),簡(jiǎn)寫(xiě)CB)CB) 控制總線由控制總線由P3P3口的第二功能口的第二功能 (P3.6P3.6)、)、 (P3.7)(P3.7)和和3 3根獨(dú)立的控制根獨(dú)立的控制線線 、ALEALE和和 組成。組成。WRRDEAPSEN 所謂總線所謂總線, ,就是連接單片機(jī)與系統(tǒng)中各部件的一組公共
22、的信號(hào)線。就是連接單片機(jī)與系統(tǒng)中各部件的一組公共的信號(hào)線。寄存器尋址寄存器尋址直接尋址直接尋址立即數(shù)尋址立即數(shù)尋址寄存器間接尋址寄存器間接尋址變址尋址變址尋址相對(duì)尋址相對(duì)尋址位尋址位尋址 計(jì)算機(jī)中的中斷概念計(jì)算機(jī)中的中斷概念中斷中斷是指由于某種隨機(jī)事件的發(fā)生,是指由于某種隨機(jī)事件的發(fā)生,計(jì)算機(jī)暫停現(xiàn)行程序的運(yùn)行,轉(zhuǎn)去計(jì)算機(jī)暫?,F(xiàn)行程序的運(yùn)行,轉(zhuǎn)去執(zhí)行另一程序,以處理發(fā)生的事件,執(zhí)行另一程序,以處理發(fā)生的事件,處理完畢后又自動(dòng)返回原來(lái)的程序處理完畢后又自動(dòng)返回原來(lái)的程序繼續(xù)運(yùn)行。繼續(xù)運(yùn)行。將能引起中斷的事件稱(chēng)為將能引起中斷的事件稱(chēng)為中斷源中斷源。CPU現(xiàn)行運(yùn)行的程序稱(chēng)為現(xiàn)行運(yùn)行的程序稱(chēng)為主程序主
23、程序。處理隨機(jī)事件的程序稱(chēng)為處理隨機(jī)事件的程序稱(chēng)為中斷服務(wù)中斷服務(wù)子程序子程序。 MCS-51 MCS-51的中斷系統(tǒng)結(jié)構(gòu)圖的中斷系統(tǒng)結(jié)構(gòu)圖IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級(jí)自然優(yōu)先級(jí)矢量矢量地址地址高級(jí)中斷請(qǐng)求高級(jí)中斷請(qǐng)求自然優(yōu)先級(jí)自然優(yōu)先級(jí)矢量矢量地址地址低級(jí)中斷請(qǐng)求低級(jí)中斷請(qǐng)求PX0PT0PX1PT1PSIEIP中斷標(biāo)中斷標(biāo)志位志位中斷源中斷源允許允許總允許總允許中斷優(yōu)中斷優(yōu)先級(jí)先級(jí)TMODTMOD各位定義及具體的意義各位定義及具體的意義操作模式控
24、制位M0、M1M1 M0 工 作 方 式 功 能 說(shuō) 明0 0方 式 013位計(jì)數(shù)器0 1方 式 116位計(jì)數(shù)器1 0方 式 2自動(dòng)再裝入8位計(jì)數(shù)器1 1方 式 3定時(shí)器0:分成兩個(gè)8位計(jì)數(shù)器定時(shí)器1:停止計(jì)數(shù)TCON各位定義及具體的意義各位定義及具體的意義定時(shí)器初始化過(guò)程定時(shí)器初始化過(guò)程1、確定并設(shè)定定時(shí)器工作模式、確定并設(shè)定定時(shí)器工作模式 TMOD 2、設(shè)置定時(shí)、設(shè)置定時(shí)/計(jì)數(shù)器初值計(jì)數(shù)器初值 TH0、TL0 或或TH1、TL13、開(kāi)啟定時(shí)器中斷開(kāi)啟定時(shí)器中斷 IE: ET0(ET1)和)和 EA4、啟動(dòng)定時(shí)器、啟動(dòng)定時(shí)器 TCON: TR0 (TR1)注:如果采用查詢方式控制定時(shí)器還需要
25、判斷注:如果采用查詢方式控制定時(shí)器還需要判斷TF0(TF1)在在80803131單片機(jī)上擴(kuò)展單片機(jī)上擴(kuò)展8KB EPROM8KB EPROMP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7PSENOECEAA0127648031ALEG OEDDDDDDDD01234567QQQQQQQQ01234567EA74LS138P2.0P2.1P2.2P2.3P2.4P2.5P2.7P2.6AAAAAAAAAAA23456789101112Y0O0O1O2O3O4O5O6O774LS373(8K*8)VppVGM+5V在8031單片機(jī)上擴(kuò)展多片EPROM(片選法)在8031單片機(jī)上擴(kuò)
26、展多片EPROM(譯碼法)P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7WRRDOEWECE1AA0162648051ALEG OEDDDDDDDD01234567QQQQQQQQ01234567EA74LS138P2.0P2.1P2.2P2.3P2.4P2.5P2.7P2.6AAAAAAAAAAA23456789101112Y1CE2+5VI/O0I/O1I/O2I/O3I/O4I/O5I/O6I/O7在8031單片機(jī)上擴(kuò)展內(nèi)存RAM矩矩陣陣式式按按鍵鍵關(guān)鍵:如何關(guān)鍵:如何判斷鍵號(hào)?判斷鍵號(hào)?3210476511109815141312+5VP1.4P1.3P1.0MCS-
27、51P1.7P1.6P1.5P1.2P1.1接口電路:按鍵識(shí)別掃描法 流程: 當(dāng)?shù)诋?dāng)?shù)? 0列處于低電平時(shí),列處于低電平時(shí),逐行逐行查找是否有行線變低,查找是否有行線變低,若有,則若有,則第第0 0列與該行的交叉點(diǎn)列與該行的交叉點(diǎn)按鍵按下;若無(wú),則表示按鍵按下;若無(wú),則表示第第0 0列無(wú)鍵按下,再讓下一列處在低電平,依此循環(huán),這列無(wú)鍵按下,再讓下一列處在低電平,依此循環(huán),這種方式稱(chēng)為種方式稱(chēng)為鍵盤(pán)掃描鍵盤(pán)掃描。 鍵號(hào)鍵號(hào)= =行首鍵號(hào)(行首鍵號(hào)(0 0、4 4、8 8、1212)+ +列號(hào)(列號(hào)(0 0、1 1、2 2、3 3) 原理:原理: 在某一時(shí)刻只讓在某一時(shí)刻只讓一條列線一條列線處于處
28、于低低電平,其余列線均電平,其余列線均處于高電平,則當(dāng)這一列有鍵按下時(shí),該鍵所在的行處于高電平,則當(dāng)這一列有鍵按下時(shí),該鍵所在的行電平將會(huì)由高電平變?yōu)榈碗娖?,可判定該列相?yīng)的行電平將會(huì)由高電平變?yōu)榈碗娖?,可判定該列相?yīng)的行有鍵按下。有鍵按下。問(wèn)題引入:?jiǎn)栴}引入: LEDLED顯示器如何顯示出指定數(shù)字顯示器如何顯示出指定數(shù)字/ /字符?字符? 工作原理:以共陰極為例工作原理:以共陰極為例 v 某各發(fā)光二極管陽(yáng)極加上高電平時(shí)點(diǎn)亮某各發(fā)光二極管陽(yáng)極加上高電平時(shí)點(diǎn)亮v驅(qū)動(dòng)方式驅(qū)動(dòng)方式靜態(tài)驅(qū)動(dòng):每個(gè)數(shù)碼管用一個(gè)并口驅(qū)動(dòng)靜態(tài)驅(qū)動(dòng):每個(gè)數(shù)碼管用一個(gè)并口驅(qū)動(dòng) 動(dòng)態(tài)驅(qū)動(dòng):共一個(gè)并口,輪詢以節(jié)省資源動(dòng)態(tài)驅(qū)動(dòng):共一
29、個(gè)并口,輪詢以節(jié)省資源 發(fā)送器A站接收器B站單工通信(a)發(fā)收A站發(fā)收B站發(fā)收A站發(fā)收B站(b)(c)串行口四種工作方式應(yīng)用比較串行口四種工作方式應(yīng)用比較工作方式工作方式功能功能說(shuō)明說(shuō)明波特率波特率方式方式08位同步移位位同步移位寄存器寄存器常用于擴(kuò)展常用于擴(kuò)展I/O口口fosc/12方式方式110位位UART8位數(shù)據(jù)、起始位數(shù)據(jù)、起始位、結(jié)束位位、結(jié)束位可變(取決于定可變(取決于定時(shí)器時(shí)器1溢出率)溢出率)方式方式211位位UART8位數(shù)據(jù)、起始位數(shù)據(jù)、起始位位0、結(jié)束位、結(jié)束位1和奇偶校驗(yàn)位和奇偶校驗(yàn)位fosc/64或或fosc/32方式方式311位位UART數(shù)據(jù)、起始、校數(shù)據(jù)、起始、校驗(yàn)
30、、結(jié)束位驗(yàn)、結(jié)束位可變(取決于定可變(取決于定時(shí)器時(shí)器1溢出率)溢出率)MCS-51串行口的波特率串行口的波特率 在方式在方式2中,波特率取決于中,波特率取決于PCON中的中的SMOD值:值: 當(dāng)當(dāng)SMOD=0時(shí),波特率為時(shí),波特率為fosc/64; 當(dāng)當(dāng)SMOD=1時(shí),波特率為時(shí),波特率為fosc/32.即波特率即波特率 = 。oscSMODf642 在方式在方式0中,波特率為時(shí)鐘頻率的中,波特率為時(shí)鐘頻率的1/12,即,即fosc/12,固定不變固定不變)x256(12f322oscsmod雙機(jī)通信操作步驟v1、根據(jù)要求確定串口工作方式、根據(jù)要求確定串口工作方式v2、設(shè)定定時(shí)器的工作模式并
31、計(jì)算初值、設(shè)定定時(shí)器的工作模式并計(jì)算初值v3、啟動(dòng)定時(shí)器、啟動(dòng)定時(shí)器v4、開(kāi)啟中斷開(kāi)啟中斷v5、發(fā)送或接收開(kāi)始、發(fā)送或接收開(kāi)始64關(guān)鍵字關(guān)鍵字用途用途說(shuō)明說(shuō)明_at_地址定位地址定位為變量進(jìn)行存儲(chǔ)器絕對(duì)空間地址定位為變量進(jìn)行存儲(chǔ)器絕對(duì)空間地址定位alien函數(shù)特性聲明函數(shù)特性聲明用以聲明與用以聲明與PL/M51兼容的函數(shù)兼容的函數(shù)bdata存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明可位尋址的可位尋址的8051內(nèi)部數(shù)據(jù)存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器bit位變量聲明位變量聲明聲明位變量或位類(lèi)型函數(shù)聲明位變量或位類(lèi)型函數(shù)code存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明8051程序存儲(chǔ)器空間程序存儲(chǔ)器空間compact存儲(chǔ)器模式存儲(chǔ)器模
32、式指定使用指定使用8051外部分頁(yè)尋址數(shù)據(jù)存儲(chǔ)空間外部分頁(yè)尋址數(shù)據(jù)存儲(chǔ)空間data存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明直接尋址的直接尋址的8051內(nèi)部數(shù)據(jù)存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器far存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明8051外部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器idata存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明間接尋址的間接尋址的8051內(nèi)部數(shù)據(jù)存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器interrupt中斷函數(shù)聲明中斷函數(shù)聲明定義中斷服務(wù)函數(shù)定義中斷服務(wù)函數(shù)(未完,見(jiàn)下頁(yè))(未完,見(jiàn)下頁(yè))65large存儲(chǔ)器模式存儲(chǔ)器模式指定使用指定使用8051外部數(shù)據(jù)存儲(chǔ)空間外部數(shù)據(jù)存儲(chǔ)空間pdata存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明分頁(yè)尋址的分頁(yè)尋址的8051外部數(shù)據(jù)
33、存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器_priority_多任務(wù)優(yōu)先聲明多任務(wù)優(yōu)先聲明規(guī)定規(guī)定RTX51或或RTX51 Tiny的任務(wù)優(yōu)先級(jí)的任務(wù)優(yōu)先級(jí)reentrant可重入函數(shù)聲明可重入函數(shù)聲明定義可重入函數(shù)定義可重入函數(shù)sbit位變量聲明位變量聲明聲明可位尋址的特殊功能位聲明可位尋址的特殊功能位sfr特殊功能寄存器聲明特殊功能寄存器聲明聲明聲明8位的特殊功能寄存器位的特殊功能寄存器sfr16特殊功能寄存器聲明特殊功能寄存器聲明聲明聲明16位的特殊功能寄存器位的特殊功能寄存器small存儲(chǔ)器模式存儲(chǔ)器模式指定使用指定使用8051內(nèi)部數(shù)據(jù)存儲(chǔ)空間內(nèi)部數(shù)據(jù)存儲(chǔ)空間_task_任務(wù)聲明任務(wù)聲明定義實(shí)時(shí)多任務(wù)函數(shù)定
34、義實(shí)時(shí)多任務(wù)函數(shù)using寄存器組定義寄存器組定義定義定義8051的工作寄存器組的工作寄存器組xdata存儲(chǔ)器類(lèi)型聲明存儲(chǔ)器類(lèi)型聲明8051外部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器66v C語(yǔ)言的基本數(shù)據(jù)類(lèi)型有語(yǔ)言的基本數(shù)據(jù)類(lèi)型有char、short、int、long、float和和double。v 對(duì)對(duì)C51編譯器來(lái)說(shuō):編譯器來(lái)說(shuō): 可以精簡(jiǎn)為:可以精簡(jiǎn)為:bit、char、int、long、float五個(gè)五個(gè)short類(lèi)型與類(lèi)型與int類(lèi)型相同類(lèi)型相同double類(lèi)型與類(lèi)型與float類(lèi)型相同。類(lèi)型相同。bit(1位)、位)、char (8位)位) 、int (16位)位) 、long (32位)位)
35、 、float (32位)位)67v8051系列微處理器采用了系列微處理器采用了哈佛體系結(jié)構(gòu)哈佛體系結(jié)構(gòu),即程序存儲(chǔ)區(qū)和數(shù)據(jù),即程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)是分離的。存儲(chǔ)區(qū)是分離的。8051系列微處理器提供了三種不同類(lèi)型的存儲(chǔ)系列微處理器提供了三種不同類(lèi)型的存儲(chǔ)區(qū)域(區(qū)域(memory areas),),v 程序存儲(chǔ)區(qū)(程序存儲(chǔ)區(qū)(program memory)v內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)(內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)(internal data memory)v外部數(shù)據(jù)存儲(chǔ)區(qū)(外部數(shù)據(jù)存儲(chǔ)區(qū)(external data memory)v這三種存儲(chǔ)區(qū)域均從地址這三種存儲(chǔ)區(qū)域均從地址0開(kāi)始編址,通過(guò)采用開(kāi)始編址,通過(guò)采用不同的
36、尋址指不同的尋址指令令來(lái)解決地址重疊的問(wèn)題。來(lái)解決地址重疊的問(wèn)題。 68/內(nèi)部數(shù)據(jù)區(qū)的字符型變量。內(nèi)部數(shù)據(jù)區(qū)的字符型變量。 char data var1;/在程序區(qū)中定義字串在程序區(qū)中定義字串char code text = ENTER PARAMETER:; /外部數(shù)據(jù)區(qū)的長(zhǎng)度為外部數(shù)據(jù)區(qū)的長(zhǎng)度為100的無(wú)符號(hào)長(zhǎng)整形數(shù)組的無(wú)符號(hào)長(zhǎng)整形數(shù)組unsigned long xdata array100; /內(nèi)部數(shù)據(jù)區(qū),間接尋址方式訪問(wèn)的浮點(diǎn)變量?jī)?nèi)部數(shù)據(jù)區(qū),間接尋址方式訪問(wèn)的浮點(diǎn)變量float idata x,y,z; /外部數(shù)據(jù)區(qū),分頁(yè)存儲(chǔ)區(qū)中的無(wú)符號(hào)整型變量外部數(shù)據(jù)區(qū),分頁(yè)存儲(chǔ)區(qū)中的無(wú)符號(hào)整型變量
37、unsigned int pdata dimension;/外部數(shù)據(jù)區(qū),無(wú)符號(hào)字符類(lèi)型的三維數(shù)組變量外部數(shù)據(jù)區(qū),無(wú)符號(hào)字符類(lèi)型的三維數(shù)組變量unsigned char xdata vector1044;/內(nèi)部數(shù)據(jù)區(qū),可位操作的字符變量?jī)?nèi)部數(shù)據(jù)區(qū),可位操作的字符變量char bdata flags; 69v位變量(位變量(Bit Types)是指用一個(gè)二進(jìn)制位表示的變是指用一個(gè)二進(jìn)制位表示的變量。位數(shù)據(jù)類(lèi)型可以用來(lái)說(shuō)明變量、參數(shù)表、函數(shù)返回量。位數(shù)據(jù)類(lèi)型可以用來(lái)說(shuō)明變量、參數(shù)表、函數(shù)返回值等。位數(shù)據(jù)變量聲明和基本的數(shù)據(jù)類(lèi)型聲明一樣。值等。位數(shù)據(jù)變量聲明和基本的數(shù)據(jù)類(lèi)型聲明一樣。v所有的位變量都存
38、儲(chǔ)在所有的位變量都存儲(chǔ)在內(nèi)部數(shù)據(jù)區(qū)的位尋址段內(nèi)部數(shù)據(jù)區(qū)的位尋址段中。因中。因?yàn)樵摱沃挥袨樵摱沃挥?6個(gè)字節(jié)長(zhǎng),所以在一個(gè)作用域內(nèi)最多只個(gè)字節(jié)長(zhǎng),所以在一個(gè)作用域內(nèi)最多只能聲明能聲明128個(gè)位變量。個(gè)位變量。v注意:由于位變量只能存儲(chǔ)在內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)的位變注意:由于位變量只能存儲(chǔ)在內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)的位變量區(qū)內(nèi),因此只能使用量區(qū)內(nèi),因此只能使用data 和和idata兩種存儲(chǔ)器類(lèi)型修兩種存儲(chǔ)器類(lèi)型修飾符,其它存儲(chǔ)器類(lèi)型是非法的。飾符,其它存儲(chǔ)器類(lèi)型是非法的。70v可位尋址的對(duì)象(可位尋址的對(duì)象(Bit-addressable Objects)是指可以同是指可以同時(shí)用字節(jié)(字)尋址和位尋址方式進(jìn)行訪問(wèn)
39、的對(duì)象。只有當(dāng)時(shí)用字節(jié)(字)尋址和位尋址方式進(jìn)行訪問(wèn)的對(duì)象。只有當(dāng)數(shù)據(jù)對(duì)象占據(jù)數(shù)據(jù)對(duì)象占據(jù)8051內(nèi)部數(shù)據(jù)區(qū)的可位尋址區(qū)時(shí),才是一個(gè)可內(nèi)部數(shù)據(jù)區(qū)的可位尋址區(qū)時(shí),才是一個(gè)可位尋址對(duì)象。位尋址對(duì)象。vC51使用使用bdata存儲(chǔ)器類(lèi)型來(lái)聲明可位尋址對(duì)象。存儲(chǔ)器類(lèi)型來(lái)聲明可位尋址對(duì)象。v例如:例如:int bdata ibase;/*可位尋址的整形變量可位尋址的整形變量 */char bdata bary 4; /* 可位尋址的字符形數(shù)組可位尋址的字符形數(shù)組 */v注意:聲明為注意:聲明為bdata存儲(chǔ)器類(lèi)型的變量必須為存儲(chǔ)器類(lèi)型的變量必須為全局變量全局變量,不,不能是局部變量。由于能是局部變量。由
40、于bdata區(qū)為區(qū)為16個(gè)字節(jié),因此可尋址對(duì)象個(gè)字節(jié),因此可尋址對(duì)象所占存儲(chǔ)空間不能大于所占存儲(chǔ)空間不能大于16個(gè)字節(jié)。個(gè)字節(jié)。71v位變量是一位的變量,可位尋址變量是一個(gè)字節(jié)或字位變量是一位的變量,可位尋址變量是一個(gè)字節(jié)或字的變量,只是可以位尋址。的變量,只是可以位尋址。v位變量用類(lèi)型位變量用類(lèi)型bit或者或者sbit定義,可位尋址變量可以用定義,可位尋址變量可以用char或或int定義,但前面要跟著定義,但前面要跟著bdata進(jìn)行數(shù)據(jù)類(lèi)型說(shuō)明。進(jìn)行數(shù)據(jù)類(lèi)型說(shuō)明。bit data y;sbit idata y;char bdata y;vsbit是特殊寄存器區(qū),是特殊寄存器區(qū),bit是可位尋
41、址區(qū),是可位尋址區(qū), char bdata 都在可位尋址區(qū)都在可位尋址區(qū)72v8051系列的微控制器提供了一個(gè)獨(dú)立的內(nèi)存區(qū),用來(lái)存放系列的微控制器提供了一個(gè)獨(dú)立的內(nèi)存區(qū),用來(lái)存放特殊功能寄存器(特殊功能寄存器(special function register, SFR)。)。vSFR用來(lái)在程序中控制定時(shí)器,計(jì)數(shù)器,串行用來(lái)在程序中控制定時(shí)器,計(jì)數(shù)器,串行I/O,端口,端口I/O操作,以及外設(shè)的操作。操作,以及外設(shè)的操作。SFR駐留在地址駐留在地址0X80到到0XFF空間空間,可按可按字節(jié)尋址字節(jié)尋址或按字尋址,某些寄存器還可以按或按字尋址,某些寄存器還可以按位尋址位尋址。v8051系列微控制
42、器中系列微控制器中SFR的個(gè)數(shù)和類(lèi)型是變化的。的個(gè)數(shù)和類(lèi)型是變化的。C51提提供了許多供了許多8051兼容芯片的兼容芯片的包含文件包含文件,這些文件對(duì)芯片的,這些文件對(duì)芯片的SFR進(jìn)行了定義。進(jìn)行了定義。CX51編譯器用編譯器用sfr,sfr16,sbit來(lái)進(jìn)行來(lái)進(jìn)行SFR定義。定義。73vC51的指針和標(biāo)準(zhǔn)的指針和標(biāo)準(zhǔn)C中的指針功能相同。但是由于中的指針功能相同。但是由于8051體系結(jié)體系結(jié)構(gòu)的特殊性,構(gòu)的特殊性,C51提供了兩種不同類(lèi)型的指針:提供了兩種不同類(lèi)型的指針:通用指針通用指針(Generic Pointers)具體指針具體指針(Memory-specific Pointers)。
43、)。v通用指針的聲明是和標(biāo)準(zhǔn)通用指針的聲明是和標(biāo)準(zhǔn)C中的指針聲明是相同的,例如:中的指針聲明是相同的,例如:char *s; /* 指向字符類(lèi)型的指針指向字符類(lèi)型的指針 */int *numptr; /* 指向整型類(lèi)型的指針指向整型類(lèi)型的指針*/long *state;/* 指向長(zhǎng)整型類(lèi)型的指針指向長(zhǎng)整型類(lèi)型的指針 */74v具體指針具體指針是在聲明時(shí)是在聲明時(shí)指定了存儲(chǔ)器類(lèi)型的指針指定了存儲(chǔ)器類(lèi)型的指針,是指向特定存,是指向特定存儲(chǔ)區(qū)域中的指針變量。儲(chǔ)區(qū)域中的指針變量。char data *str; /* ptr to string in data */int xdata *numtab;
44、/* ptr to int(s) in xdata */long code *powtab; /* ptr to long(s) in code */v具體指針不需要保存存儲(chǔ)器類(lèi)型字節(jié)。具體指針可以保存在一具體指針不需要保存存儲(chǔ)器類(lèi)型字節(jié)。具體指針可以保存在一個(gè)字節(jié)(個(gè)字節(jié)(idata, data, bdata, pdata類(lèi)型指針)或類(lèi)型指針)或2個(gè)字節(jié)個(gè)字節(jié)(code 和和xdata類(lèi)型指針)中。類(lèi)型指針)中。v具體指針可以用來(lái)訪問(wèn)具體指針可以用來(lái)訪問(wèn)8051聲明的存儲(chǔ)區(qū)內(nèi)的變量。具體指聲明的存儲(chǔ)區(qū)內(nèi)的變量。具體指針的針的效率高效率高,但,但靈活性較差靈活性較差。 75v例:例:char
45、data * xdata ptr; /* ptr in xdata to data char */int xdata * data numtab; /* numtab in data to xdata int */long code * idata powtab; /* powtab in idata to code long */v注意:本例中變量定義時(shí)使用了兩個(gè)存儲(chǔ)器類(lèi)型,注意:本例中變量定義時(shí)使用了兩個(gè)存儲(chǔ)器類(lèi)型,*前的存儲(chǔ)器類(lèi)型修飾指針指向的數(shù)據(jù),前的存儲(chǔ)器類(lèi)型修飾指針指向的數(shù)據(jù),*后后的的存儲(chǔ)器類(lèi)型修飾指針本身,即存儲(chǔ)器類(lèi)型修飾指針本身,即指針?biāo)紦?jù)的存儲(chǔ)區(qū)域類(lèi)指針?biāo)紦?jù)的存儲(chǔ)區(qū)域類(lèi)
46、型型。 76v在在C語(yǔ)言中,指針變量除了能指向數(shù)據(jù)對(duì)象外,也語(yǔ)言中,指針變量除了能指向數(shù)據(jù)對(duì)象外,也可可以指向函數(shù)以指向函數(shù)。v函數(shù)在編譯時(shí),編譯器為每個(gè)函數(shù)分配一個(gè)入口地址,函數(shù)在編譯時(shí),編譯器為每個(gè)函數(shù)分配一個(gè)入口地址,這個(gè)這個(gè)入口地址就稱(chēng)為函數(shù)的指針入口地址就稱(chēng)為函數(shù)的指針。函數(shù)的指針可以賦給。函數(shù)的指針可以賦給函數(shù)指針變量函數(shù)指針變量,并能通過(guò)函數(shù)指針變量來(lái)調(diào)用它所指向,并能通過(guò)函數(shù)指針變量來(lái)調(diào)用它所指向的函數(shù)。的函數(shù)。指向函數(shù)指針變量的定義格式如下:指向函數(shù)指針變量的定義格式如下:類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 (*指針變量名)(參量列表)指針變量名)(參量列表)77int add(int a
47、,int b)return a+b;int sub(int a,int b)return a-b;main()int (*pFunc)(int,int);/定義函數(shù)指針變量!定義函數(shù)指針變量!int x,y;pFunc=add;/對(duì)函數(shù)指針變量賦值對(duì)函數(shù)指針變量賦值x=(*pFunc)(3,4);pFunc=sub;y=(*pFunc)(5,3);v上例運(yùn)行完成后,上例運(yùn)行完成后,x=?,y=?。78v可重入(可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反,不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(不可重入(non-reentr
48、ant)函數(shù)不函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)??芍厝牒瘮?shù)可以在任號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。可重入函數(shù)可以在任意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)。可重入函數(shù)要意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)。可重入函數(shù)要么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù)么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù) 可重入函數(shù):可重入函數(shù): v不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。 v不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供
49、。不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供。 v使用本地?cái)?shù)據(jù),或者通過(guò)制作全局?jǐn)?shù)據(jù)的本地拷貝來(lái)保護(hù)全局使用本地?cái)?shù)據(jù),或者通過(guò)制作全局?jǐn)?shù)據(jù)的本地拷貝來(lái)保護(hù)全局?jǐn)?shù)據(jù)。數(shù)據(jù)。 v絕不調(diào)用任何不可重入函數(shù)。絕不調(diào)用任何不可重入函數(shù)。 79v 可重入函數(shù)可重入函數(shù)可以在同一個(gè)時(shí)刻由多個(gè)進(jìn)程共享。當(dāng)可以在同一個(gè)時(shí)刻由多個(gè)進(jìn)程共享。當(dāng)一個(gè)進(jìn)程正在執(zhí)行一個(gè)可重入函數(shù),另一個(gè)進(jìn)程可一個(gè)進(jìn)程正在執(zhí)行一個(gè)可重入函數(shù),另一個(gè)進(jìn)程可以中斷該進(jìn)程,并可以開(kāi)始執(zhí)行同一個(gè)可重入函數(shù),以中斷該進(jìn)程,并可以開(kāi)始執(zhí)行同一個(gè)可重入函數(shù),而不影響函數(shù)的運(yùn)行結(jié)果。而不影響函數(shù)的運(yùn)行結(jié)果。ANSI C 語(yǔ)言中,調(diào)用函數(shù)時(shí)會(huì)把
50、函數(shù)的語(yǔ)言中,調(diào)用函數(shù)時(shí)會(huì)把函數(shù)的參數(shù)參數(shù)和函數(shù)中使用和函數(shù)中使用的的局部變量局部變量入棧。入棧。因?yàn)橐驗(yàn)?051 內(nèi)部堆??臻g的限制,為了提高效率,內(nèi)部堆??臻g的限制,為了提高效率,C51 沒(méi)有沒(méi)有提供這種堆棧,而是提供一種壓縮棧。提供這種堆棧,而是提供一種壓縮棧。每個(gè)函數(shù)有一個(gè)給定每個(gè)函數(shù)有一個(gè)給定存儲(chǔ)空間,用于存放局部變量存儲(chǔ)空間,用于存放局部變量。函數(shù)中的每個(gè)變量都存放在。函數(shù)中的每個(gè)變量都存放在這個(gè)空間的固定位置。當(dāng)遞歸調(diào)用該過(guò)程時(shí)會(huì)導(dǎo)致變量被覆這個(gè)空間的固定位置。當(dāng)遞歸調(diào)用該過(guò)程時(shí)會(huì)導(dǎo)致變量被覆蓋,蓋,所以通常情況下所以通常情況下CX51中的函數(shù)是中的函數(shù)是不能重入不能重入的的。
51、80v為此必須使用為此必須使用reentrant函數(shù)屬性來(lái)聲明函數(shù)是可重函數(shù)屬性來(lái)聲明函數(shù)是可重入的。格式如下:入的。格式如下:函數(shù)類(lèi)型函數(shù)類(lèi)型 函數(shù)名函數(shù)名(形式參數(shù)列表形式參數(shù)列表) reentrantv與不可重入函數(shù)的參數(shù)傳遞和局部變量的存儲(chǔ)分配方與不可重入函數(shù)的參數(shù)傳遞和局部變量的存儲(chǔ)分配方法不同,法不同,C51編譯器為再入函數(shù)生成一個(gè)編譯器為再入函數(shù)生成一個(gè)模擬棧模擬棧,通過(guò),通過(guò)這個(gè)模擬棧來(lái)完成參數(shù)傳遞和存放局部變量。這樣每次這個(gè)模擬棧來(lái)完成參數(shù)傳遞和存放局部變量。這樣每次函數(shù)調(diào)用時(shí)的局部變量都會(huì)被單獨(dú)保存,再入函數(shù)一般函數(shù)調(diào)用時(shí)的局部變量都會(huì)被單獨(dú)保存,再入函數(shù)一般占用較大的內(nèi)存
52、空間,運(yùn)行起來(lái)也比較慢,并且不允許占用較大的內(nèi)存空間,運(yùn)行起來(lái)也比較慢,并且不允許傳遞傳遞bit 類(lèi)型的變量,也不能定義局部位變量。類(lèi)型的變量,也不能定義局部位變量。v可重入函數(shù)經(jīng)常在實(shí)時(shí)應(yīng)用系統(tǒng)中應(yīng)用,也可在中斷可重入函數(shù)經(jīng)常在實(shí)時(shí)應(yīng)用系統(tǒng)中應(yīng)用,也可在中斷函數(shù)和非中斷函數(shù)同時(shí)調(diào)用同一個(gè)函數(shù)時(shí)使用。函數(shù)和非中斷函數(shù)同時(shí)調(diào)用同一個(gè)函數(shù)時(shí)使用。812. ARM內(nèi)核體系結(jié)構(gòu)內(nèi)核體系結(jié)構(gòu)3)運(yùn)行模式)運(yùn)行模式ARM體系結(jié)構(gòu)支持體系結(jié)構(gòu)支持7種處理器模式,分別種處理器模式,分別為:為:用戶模式、快中斷模式、中斷模式、用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)管理模式、中止模式
53、、未定義模式和系統(tǒng)模式,模式,如下表所示。如下表所示。82處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位時(shí)進(jìn)入此模式數(shù)據(jù)訪問(wèn)中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)數(shù)據(jù)訪問(wèn)終止時(shí)進(jìn)入該模式未定義指令終止 (und)支持軟件仿真硬件的協(xié)處理器指令預(yù)取終止時(shí)進(jìn)入此模式ARM處理器模式2. ARM內(nèi)核
54、體系結(jié)構(gòu)內(nèi)核體系結(jié)構(gòu)這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率83特權(quán)模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位時(shí)進(jìn)入此模式數(shù)據(jù)訪問(wèn)中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)數(shù)據(jù)訪問(wèn)終止時(shí)進(jìn)入該模式未定義指令終止 (und)支持軟件仿真
55、硬件的協(xié)處理器指令預(yù)取終止時(shí)進(jìn)入此模式 除用戶模式外,其它除用戶模式外,其它6 6種模式種模式均為均為特權(quán)模式特權(quán)模式。ARMARM內(nèi)部寄存器內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式許(或者可選為只允許)特權(quán)模式下訪問(wèn)。此外,特權(quán)模式可以自由下訪問(wèn)。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不的切換處理器模式,而用戶模式不能直接切換到別的模式。能直接切換到別的模式。未定義指令終止 (und)數(shù)據(jù)訪問(wèn)中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統(tǒng) (sys)2. ARM內(nèi)核體系結(jié)構(gòu)內(nèi)核體系結(jié)構(gòu)84
56、異常模式異常模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)數(shù)據(jù)訪問(wèn)終止時(shí)進(jìn)入該模式 未定義 (und)支持軟件仿真硬件的協(xié)處理器指令預(yù)取終止時(shí)進(jìn)入此模式 未定義指令終止 (und) 數(shù)據(jù)訪問(wèn)中止 (abt) 管理 (svc) 中斷 (ir
57、q) 快中斷 (fiq) 這五種模式稱(chēng)為這五種模式稱(chēng)為異常模式異常模式。它們除了可以通過(guò)程序切換進(jìn)入外,它們除了可以通過(guò)程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。模式的狀態(tài)不可靠。2. ARM內(nèi)核體系結(jié)構(gòu)內(nèi)核體系結(jié)構(gòu)85用戶和系統(tǒng)模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)與用戶模式類(lèi)似,
58、但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位時(shí)進(jìn)入此模式數(shù)據(jù)訪問(wèn)中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)數(shù)據(jù)訪問(wèn)終止時(shí)進(jìn)入該模式未定義指令終止 (und)支持軟件仿真硬件的協(xié)處理器指令預(yù)取終止時(shí)進(jìn)入此模式 這兩種模式都不能由異常進(jìn)入,這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式戶模式的限制。操作
59、系統(tǒng)在該模式下訪問(wèn)用戶模式的寄存器就比較方下訪問(wèn)用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問(wèn)一些受控的可以使用這個(gè)模式訪問(wèn)一些受控的資源。資源。 系統(tǒng) (sys) 用戶 (usr)2. ARM內(nèi)核體系結(jié)構(gòu)內(nèi)核體系結(jié)構(gòu)862. ARM內(nèi)核體系結(jié)構(gòu)內(nèi)核體系結(jié)構(gòu)5)寄存器組)寄存器組ARM處理器內(nèi)部有處理器內(nèi)部有37個(gè)個(gè)32位寄存器。位寄存器。在不同的工作模式和處理器狀態(tài)下,程序在不同的工作模式和處理器狀態(tài)下,程序可以訪問(wèn)的寄存器也不盡相同。可以訪問(wèn)的寄存器也不盡相同。87寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版搬運(yùn)企業(yè)節(jié)能減排合同范本3篇
- 2025年度木材加工設(shè)備租賃及維護(hù)服務(wù)合同范本4篇
- 2025版民爆物品裝卸作業(yè)環(huán)境保護(hù)合同4篇
- 2025年度個(gè)人消費(fèi)分期付款合同范本(2025版)3篇
- 農(nóng)業(yè)機(jī)械化與農(nóng)村振興人才培育考核試卷
- 2025版事業(yè)單位聘用合同正規(guī)范本(含試用期)2篇
- 2025版人工智能研發(fā)中心錄用合同范本3篇
- 2025年公益活動(dòng)加盟合同
- 2025年大型活動(dòng)合作協(xié)議
- 2025年度高科技實(shí)驗(yàn)室租賃合同4篇
- 【探跡科技】2024知識(shí)產(chǎn)權(quán)行業(yè)發(fā)展趨勢(shì)報(bào)告-從工業(yè)轟鳴到數(shù)智浪潮知識(shí)產(chǎn)權(quán)成為競(jìng)爭(zhēng)市場(chǎng)的“矛與盾”
- 《中國(guó)政法大學(xué)》課件
- GB/T 35270-2024嬰幼兒背帶(袋)
- 遼寧省沈陽(yáng)名校2025屆高三第一次模擬考試英語(yǔ)試卷含解析
- 2024-2025學(xué)年高二上學(xué)期期末數(shù)學(xué)試卷(新題型:19題)(基礎(chǔ)篇)(含答案)
- 2022版藝術(shù)新課標(biāo)解讀心得(課件)小學(xué)美術(shù)
- Profinet(S523-FANUC)發(fā)那科通訊設(shè)置
- 醫(yī)學(xué)教程 常見(jiàn)化療藥物歸納
- 統(tǒng)編版九年級(jí)歷史下冊(cè)第一單元教案教學(xué)設(shè)計(jì)
- GB/T 25000.51-2016系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評(píng)價(jià)(SQuaRE)第51部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測(cè)試細(xì)則
- 外科學(xué)試題庫(kù)及答案(共1000題)
評(píng)論
0/150
提交評(píng)論