單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51 單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil 軟件是目前最流行開發(fā)MCS-51 系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持Keil 即可看出。Keil 提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil 軟件需要Pentium 或以上的CPU,16MB或更多RAM、20M 以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51 系列單片機(jī)的愛好者來說是十分必要的,如果你使用C 語言編程,那么Keil 幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用C 語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。我們將通過一些實(shí)例來學(xué)習(xí)Keil 軟件的使用,在這一部份我們將學(xué)習(xí)如何輸入源程序,建立工程、對(duì)工程進(jìn)行詳細(xì)的設(shè)置,以及如何將源程序變?yōu)槟繕?biāo)代碼。圖1 所示電路圖使用89C51 單片機(jī)作為主芯片,這種單片機(jī)性屬于MCS-51 系列,其內(nèi)部有4K 的FLASH ROM,可以反復(fù)擦寫,非常適于做實(shí)驗(yàn)。89C51 的P1 引腳上接8 個(gè)發(fā)光二極管,P3.2~P3.4 引腳上接4 個(gè)按鈕開關(guān),我們的第一個(gè)任務(wù)是讓接在P1 引腳上的發(fā)光二極管依次循環(huán)點(diǎn)亮。 一、Keil 工程的建立首先啟動(dòng)Keil 軟件的集成開發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊uVision 的圖標(biāo)以啟動(dòng)該軟件。UVison啟動(dòng)后,程序窗口的左邊有一個(gè)工程管理窗口,該窗口有3 個(gè)標(biāo)簽,分別是Files、Regs、和Books,這三個(gè)標(biāo)簽頁分別顯示當(dāng)前項(xiàng)目的文件結(jié)構(gòu)、CPU 的寄存器及部份特殊功能寄存器的值(調(diào)試時(shí)才出現(xiàn))和所選CPU 的附加說明文件,如果是第一次啟動(dòng)Keil,那么這三個(gè)標(biāo)簽頁全是空的。
上傳時(shí)間: 2013-12-26
上傳用戶:liulinshan2010
1. 使用單片機(jī)內(nèi)部復(fù)位電路的可靠性設(shè)計(jì)LPC932 單片機(jī)只能工作在3V 供電電壓下其外圍器件既可以選用3V 接口器件也可以選用5V 接口器件當(dāng)用戶決定使用內(nèi)部復(fù)位時(shí)為了保證單片機(jī)上電復(fù)位100 可靠必須在復(fù)位引腳接一上拉電阻如5 10K 如果單片機(jī)使用3V 電源電壓外圍器件使用5V 電源電壓準(zhǔn)確的復(fù)位電路設(shè)計(jì)方法如圖1 所示如果單片機(jī)使用3V 電源電壓外圍器件使用3V 電源電壓準(zhǔn)確的復(fù)位電路設(shè)計(jì)方法如圖2 所示 2. 使用單片機(jī)外部復(fù)位電路的可靠性設(shè)計(jì)LPC932 單片機(jī)只能工作在3V 供電電壓下其外圍器件既可以選用3V 接口器件也可以選用5V 接口器件當(dāng)用戶決定使用外部復(fù)位電源監(jiān)控器件時(shí)為了保證單片機(jī)上電復(fù)位100 可靠一定要注意根據(jù)外圍器件的供電電源方式選擇復(fù)位電源監(jiān)控器件如果單片機(jī)使用3V 電源電壓外圍器件使用5V 電源電壓準(zhǔn)確的復(fù)位電路設(shè)計(jì)方法如圖3 所示請(qǐng)選擇PHILIPS 半導(dǎo)體公司生產(chǎn)的MAX809L 等合適的電源監(jiān)控器件如果單片機(jī)使用3V 電源電壓外圍器件使用3V 電源電壓準(zhǔn)確的復(fù)位電路設(shè)計(jì)方法如圖4 所示請(qǐng)選擇PHILIPS 半導(dǎo)體公司生產(chǎn)的MAX809R 等合適的電源監(jiān)控器件.
上傳時(shí)間: 2014-03-24
上傳用戶:aix008
提出了一種改進(jìn)的LSM-ALSM子空間模式識(shí)別方法,將LSM的旋轉(zhuǎn)策略引入ALSM,使子空間之間互不關(guān)聯(lián)的情況得到改善,提高了ALSM對(duì)相似樣本的區(qū)分能力。討論中以性能函數(shù)代替經(jīng)驗(yàn)函數(shù)來確定拒識(shí)規(guī)則的參數(shù),實(shí)現(xiàn)了識(shí)別率、誤識(shí)率與拒識(shí)率之間的最佳平衡;通過對(duì)有限字符集的實(shí)驗(yàn)結(jié)果表明,LSM-ALSM算法有效地改善了分類器的識(shí)別率和可靠性。關(guān) 鍵 詞 學(xué)習(xí)子空間; 性能函數(shù); 散布矩陣; 最小描述長度在子空間模式識(shí)別方法中,一個(gè)線性子空間代表一個(gè)模式類別,該子空間由反映類別本質(zhì)的一組特征矢量張成,分類器根據(jù)輸入樣本在各子空間上的投影長度將其歸為相應(yīng)的類別。典型的子空間算法有以下三種[1, 2]:CLAFIC(Class-feature Information Compression)算法以相關(guān)矩陣的部分特征向量來構(gòu)造子空間,實(shí)現(xiàn)了特征信息的壓縮,但對(duì)樣本的利用為一次性,不能根據(jù)分類結(jié)果進(jìn)行調(diào)整和學(xué)習(xí),對(duì)樣本信息的利用不充分;學(xué)習(xí)子空間方法(Leaning Subspace Method, LSM)通過旋轉(zhuǎn)子空間來拉大樣本所屬類別與最近鄰類別的距離,以此提高分類能力,但對(duì)樣本的訓(xùn)練順序敏感,同一樣本訓(xùn)練的順序不同對(duì)子空間構(gòu)造的影響就不同;平均學(xué)習(xí)子空間算法(Averaged Learning Subspace Method, ALSM)是在迭代訓(xùn)練過程中,用錯(cuò)誤分類的樣本去調(diào)整散布矩陣,訓(xùn)練結(jié)果與樣本輸入順序無關(guān),所有樣本平均參與訓(xùn)練,其不足之處是各模式的子空間之間相互獨(dú)立。針對(duì)以上問題,本文提出一種改進(jìn)的子空間模式識(shí)別方法。子空間模式識(shí)別的基本原理1.1 子空間的分類規(guī)則子空間模式識(shí)別方法的每一類別由一個(gè)子空間表示,子空間分類器的基本分類規(guī)則是按矢量在各子空間上的投影長度大小,將樣本歸類到最大長度所對(duì)應(yīng)的類別,在類x()iω的子空間上投影長度的平方為()211,2,,()argmax()jMTkkjpg===Σx (1)式中 函數(shù)稱為分類函數(shù);為子空間基矢量。兩類的分類情況如圖1所示。
上傳時(shí)間: 2013-12-25
上傳用戶:熊少鋒
1 MCS-51單片機(jī)系統(tǒng)擴(kuò)展的基本概念2 程序存儲(chǔ)器擴(kuò)展技術(shù)3 數(shù)據(jù)存儲(chǔ)器擴(kuò)展4 輸入/輸出口擴(kuò)展技術(shù)MCS-51單片機(jī)系統(tǒng)擴(kuò)展的基本概念1.1 MCS-51單片機(jī)最小應(yīng)用系統(tǒng)1.2 MCS-51單片機(jī)的外部擴(kuò)展性能MCS-51單片機(jī)最小應(yīng)用系統(tǒng)1.8051/8751最小應(yīng)用系統(tǒng)(如圖1所示)。由于集成度的限制,這種最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。其應(yīng)用特點(diǎn)是:(1)全部I/O口線均可供用戶使用。(2)內(nèi)部存儲(chǔ)器容量有限(只有4KB地址空間)。(3)應(yīng)用系統(tǒng)開發(fā)具有特殊性。2.8031最小應(yīng)用系統(tǒng)8031是片內(nèi)無程序存儲(chǔ)器的單片機(jī)芯片,因此,其最小應(yīng)用系統(tǒng)應(yīng)在片外擴(kuò)展EPROM。圖2為用8031外接程序存儲(chǔ)器構(gòu)成的最小系統(tǒng)。
標(biāo)簽: MCS 51 單片機(jī)系統(tǒng) 擴(kuò)展技術(shù)
上傳時(shí)間: 2014-04-03
上傳用戶:MATAIYES
本文介紹使用AT89C2051 制作的一種發(fā)音電路, 各種聲音通過編程實(shí)現(xiàn), 靈活方便。原理圖如圖1 所示。圖1 發(fā)音電路原理該電路利用方波諧波成份豐富的特點(diǎn),編程采用計(jì)時(shí)器延遲法發(fā)音, 即每個(gè)音的半周期計(jì)時(shí)中斷一次, 而使輸出P110 (或其他IöO 口) 反相, 重復(fù)執(zhí)行產(chǎn)生某種頻率的信號(hào)。例如: 中音DO 的頻率為523Hz, 其周期為1912Ls, 半周期為956Ls, 若初始P110= 1, 經(jīng)956Ls 后應(yīng)使P110= 0, 再經(jīng)956Ls 恢復(fù)P110= 1, 這樣就可發(fā)出中音DO。
上傳時(shí)間: 2013-10-11
上傳用戶:Altman
模塊化LED大屏幕顯示器的設(shè)計(jì):LED大屏幕顯示器由于其醒目! 內(nèi)容靈活多變等特點(diǎn)" 已經(jīng)越來越多地應(yīng)用于廣告! 信息發(fā)布! 交通指示等公共場(chǎng)所" 取得了良好效果LED顯示屏主要分為數(shù)碼顯示和點(diǎn)陣顯示兩大類" 本文只討論點(diǎn)陣顯示$ 目前的627 顯示屏基本上都是先由用戶提出要求" 生產(chǎn)廠家根據(jù)需要訂做$ 每次都要重復(fù)設(shè)計(jì)電路和機(jī)械結(jié)構(gòu)" 造成資源浪費(fèi)" 而且若用戶的需求改變" 改動(dòng)將十分困難$實(shí)際上不論顯示屏的大小" 其原理都是相同的"因此完全可以設(shè)計(jì)出一種標(biāo)準(zhǔn)化% 模塊化的LED 顯示屏" 針對(duì)不同的需要" 只需要簡單組合相應(yīng)的模塊即可$ 本文介紹的就是一種模塊化的LED 顯示屏" 可以根據(jù)需要靈活改變大小" 并可以脫離計(jì)算機(jī)獨(dú)立運(yùn)行" 還可以實(shí)現(xiàn)如閃爍! 滾動(dòng)顯示等特效$ 對(duì)整體式顯示屏刷新率不足發(fā)生閃爍的常見問題" 在這個(gè)設(shè)計(jì)中由于被分割成小模塊" 不再成為問題$
上傳時(shí)間: 2013-10-09
上傳用戶:fxf126@126.com
摘要:以單片機(jī)89C51 為核心設(shè)計(jì)了一種頻率計(jì)。在設(shè)計(jì)中應(yīng)用單片機(jī)的數(shù)學(xué)運(yùn)算和控制功能,實(shí)現(xiàn)了測(cè)量量程的自動(dòng)切換,既滿足測(cè)量精度的要求,又滿足系統(tǒng)反應(yīng)時(shí)間的要求。關(guān)鍵詞:頻率測(cè)量;單片機(jī);數(shù)據(jù)處理 頻率計(jì)由單片機(jī)89C51 、信號(hào)予處理電路、串行通信電路、測(cè)量數(shù)據(jù)顯示電路和系統(tǒng)軟件所組成,其中信號(hào)予處理電路包含待測(cè)信號(hào)放大、波形變換、波形整形和分頻電路。系統(tǒng)硬件框圖如圖1 所示。信號(hào)予處理電路中的放大器實(shí)現(xiàn)對(duì)待測(cè)信號(hào)的放大,降低對(duì)待測(cè)信號(hào)的幅度要求;波形變換和波形整形電路實(shí)現(xiàn)把正弦波樣的正負(fù)交替的信號(hào)波形變換成可被單片機(jī)接受的TTL/ CMOS 兼容信號(hào);分頻電路用于擴(kuò)展單片機(jī)的頻率測(cè)量范圍并實(shí)現(xiàn)單片機(jī)頻率測(cè)量和周期測(cè)量使用統(tǒng)一的輸入信號(hào)。
標(biāo)簽: 單片機(jī) 頻率計(jì)設(shè)
上傳時(shí)間: 2013-10-16
上傳用戶:幾何公差
鼠標(biāo)有RS232串口和PS/2二種接口,在單片機(jī)應(yīng)用中,由于PS/2鼠標(biāo)是1yrL電平,和單片接口更方便,通常PS/2鼠標(biāo)控制芯片采用TP8452。以TP8452為例說明PS/2鼠標(biāo)的工作原理,其他的PS/2鼠標(biāo)控制芯片均與TP8452兼容。TP8452能接受3個(gè)按鍵和2組光電探頭的信號(hào),組合成一定格式的信息,傳送給系統(tǒng)。TP8452還具有按鍵去抖和噪聲抑制功能,組成完善的信號(hào)采集前端電路。在單片機(jī)系統(tǒng)中,可以直接利用鼠標(biāo)作為輸入設(shè)備,也可以單獨(dú)使用TP8452,作為轉(zhuǎn)速、距離測(cè)量的預(yù)處理電路。由于TP8452的存在,不論是高速旋轉(zhuǎn),還是慢速爬行,甚至正反振蕩,都不會(huì)影響其測(cè)量的準(zhǔn)確性。1 PS/2鼠標(biāo)原標(biāo)圖采用TP8452的典型3鍵鼠標(biāo)原理圖如圖1所示。GX、GY是2組光電探頭,檢測(cè)滾輪的轉(zhuǎn)動(dòng)。每組光電探頭內(nèi)有2個(gè)光敏接收管,間隔為滾輪格柵的1/4,根據(jù)2個(gè)信號(hào)的相位關(guān)系,TP8452可以確定滾輪的正反轉(zhuǎn)向。K1、K2、K3是3個(gè)按鍵。TP8452連續(xù)監(jiān)視2個(gè)滾輪和3個(gè)按鍵,一旦有動(dòng)作,立即將信息通過PS/2接口向系統(tǒng)報(bào)告。
標(biāo)簽: PS 鼠標(biāo) 單片機(jī) 接口
上傳時(shí)間: 2013-10-29
上傳用戶:xuanjie
九.輸入/輸出保護(hù)為了支持多任務(wù),80386不僅要有效地實(shí)現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護(hù)。 這里下載本文源代碼。 <一>輸入/輸出保護(hù)80386采用I/O特權(quán)級(jí)IPOL和I/O許可位圖的方法來控制輸入/輸出,實(shí)現(xiàn)輸入/輸出保護(hù)。 1.I/O敏感指令輸入輸出特權(quán)級(jí)(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問I/O空間中所有地址的最外層特權(quán)級(jí)。IOPL的值在如下圖所示的標(biāo)志寄存器中。 標(biāo) 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級(jí)執(zhí)行的程序所訪問。I/O許可位圖在任務(wù)狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護(hù)方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設(shè)置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時(shí)才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當(dāng)前特權(quán)級(jí)不在I/O特權(quán)級(jí)外層時(shí),可以正常執(zhí)行所列的全部I/O敏感指令;當(dāng)特權(quán)級(jí)在I/O特權(quán)級(jí)外層時(shí),執(zhí)行CLI和STI指令將引起通用保護(hù)異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯(cuò)碼為0的通用保護(hù)異常。 由于每個(gè)任務(wù)使用各自的EFLAGS值和擁有自己的TSS,所以每個(gè)任務(wù)可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實(shí)模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實(shí)際要求需要。因?yàn)檫@樣做會(huì)使得在特權(quán)級(jí)3執(zhí)行的應(yīng)用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實(shí)際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問I/O地址時(shí)發(fā)生沖突,從而避免任務(wù)甲和任務(wù)乙使用使用獨(dú)享設(shè)備時(shí)發(fā)生沖突。 因此,在IOPL的基礎(chǔ)上又采用了I/O許可位圖。I/O許可位圖由二進(jìn)制位串組成。位串中的每一位依次對(duì)應(yīng)一個(gè)I/O地址,位串的第0位對(duì)應(yīng)I/O地址0,位串的第n位對(duì)應(yīng)I/O地址n。如果位串中的第位為0,那么對(duì)應(yīng)的I/O地址m可以由在任何特權(quán)級(jí)執(zhí)行的程序訪問;否則對(duì)應(yīng)的I/O地址m只能由在IOPL特權(quán)級(jí)或更內(nèi)層特權(quán)級(jí)執(zhí)行的程序訪問。如果在I/O外層特權(quán)級(jí)執(zhí)行的程序訪問位串中位值為1的位所對(duì)應(yīng)的I/O地址,那么將引起通用保護(hù)異常。 I/O地址空間按字節(jié)進(jìn)行編址。一條I/O指令最多可涉及四個(gè)I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當(dāng)一條I/O指令涉及多個(gè)I/O地址時(shí),只有這多個(gè)I/O地址所對(duì)應(yīng)的I/O許可位圖中的位都為0時(shí),該I/O指令才能被正常執(zhí)行,如果對(duì)應(yīng)位中任一位為1,就會(huì)引起通用保護(hù)異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進(jìn)制位串最大長度是64K個(gè)位,即位圖的有效部分最大為8K字節(jié)。一個(gè)任務(wù)實(shí)際需要使用的I/O許可位圖大小通常要遠(yuǎn)小于這個(gè)數(shù)目。 當(dāng)前任務(wù)使用的I/O許可位圖存儲(chǔ)在當(dāng)前任務(wù)TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲(chǔ),所以位串所含的位數(shù)總被認(rèn)為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內(nèi)偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達(dá)8K字節(jié),所以開始偏移應(yīng)小于56K,但必須大于等于104,因?yàn)門SS中前104字節(jié)為TSS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問許可檢查細(xì)節(jié)保護(hù)模式下處理器在執(zhí)行I/O指令時(shí)進(jìn)行許可檢查的細(xì)節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開始偏移;(3)計(jì)算I/O地址對(duì)應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計(jì)算位偏移以形成屏蔽碼值,即計(jì)算I/O地址對(duì)應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯(cuò)碼為0的通用保護(hù)故障;(6)若不越界,則從位圖中讀對(duì)應(yīng)字節(jié)及下一個(gè)字節(jié);(7)把讀出的兩個(gè)字節(jié)與屏蔽碼進(jìn)行與運(yùn)算,若結(jié)果不為0表示檢查未通過,則產(chǎn)生出錯(cuò)碼為0的通用保護(hù)故障;(8)進(jìn)行I/O訪問。設(shè)某一任務(wù)的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對(duì)應(yīng)I/O端口00H—3FH DB 10000000B ;對(duì)應(yīng)I/O端口40H—47H DB 01100000B ;對(duì)用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對(duì)應(yīng)I/O端口50H—0FFFFH DB 0FFH ;位圖結(jié)束字節(jié)TSSLen = $TSSSEG ENDS 再假設(shè)IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會(huì)引起通用保護(hù)異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實(shí)行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細(xì)節(jié)可見,不論是否必要,當(dāng)進(jìn)行許可位檢查時(shí),80386總是從I/O許可位圖中讀取兩個(gè)字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個(gè)字節(jié)。例如,上面的第(8)條指令要對(duì)I/O位圖中的兩個(gè)位進(jìn)行檢查,其低位是某個(gè)字節(jié)的最高位,高位是下一個(gè)字節(jié)的最低位??梢娂词怪灰獧z查兩個(gè)位,也可能需要讀取兩個(gè)字節(jié)。另一方面,最多檢查四個(gè)連續(xù)的位,即最多也只需讀取兩個(gè)字節(jié)。所以每次要讀取兩個(gè)字節(jié)。這也是在判別是否越界時(shí)再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時(shí)產(chǎn)生越界,必須在I/O許可位圖的最后填加一個(gè)全1的字節(jié),即0FFH。此全1的字節(jié)應(yīng)填加在最后一個(gè)位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當(dāng)TSS的界限大于I/O許可位圖開始偏移加8K時(shí),I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進(jìn)行。當(dāng)TSS的界限不大于I/O許可位圖開始偏移加8K時(shí),I/O許可位圖有效部分就不到8K字節(jié),于是對(duì)較小I/O地址訪問的許可檢查根據(jù)位圖進(jìn)行,而對(duì)較大I/O地址訪問的許可檢查總被認(rèn)為不可訪問而引起通用保護(hù)故障。因?yàn)檫@時(shí)會(huì)發(fā)生字節(jié)越界而引起通用保護(hù)異常,所以在這種情況下,可認(rèn)為不足的I/O許可位圖的高端部分全為1。利用這個(gè)特點(diǎn),可大大節(jié)約TSS中I/O許可位圖占用的存儲(chǔ)單元,也就大大減小了TSS段的長度。 <二>重要標(biāo)志保護(hù)輸入輸出的保護(hù)與存儲(chǔ)在標(biāo)志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實(shí)現(xiàn)輸入輸出保護(hù)。類似地,對(duì)EFLAGS中的IF位也必須加以保護(hù),否則CLI和STI作為敏感指令對(duì)待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對(duì)EFLAGS中的這三個(gè)字段的處理比較特殊,只有在較高特權(quán)級(jí)執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級(jí)下對(duì)這三個(gè)字段的處理情況。 不同特權(quán)級(jí)對(duì)標(biāo)志寄存器特殊字段的處理 特權(quán)級(jí) VM標(biāo)志字段 IOPL標(biāo)志字段 IF標(biāo)志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權(quán)級(jí)0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對(duì)于IOPL同級(jí)或更內(nèi)層特權(quán)級(jí)執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級(jí)不滿足上述條件的情況下,當(dāng)執(zhí)行POPF指令和IRET指令時(shí),如果試圖修改這些字段中的任何一個(gè)字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標(biāo)志中的VM位總為0。 <三>演示輸入輸出保護(hù)的實(shí)例(實(shí)例九)下面給出一個(gè)用于演示輸入輸出保護(hù)的實(shí)例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過任務(wù)門調(diào)用任務(wù),實(shí)現(xiàn)任務(wù)嵌套。 1.演示步驟實(shí)例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實(shí)模式下做必要準(zhǔn)備后,切換到保護(hù)模式;(2)進(jìn)入保護(hù)模式的臨時(shí)代碼段后,把演示任務(wù)的TSS段描述符裝入TR,并設(shè)置演示任務(wù)的堆棧;(3)進(jìn)入演示代碼段,演示代碼段的特權(quán)級(jí)是0;(4)通過任務(wù)門調(diào)用測(cè)試任務(wù)1。測(cè)試任務(wù)1能夠順利進(jìn)行;(5)通過任務(wù)門調(diào)用測(cè)試任務(wù)2。測(cè)試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導(dǎo)致通用保護(hù)異常;(6)通過任務(wù)門調(diào)用測(cè)試任務(wù)3。測(cè)試任務(wù)3演示I/O敏感指令如何引起通用保護(hù)異常;(7)通過任務(wù)門調(diào)用測(cè)試任務(wù)4。測(cè)試任務(wù)4演示特權(quán)指令如何引起通用保護(hù)異常;(8)從演示代碼轉(zhuǎn)臨時(shí)代碼,準(zhǔn)備返回實(shí)模式;(9)返回實(shí)模式,并作結(jié)束處理。
上傳時(shí)間: 2013-12-11
上傳用戶:nunnzhy
基于CAN總線的智能尋位制造系統(tǒng) 智能尋位制造系統(tǒng)的組成網(wǎng)絡(luò)化智能尋位制造系統(tǒng)的概念是將智能尋位,工藝規(guī)劃# 加工信息生成# 加工設(shè)備控制等分布于制造系統(tǒng)中不同物理位置的獨(dú)立單元! 借助實(shí)時(shí)控制網(wǎng)絡(luò)集成為一有機(jī)整體! 從而實(shí)現(xiàn)單元間的高速信息交換! 并通過管理計(jì)算機(jī)中的動(dòng)態(tài)調(diào)度軟件! 協(xié)調(diào)整個(gè)系統(tǒng)的高效運(yùn)行" 據(jù)此思路構(gòu)成的網(wǎng)絡(luò)化智能尋位制造系統(tǒng)的總體結(jié)構(gòu)如圖所示.
標(biāo)簽: CAN 總線 制造系統(tǒng)
上傳時(shí)間: 2013-11-13
上傳用戶:wdq1111
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1