研究了散熱器底面尺寸長(zhǎng)寬比、鰭的取向及高度對(duì)第一諧振頻率、第一諧振頻率處電場(chǎng)增益及輻射方向的影響。并得出結(jié)論:當(dāng)散熱器底面的長(zhǎng)寬比≥1時(shí),隨著寬邊尺寸的增加,第一諧振頻率基本保持在2.6 GHz,電場(chǎng)增益基本不變,約為8.3 dB,輻射方向變化較大;鰭的取向?qū)﹄妶?chǎng)增益及輻射方向影響不大,但縱向鰭高度對(duì)諧振頻率影響較大。
上傳時(shí)間: 2014-12-26
上傳用戶:asaqq
摘要:討論了MCS一51單片機(jī)匯編語(yǔ)言中的偽指令,并介紹若干主要的經(jīng)常用到的偽指令使用方法。關(guān)鍵詞:?jiǎn)纹瑱C(jī);偽指令;ORG;EQU;DB;DW;BIT
上傳時(shí)間: 2013-12-21
上傳用戶:283155731
FEATURES400 MSPS internal clock speedIntegrated 10-bit DAC32-bit tuning wordPhase noise ≤ –120 dBc/Hz @ 1 kHz offset (DAC output)Excellent dynamic performance>75 dB SFDR @ 160 MHz (±100 kHz offset) AOUTSerial I/O control1.8 V power supplySoftware and hardware controlled power-down48-lead TQFP/EP packageSupport for 5 V input levels on most digital inputsPLL REFCLK multiplier (4× to 20×)Internal oscillator; can be driven by a single crystalPhase modulation capabilityMultichip synchronization
上傳時(shí)間: 2014-12-04
上傳用戶:axin881314
一、用途D485C型單片機(jī)用TTL/RS-485/RS-422轉(zhuǎn)換器用于將單片機(jī)的RS-232串行口(TTL電平)轉(zhuǎn)換成RS-485或者RS-422電平,可以將單片機(jī)串行口的通信距離延長(zhǎng)至1200m以上(9600bps時(shí)),可以用于單片機(jī)之間、單片機(jī)與PC機(jī)之間構(gòu)成遠(yuǎn)程多機(jī)通信網(wǎng)絡(luò)。二、硬件安裝D485C型轉(zhuǎn)換器外形為DB-9/DB-9轉(zhuǎn)接盒大小,其中DB-9(孔座)一端接單片機(jī)的RS-232串行口(只用到RXD、TXD、GND)以及+5V電源。DB-9針座為轉(zhuǎn)換后的RS-485、RS-422信號(hào)。三、軟件說(shuō)明本產(chǎn)品均無(wú)需任何初始化設(shè)置!無(wú)須收發(fā)轉(zhuǎn)換控制信號(hào)!只用到單片機(jī)RS-232串行口的RXD(收)、TXD(發(fā))、GND(地)信號(hào),加上獨(dú)有的內(nèi)部零延時(shí)自動(dòng)收發(fā)轉(zhuǎn)換技術(shù),確保適合所有軟件!四、性能說(shuō)明D485C型轉(zhuǎn)換器需外接5V電源,最高速率115.2Kbps。外接電源要求:電壓5V±0.5V,電流>10mA。五、D485C的外形圖、引腳分配D485C作為TTL/RS-485轉(zhuǎn)換器(注意跳線短接位置)
上傳時(shí)間: 2013-12-26
上傳用戶:獨(dú)孤求源
AVR mega128開(kāi)發(fā)板 聯(lián)系 楊迪 15336417867 0531-55508458 QQ:1347978253 http://www.easyele.cn 產(chǎn)品概述:AVR mega128開(kāi)發(fā)板是AVRVi開(kāi)發(fā)的基于Atmega128單片機(jī)的綜合學(xué)習(xí)開(kāi)發(fā)系統(tǒng),板載學(xué)習(xí)資源,集成JTAG仿真器和ISP下載功能,核心板可拆卸獨(dú)立使用,是你學(xué)習(xí)AVR單片機(jī),參加各類電子設(shè)計(jì)競(jìng)賽,快速搭建產(chǎn)品的不二選擇。AVR mega128開(kāi)發(fā)板亦可以作為單片機(jī)培訓(xùn),高校實(shí)驗(yàn)室,課程設(shè)計(jì)等的實(shí)驗(yàn)器材。為了更好的支持客戶的學(xué)習(xí)和開(kāi)發(fā),此開(kāi)發(fā)板板通訊接口升級(jí)為USB接口,方便計(jì)算機(jī)沒(méi)有串口的朋友,學(xué)習(xí)起來(lái)更加簡(jiǎn)捷。貨號(hào):EasyAVRM128SK-A 規(guī)格: 套 重量:300克 單價(jià)498/套。 參數(shù)特色: 1.采用核心板和主板分離的形式,在系統(tǒng)的學(xué)習(xí)之后,可以把核心板直接用于產(chǎn)品中,快速搭建系統(tǒng)。 2.開(kāi)發(fā)板上集成了AVR JTAG ICE仿真器和AVR ISP編程器,超高性價(jià)比。 3.您只需要再擁有一臺(tái)計(jì)算機(jī),而不需要購(gòu)買仿真器和編程器就可以學(xué)習(xí)開(kāi)發(fā)了。 4.信號(hào)調(diào)理電路,輸入0~10V,軌至軌信號(hào)調(diào)理。 5.系統(tǒng)資源適中,性價(jià)比高。 6.豐富的學(xué)習(xí)資源,完善的產(chǎn)品支持。 7.EasyAVR教給你從開(kāi)發(fā)環(huán)境建立,軟件編譯,到下載,傳真,硬件設(shè)計(jì)等一系列電子工程師必備的技能,真正學(xué)以致用。 AVR mega128開(kāi)發(fā)板板上資源: M128 所有引腳引出,可以利用杜邦頭很方便的進(jìn)行接插擴(kuò)展,標(biāo)準(zhǔn)2.54針距,可以直接插在萬(wàn)用板上使用,便于進(jìn)行實(shí)驗(yàn) m128 DB Core 自帶5V、3V3 雙路電源穩(wěn)壓 m128 DB Core 外部晶振多種選擇,既可以使用板上已經(jīng)焊接好的14.7456M的晶振,也可以自己根據(jù)自己的需求擴(kuò)展,晶振的切換通過(guò)跳線實(shí)現(xiàn)m128 DB Core 帶有JTAG ISP 標(biāo)準(zhǔn)接口 m128 DB Core 自帶一路標(biāo)準(zhǔn)RS232-TTL轉(zhuǎn)換電路,方便實(shí)現(xiàn)串口通信 AVR mega128 開(kāi)發(fā)板底板:板載JTAG 仿真器 板載STK500 下載內(nèi)核 2路獨(dú)立可調(diào)的信號(hào)調(diào)理電路,可控增益G=0.1-10 2路RS232 串行接口 1路RS485 接口 8 路LED 顯示 4 位動(dòng)態(tài)7 段數(shù)碼管,利用74HC595進(jìn)行驅(qū)動(dòng) 4 位獨(dú)立按鍵 板載IIC 總線PCF8563 實(shí)時(shí)鐘芯片 板載IIC 總線EEPROM AT24c01 1 路有源蜂鳴器 1 路18B20 溫度傳感器接口,支持單總線器件。(12820可選:10元每個(gè)) 1602LCD 接口(送1602液晶) 12232、12864 LCD 接口(LCD12864可選:80元每個(gè)) 想找一份好工作嗎? 你想成為一名電子設(shè)計(jì)工程師嗎? 你對(duì)電子設(shè)計(jì)有濃厚興趣,而沒(méi)有工具嗎? 看了很久的程序方面的書(shū)籍,卻沒(méi)有實(shí)踐的機(jī)會(huì)嗎? 需要開(kāi)發(fā)產(chǎn)品,想快速入門? 想?yún)⒓与娮釉O(shè)計(jì)大賽,機(jī)器人大賽嗎? 這個(gè)性價(jià)比高的專業(yè)工具是你的不二選擇,它不僅僅是一個(gè)AVR mega128 開(kāi)發(fā)板,他還是一個(gè)強(qiáng)大的開(kāi)發(fā)工具,通過(guò)它進(jìn)行學(xué)習(xí)后,對(duì)電子產(chǎn)品的設(shè)計(jì)有進(jìn)一步的認(rèn)知,建立起學(xué)習(xí)ARM,DSP,F(xiàn)PGA的良好基礎(chǔ)。AVR mega128 開(kāi)發(fā)板集成了AVR學(xué)習(xí)板,AVR開(kāi)發(fā)板,AVR編程器,AVR仿真器,AVR核心板的功能,并且可以分開(kāi)獨(dú)立使用。 銷售清單: 1、調(diào)試好的AVR mega128開(kāi)發(fā)板一塊(板載JTAG ISP 二合一,已經(jīng)寫(xiě)入自檢程序) 2、ATmega128核心板一塊 3、USB供電線一條 4、標(biāo)準(zhǔn)串口(RS232)通訊線纜一條 5、資料光盤(pán)一張 6、使用說(shuō)明書(shū)(實(shí)驗(yàn)講義)一本 7、保修卡即訂單清單一份 8、贈(zèng)送LCD1602液晶一塊
標(biāo)簽: mega AVR 128 開(kāi)發(fā)板
上傳時(shí)間: 2013-11-10
上傳用戶:zm7516678
8051單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù):第一節(jié) 8051 單片機(jī)系統(tǒng)擴(kuò)展概述第二節(jié) 單片機(jī)外部存儲(chǔ)器擴(kuò)展第三節(jié) 單片機(jī)輸入輸出(I/O)口擴(kuò)展及應(yīng)用第四節(jié) LED顯示器接口電路及顯示程序第五節(jié) 單片機(jī)鍵盤(pán)接口技術(shù)第六節(jié) 單片機(jī)與數(shù)模(D/A)及模數(shù)(A/D)轉(zhuǎn)換1、地址總線(Address Bus,簡(jiǎn)寫(xiě)為AB)地址總線可傳送單片機(jī)送出的地址信號(hào),用于訪問(wèn)外部存儲(chǔ)器單元或I/O端口。A 地址總線是單向的,地址信號(hào)只是由單片機(jī)向外發(fā)出。B 地址總線的數(shù)目決定了可直接訪問(wèn)的存儲(chǔ)器單元的數(shù)目。例如N位地址,可以產(chǎn)生2N個(gè)連續(xù)地址編碼,因此可訪問(wèn)2N個(gè)存儲(chǔ)單元,即通常所說(shuō)的尋址范圍為 2N個(gè)地址單元。MCS—51單片機(jī)有十六位地址線,因此存儲(chǔ)器展范圍可達(dá)216 = 64KB地址單元。C 掛在總線上的器件,只有地址被選中的單元才能與CPU交換數(shù)據(jù),其余的都暫時(shí)不能操作,否則會(huì)引起數(shù)據(jù)沖突。2、數(shù)據(jù)總線(Data Bus,簡(jiǎn)寫(xiě)為DB)數(shù)據(jù)總線用于在單片機(jī)與存儲(chǔ)器之間或單片機(jī)與I/O端口之間傳送數(shù)據(jù)。A 單片機(jī)系統(tǒng)數(shù)據(jù)總線的位數(shù)與單片機(jī)處理數(shù)據(jù)的字長(zhǎng)一致。例如MCS—51單片機(jī)是8位字長(zhǎng),所以數(shù)據(jù)總線的位數(shù)也是8位。B 數(shù)據(jù)總線是雙向的,即可以進(jìn)行兩個(gè)方向的數(shù)據(jù)傳送。3、控制總線(Control Bus,簡(jiǎn)寫(xiě)為CB)控制總線實(shí)際上就是一組控制信號(hào)線,包括單片機(jī)發(fā)出的,以及從其它部件送給單片機(jī)的各種控制或聯(lián)絡(luò)信號(hào)。對(duì)于一條控制信號(hào)線來(lái)說(shuō),其傳送方向是單向的,但是由不同方向的控制信號(hào)線組合的控制總線則表示為雙向的。總線結(jié)構(gòu)形式大大減少了單片機(jī)系統(tǒng)中連接線的數(shù)目,提高了系統(tǒng)的可靠性,增加了系統(tǒng)的靈活性。此外,總線結(jié)構(gòu)也使擴(kuò)展易于實(shí)現(xiàn),各功能部件只要符合總線規(guī)范,就可以很方便地接入系統(tǒng),實(shí)現(xiàn)單片機(jī)擴(kuò)展。
標(biāo)簽: 8051 單片機(jī) 系統(tǒng)擴(kuò)展 接口技術(shù)
上傳時(shí)間: 2013-10-18
上傳用戶:assef
基于單片機(jī)的紅外門進(jìn)控制系統(tǒng)設(shè)計(jì)與制作:我們所做的創(chuàng)新實(shí)驗(yàn)項(xiàng)目“基于單片機(jī)的紅外門控系統(tǒng)”已基本完成,現(xiàn)將其工作原理簡(jiǎn)要說(shuō)明。該系統(tǒng)主要分為兩大部分:一是紅外傳感器部分。二是單片機(jī)計(jì)數(shù)顯示控制部分。基本電路圖如下:其中紅外傳感器部分我們采用紅外對(duì)管實(shí)現(xiàn),紅外對(duì)管平行放置,平常處于接收狀態(tài),經(jīng)比較器輸出低電平,當(dāng)有人經(jīng)過(guò)時(shí),紅外線被擋住,接收管接收不到紅外線,經(jīng)比較器輸出高電平。這樣,當(dāng)有人經(jīng)過(guò)時(shí)便會(huì)產(chǎn)生一個(gè)電平的跳變。單片機(jī)控制部分主要是通過(guò)外部?jī)蓚€(gè)中斷判斷是否有人經(jīng)過(guò),如果有人經(jīng)過(guò),由于電平跳變的產(chǎn)生,進(jìn)入中斷服務(wù)程序,這里我們采用了兩對(duì)紅外傳感器接到兩個(gè)外部中斷口,中斷0作為入口,實(shí)現(xiàn)加1操作,中斷1作為出口,實(shí)現(xiàn)減1操作。另外,我們通過(guò)P0口控制室內(nèi)燈的亮暗,當(dāng)寄存器計(jì)數(shù)值為0時(shí),熄燈,不為0時(shí),燈亮。顯示部分,采用兩位數(shù)碼管動(dòng)態(tài)顯示,如有必要,可以很方便的擴(kuò)展為四位計(jì)數(shù)。精益求精!在實(shí)驗(yàn)過(guò)程中,我們走了非常多的彎路,做出來(lái)的東西根本不是自己想要的,我們本想做成室內(nèi)只有一個(gè)門的進(jìn)出計(jì)數(shù),原理已清楚,即在門的兩邊放置兩對(duì)紅外對(duì)管,進(jìn)出時(shí),擋住兩對(duì)對(duì)管的順序不同,因此,可判斷是進(jìn)入還是出去,從而實(shí)現(xiàn)加減計(jì)數(shù),編程時(shí),可分別在兩個(gè)中斷服務(wù)程序的入口置標(biāo)志位,根據(jù)標(biāo)志位判斷進(jìn)出,詳細(xì)內(nèi)容在程序部分。理論如此,但在實(shí)際過(guò)程中,還是發(fā)現(xiàn)實(shí)現(xiàn)不了上述功能,我們初步判定認(rèn)為是程序掌握得不夠好,相信隨著自己對(duì)單片機(jī)了解的深入,應(yīng)該會(huì)做出更好的 (因?yàn)槲覀兪桥R時(shí)學(xué)的單片機(jī)),程序的具體內(nèi)容如下: $MOD52 ORG 0000H LJMP MAIN ORG 0003H LJMP 0100H ORG 0013H LJMP 0150H ORG 0050HMAIN: CLR A MOV 30H , A ;初始化緩存區(qū) MOV 31H , A MOV 32H , A MOV 33H , A MOV R6 , A MOV R7 , A SETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB PX1NEXT1: ACALL HEXTOBCDD ;調(diào)用數(shù)制轉(zhuǎn)換子程序 ACALL DISPLAY ;調(diào)用顯示子程序 LJMP NEXT1 ORG 0100H ;中斷0服務(wù)程序 LCALL DELY mov 70h,#2 djnz 70h,next JBC F0,NEXT SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 MOV A , R7 ADD A , #1 MOV R7, A MOV A , R6 ADDC A , #0 MOV R6 , A CJNE R6 , #07H , NEXT CLR A MOV R6 , A MOV R7 , ANEXT: RETI ORG 0150H ;中斷1服務(wù)程序 LCALL DELY mov 70h,#2 djnz 70h,next2 JBC F0,NEXT2 SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 CLR C MOV A , R7 SUBB A , #1 MOV R7, A MOV A , R6 SUBB A , #0 MOV R6 , A CJNE R6 , #07H , NEXT2 CLR A MOV R6 , A MOV R7 , ANEXT2: RETI ORG 0200HHEXTOBCDD:MOV A , R6 ;由十六進(jìn)制轉(zhuǎn)化為十進(jìn)制 PUSH ACC MOV A , R7 PUSH ACC MOV A , R2 PUSH ACC CLR A MOV R3 , A MOV R4 , A MOV R5 , A MOV R2 , #10HHB3: MOV A , R7 ;將十六進(jìn)制中最高位移入進(jìn)位位中 RLC A MOV R7 , A MOV A , R6 RLC A MOV R6 , A MOV A , R5 ;每位數(shù)加上本身相當(dāng)于將這個(gè)數(shù)乘以2 ADDC A , R5 DA A MOV R5 , A MOV A , R4 ADDC A , R4 DA A ;十進(jìn)制調(diào)整 MOV R4 , A MOV A , R3 ADDC A , R3 DJNZ R2 , HB3 POP ACC MOV R2 , A POP ACC MOV R7 , A POP ACC MOV R6 , A RET ORG 0250HDISPLAY: MOV R0 , #30H MOV A , R5 ANL A , #0FH MOV @R0 , A MOV A , R5 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV R0 , #30H MOV R2 , #11111110BAGAIN: MOV A , R2 MOV P2 , A MOV A , @R0 MOV DPTR , #TAB MOVC A , @A+DPTR MOV P1 , A ACALL DELAY INC R0 MOV A , R2 RL A MOV R2 , A JB ACC.4 , AGAIN RETTAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段碼表DELY: MOV R1,#80D1: MOV R2,#100 DJNZ R2,$ DJNZ R1,D1 RET DELAY: MOV TMOD , #01H ;延時(shí)子程序 MOV TL0 , #0FEH MOV TH0 , #0FEH SETB TR0WAIT: JNB TF0 , WAIT CLR TF0 CLR TR0 RETDELY0: MOV R1, #200D3: MOV R2,#250 DJNZ R2,$ DJNZ R1,D3 RET END 該系統(tǒng)實(shí)際應(yīng)用廣泛。可用在生產(chǎn)線上產(chǎn)品數(shù)量統(tǒng)計(jì)、公交車智能計(jì)數(shù)問(wèn)候(需添加語(yǔ)音芯片)、超市內(nèi)人數(shù)統(tǒng)計(jì)等公共場(chǎng)合。另外,添加串口通信部分便可實(shí)現(xiàn)與PC數(shù)據(jù)交換的功能。 由于,實(shí)驗(yàn)簡(jiǎn)化了,剩下不少零件和資金,所以我們又做了兩項(xiàng)其他的實(shí)驗(yàn)。
標(biāo)簽: 單片機(jī) 紅外 控制系統(tǒng)設(shè)計(jì) 原理圖
上傳時(shí)間: 2013-12-22
上傳用戶:tangsiyun
§4-1 程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是指計(jì)算機(jī)能夠理解和執(zhí)行的語(yǔ)言。 程序設(shè)計(jì)語(yǔ)言的種類很多,歸納起來(lái)有三種: 機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。 編程時(shí)采用哪種語(yǔ)言由程序設(shè)計(jì)語(yǔ)言的特點(diǎn)和適用場(chǎng)合決定。 機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言比較一覽表§4-2 匯編語(yǔ)言源程序格式匯編語(yǔ)言源程序格式如下:1、匯編語(yǔ)言源程序由一條一條匯編語(yǔ)句組成。2、每條匯編語(yǔ)句獨(dú)占一行,以CR—LF結(jié)束。3、典型的匯編語(yǔ)句由四部分組成: 標(biāo)號(hào):操作碼 操作數(shù);注釋§4-3 偽指令一、偽指令與指令的區(qū)別: 偽指令由匯編程序識(shí)別,用來(lái)對(duì)匯編過(guò)程進(jìn)行某種控制,或者對(duì)符號(hào)、標(biāo)號(hào)賦值。在匯編過(guò)程中, 偽指令不產(chǎn)生可執(zhí)行的目標(biāo)代碼;而指令由CPU執(zhí)行,在匯編過(guò)程中,產(chǎn)生可執(zhí)行的目標(biāo)代碼,完成對(duì)數(shù)據(jù)的運(yùn)算與處理。二、常用的偽指令:ORG END EQU DATA DB DW DS §4-4 匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)一、匯編語(yǔ)言程序設(shè)計(jì)的一般步驟 分析課題 確定算法 畫(huà)流程圖 編寫(xiě)程序 上機(jī)調(diào)試二、程序結(jié)構(gòu) 按程序的走向可以將程序分成4種結(jié)構(gòu): 簡(jiǎn)單程序 分支程序 循環(huán)程序 子程序
標(biāo)簽: 匯編語(yǔ)言 程序設(shè)計(jì)
上傳時(shí)間: 2013-10-15
上傳用戶:daoxiang126
4位八段數(shù)碼管的十進(jìn)制加計(jì)數(shù)仿真實(shí)驗(yàn),程序采用匯編語(yǔ)言編寫(xiě)。此程序在仿真軟件上與EDN-51實(shí)驗(yàn)板上均通過(guò)。仿真圖中的數(shù)碼管位驅(qū)動(dòng)采用74HC04,如按EDN-51板上用想同的PNP三極管驅(qū)動(dòng)在仿真軟件上則無(wú)法正常顯示。程序共分5塊,STAR0為數(shù)據(jù)初始化,STAR2為計(jì)數(shù)子程序,STAR3為4位數(shù)碼管動(dòng)態(tài)顯示子程序,STAR4為按鍵掃描子程序,STS00是延時(shí)子程序。由于EDN-51實(shí)驗(yàn)板上沒(méi)裝BCD譯碼器,所以編寫(xiě)程序比較煩瑣。 程序如下: ORG 0000H LJMP STAR0 ;轉(zhuǎn)程序 SRAR0ORG 0200H ;程序地址 0200HSTAR0: CLR 00 ;位 00 清 0 MOV P1,#0FFH ;#0FFH-->P1 MOV P2,#0FH ;#0FH-->P2 MOV P0,#0FFH ;#0FFH-->P0 MOV 30H,#00H ;#00H-->30H MOV 31H,#00H ;#00H-->30H MOV 32H,#00H ;#00H-->30H MOV 33H,#00H ;#00H-->30H LJMP STAR3 ;轉(zhuǎn)程序 SRAR3STAR2: MOV A,#0AH ;#0AH-->A INC 30H ;30H+1 CJNE A,30H,STJE ;30H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 30H,#00H ;#00H-->30H INC 31H ;31H+1 CJNE A,31H,STJE ;31H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 31H,#00H ;#00H-->31H INC 32H ;32H+1 CJNE A,32H,STJE ;32H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 32H,#00H ;#00H-->32H INC 33H ;33H+1 CJNE A,33H,STJE ;33H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 33H,#00H ;#00H-->33H MOV 32H,#00H ;#00H-->32H MOV 31H,#00H ;#00H-->31H MOV 30H,#00H ;#00H-->30HSTJE: RET ;子程序調(diào)用返回STAR3: MOV R0,#30H ;#30H-->R0 MOV R6,#0F7H ;#0F7H-->R6SMG0: MOV P1,#0FFH ;#0FFH-->P1 MOV A,R6 ;R6-->A MOV P1,A ;A-->P1 RR A ;A向右移一位 MOV R6,A ;A-->R6 MOV A,@R0 ;@R0-->A ADD A,#04H ;#04H-->A MOVC A,@A+PC ;A+PC--> MOV P0,A ;A-->P0 AJMP SMG1 ;轉(zhuǎn)程序 SMG1SDATA: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H SMG1: LCALL STAR4 ;轉(zhuǎn)子程序 SRAR4 LCALL STS00 ;轉(zhuǎn)子程序 STS00 INC R0 ;R0+1 CJNE R6,#07FH,SMG0 ;#07FH 與 R6 比較,不等轉(zhuǎn)移 SMG0 AJMP STAR3 ;轉(zhuǎn)程序 SRAR3STAR4: JNB P2.0,ST1 ;P2.0=0 轉(zhuǎn) ST1 CLR 00 ;位 00 清 0 SJMP ST3 ;轉(zhuǎn)ST3ST1: JNB 00,ST2 ;位 00=0 轉(zhuǎn) ST2 SJMP ST3 ;轉(zhuǎn) ST3ST2: LCALL STAR2 ;調(diào)子程序 STAR2 SETB 00 ;位 00 置 1ST3: RET ;子程序調(diào)用返回ORG 0100H ;地址 0100HSTS00: MOV 60H,#003H ;#003H-->60H (211)DE001: MOV 61H,#0FFH ;#0FFH-->61H (255)DE002: DJNZ 61H,DE002 ;61H 減 1 不等于 0 轉(zhuǎn) DE002 DJNZ 60H,DE001 ;60H 減 1 不等于 0 轉(zhuǎn) DE001 RET ;子程序調(diào)用返回 END ;結(jié)束 上次的程序共有293句,經(jīng)小組成員建議,本人經(jīng)幾天的研究寫(xiě)了下面的這個(gè)程序,現(xiàn)在的程序用了63句,精簡(jiǎn)了230句。功能沒(méi)有減。如誰(shuí)有更簡(jiǎn)練的程序,請(qǐng)發(fā)上來(lái),大家一起學(xué)習(xí)。 4位八段數(shù)碼管的十進(jìn)制加計(jì)數(shù)仿真實(shí)驗(yàn)(含電路圖和仿真文件)
標(biāo)簽: 數(shù)碼管 十進(jìn)制 仿真實(shí)驗(yàn) 仿真
上傳時(shí)間: 2013-10-11
上傳用戶:sssl
九.輸入/輸出保護(hù)為了支持多任務(wù),80386不僅要有效地實(shí)現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護(hù)。 這里下載本文源代碼。 <一>輸入/輸出保護(hù)80386采用I/O特權(quán)級(jí)IPOL和I/O許可位圖的方法來(lái)控制輸入/輸出,實(shí)現(xiàn)輸入/輸出保護(hù)。 1.I/O敏感指令輸入輸出特權(quán)級(jí)(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問(wè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í)行的程序所訪問(wèn)。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地址寫(xiě)數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫(xiě)字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時(shí)才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見(jiàn),當(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ù)訪問(wèn)的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)用程序要么可訪問(wèn)所有I/O地址,要么不可訪問(wèn)所有I/O地址。實(shí)際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問(wèn)部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問(wèn)另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問(wèn)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í)行的程序訪問(wèn);否則對(duì)應(yīng)的I/O地址m只能由在IOPL特權(quán)級(jí)或更內(nèi)層特權(quán)級(jí)執(zhí)行的程序訪問(wèn)。如果在I/O外層特權(quán)級(jí)執(zhí)行的程序訪問(wèn)位串中位值為1的位所對(duì)應(yīng)的I/O地址,那么將引起通用保護(hù)異常。 I/O地址空間按字節(jié)進(jìn)行編址。一條I/O指令最多可涉及四個(gè)I/O地址。在需要根據(jù)I/O位圖決定是否可訪問(wèn)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)制位串最大長(zhǎng)度是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格式可見(jiàn),TSS內(nèi)偏移66H的字確定I/O許可位圖的開(kāi)始偏移。由于I/O許可位圖最長(zhǎng)可達(dá)8K字節(jié),所以開(kāi)始偏移應(yīng)小于56K,但必須大于等于104,因?yàn)門SS中前104字節(jié)為TSS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問(wèn)許可檢查細(xì)節(jié)保護(hù)模式下處理器在執(zhí)行I/O指令時(shí)進(jìn)行許可檢查的細(xì)節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開(kāi)始偏移;(3)計(jì)算I/O地址對(duì)應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計(jì)算位偏移以形成屏蔽碼值,即計(jì)算I/O地址對(duì)應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開(kāi)始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯(cuò)碼為0的通用保護(hù)故障;(6)若不越界,則從位圖中讀對(duì)應(yīng)字節(jié)及下一個(gè)字節(jié);(7)把讀出的兩個(gè)字節(jié)與屏蔽碼進(jìn)行與運(yùn)算,若結(jié)果不為0表示檢查未通過(guò),則產(chǎn)生出錯(cuò)碼為0的通用保護(hù)故障;(8)進(jìn)行I/O訪問(wèn)。設(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é)可見(jiàn),不論是否必要,當(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é)的最低位。可見(jiàn)即使只要檢查兩個(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許可位圖開(kāi)始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當(dāng)TSS的界限大于I/O許可位圖開(kāi)始偏移加8K時(shí),I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進(jìn)行。當(dāng)TSS的界限不大于I/O許可位圖開(kāi)始偏移加8K時(shí),I/O許可位圖有效部分就不到8K字節(jié),于是對(duì)較小I/O地址訪問(wèn)的許可檢查根據(jù)位圖進(jìn)行,而對(duì)較大I/O地址訪問(wèn)的許可檢查總被認(rèn)為不可訪問(wèn)而引起通用保護(hù)故障。因?yàn)檫@時(shí)會(huì)發(fā)生字節(jié)越界而引起通用保護(hù)異常,所以在這種情況下,可認(rèn)為不足的I/O許可位圖的高端部分全為1。利用這個(gè)特點(diǎn),可大大節(jié)約TSS中I/O許可位圖占用的存儲(chǔ)單元,也就大大減小了TSS段的長(zhǎng)度。 <二>重要標(biāo)志保護(hù)輸入輸出的保護(hù)與存儲(chǔ)在標(biāo)志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實(shí)現(xiàn)輸入輸出保護(hù)。類似地,對(duì)EFLAGS中的IF位也必須加以保護(hù),否則CLI和STI作為敏感指令對(duì)待是無(wú)意義的。此外,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 不變 不變 不變 從表中可見(jiàn),只有在特權(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通過(guò)任務(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)通過(guò)任務(wù)門調(diào)用測(cè)試任務(wù)1。測(cè)試任務(wù)1能夠順利進(jìn)行;(5)通過(guò)任務(wù)門調(diào)用測(cè)試任務(wù)2。測(cè)試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導(dǎo)致通用保護(hù)異常;(6)通過(guò)任務(wù)門調(diào)用測(cè)試任務(wù)3。測(cè)試任務(wù)3演示I/O敏感指令如何引起通用保護(hù)異常;(7)通過(guò)任務(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
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1