亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲(chóng)蟲(chóng)首頁(yè)| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

安卓開(kāi)(kāi)發(fā)(fā)<b>插件</b>

  • 數(shù)字I/O介紹

    數(shù)字I/O腳有專用和復(fù)用。數(shù)字I/O腳的功能通過(guò)9個(gè)16位控制寄存器來(lái)控制。控制寄存器分為兩類:(1)I/O復(fù)用控制寄存器(MCRX),來(lái)選擇I/O腳是外設(shè)功能還是I/O功能。(2)數(shù)據(jù)方向控制寄存器(PXDATDIR):控制雙向I/O腳的數(shù)據(jù)和數(shù)據(jù)方向。注意:數(shù)字I/O腳是通過(guò)映射在數(shù)據(jù)空間的控制寄存器來(lái)控制的,與器件的I/O空間無(wú)任何關(guān)系。240X/240XA多達(dá)41只數(shù)字I/O腳,多數(shù)具有復(fù)用功能。

    標(biāo)簽: 數(shù)字

    上傳時(shí)間: 2013-10-31

    上傳用戶:qimingxing130

  • 八段碼顯示程序設(shè)計(jì)與調(diào)試

    所學(xué)的指令LD、LDI、OUT AND、ANI OR、 ORI LDP、 LDF、ANDP、ANDF、  ORP、 ORF ORB、 ANB MPS、 MRD、 MPP MC、 MCRSET RSTNOP  END 自鎖電路觸點(diǎn)的動(dòng)作發(fā)光二極管的工作原理。八段碼顯示是利用發(fā)光二極管的不同段碼組合來(lái)實(shí)現(xiàn)的,它可以實(shí)現(xiàn)0到F的顯示。搶答器的顯示就是利用八段碼顯示的特性,來(lái)完成幾個(gè)不同組別的顯示。用PLC實(shí)現(xiàn)八段碼顯示0~9組的3組以上搶答器的程序編寫(xiě),并完成以下要求:1)設(shè)計(jì)由PLC實(shí)現(xiàn)的八段碼顯示0~9組的3組以上搶答器的程序編寫(xiě),并完成以下要求: ①列出PLC的輸入輸出地址分配表 ②畫(huà)出PLC的輸入輸出接線圖(即I/O接線圖) ③設(shè)計(jì)PLC的梯形圖 ④根據(jù)梯形圖列寫(xiě)指令表 2)按PLC控制I/O口(輸入/輸出)接線圖在模擬實(shí)驗(yàn)設(shè)備上正確接線。

    標(biāo)簽: 顯示程序 調(diào)試

    上傳時(shí)間: 2013-11-22

    上傳用戶:lmeeworm

  • PIC單片機(jī)設(shè)計(jì)電子密碼鎖

    介紹用PIC16F84單片機(jī)制作的電子密碼鎖。PIC16F84單片機(jī)共18個(gè)引腳,13個(gè)可用I/O接口。芯片內(nèi)有1K×14的FLASHROM程序存儲(chǔ)器,36×8的靜態(tài)RAM的通用寄存器,64×8的EEPROM的數(shù)據(jù)存儲(chǔ)器,8級(jí)深度的硬堆棧。 用PIC單片機(jī)設(shè)計(jì)的電子密碼鎖微芯公司生產(chǎn)的PIC8位COMS單片機(jī),采用類RISC指令集和哈弗總線結(jié)構(gòu),以及先進(jìn)的流水線時(shí)序,與傳統(tǒng)51單片機(jī)相比其在速度和性能方面更具優(yōu)越性和先進(jìn)性。PIC單片機(jī)的另一個(gè)優(yōu)點(diǎn)是片上硬件資源豐富,集成常見(jiàn)的EPROM、DAC、PWM以及看門狗電路。這使得硬件電路的設(shè)計(jì)更加簡(jiǎn)單,節(jié)約設(shè)計(jì)成本,提高整機(jī)性能。因此PIC單片機(jī)已成為產(chǎn)品開(kāi)發(fā),尤其是產(chǎn)品設(shè)計(jì)和研制階段的首選控制器。本文介紹用PIC16F84單片機(jī)制作的電子密碼鎖。PIC16F84單片機(jī)共18個(gè)引腳,13個(gè)可用I/O接口。芯片內(nèi)有1K×14的FLASHROM程序存儲(chǔ)器,36×8的靜態(tài)RAM的通用寄存器,64×8的EEPROM的數(shù)據(jù)存儲(chǔ)器,8級(jí)深度的硬堆棧。硬件設(shè)計(jì)  電路原理見(jiàn)圖1。Xx8位數(shù)據(jù)線接4x4鍵盤矩陣電路,面板布局見(jiàn)表1,A、B、C、D為備用功能鍵。RA0、RA7輸出4組編碼二進(jìn)制數(shù)據(jù),經(jīng)74LS139譯碼后輸出逐行掃描信號(hào),送RB4-RB7列信號(hào)輸入端。余下半個(gè)139譯碼器動(dòng)揚(yáng)聲器。RB2接中功率三極管基極,驅(qū)動(dòng)繼電器動(dòng)作。有效密碼長(zhǎng)度為4位,根據(jù)實(shí)際情況,可通過(guò)修改源程序增加密碼位數(shù)。產(chǎn)品初始密碼為3345,這是一隨機(jī)數(shù),無(wú)特殊意義,目的是為防止被套解。用戶可按*號(hào)鍵修改密碼,按#號(hào)鍵結(jié)束。輸入密碼并按#號(hào)確認(rèn)之后,腳輸出RB2腳輸出高電平,繼電器閉合,執(zhí)行一次開(kāi)鎖動(dòng)作。  若用戶輸入的密碼正確,揚(yáng)聲器發(fā)出一聲稍長(zhǎng)的“滴”提示聲,若輸入的密碼與上次修改的不符,則發(fā)出短促的“滴”聲。連續(xù)3次輸入密碼錯(cuò)誤之后,程序鎖死,揚(yáng)聲器報(bào)警。直到CPU被復(fù)位或從新上電。軟件設(shè)計(jì)  軟件流程圖見(jiàn)圖3。CPU上電或復(fù)位之后將最近一次修改并保存到EEPROM的密碼讀出,最為參照密匙。然后等待用戶輸入開(kāi)鎖密碼。若5分鐘以內(nèi)沒(méi)有接受到用戶的任何輸入,CPU自動(dòng)轉(zhuǎn)入掉電模式,用戶輸入任意值可喚醒CPU。每次修改密碼之后,CPU將新的密碼存入內(nèi)部4個(gè)連續(xù)的EEPROM單元,掉電后該數(shù)據(jù)任有效。每執(zhí)行一次開(kāi)鎖指令,CPU將當(dāng)前輸入密碼與該值比較,看是否真確,并給出相應(yīng)的提示和控制。布     局  所有元件均使用SMD表貼封裝,縮小體積,便于產(chǎn)品安裝,60X60雙面PCB板,頂層是一體化輸入鍵盤,底層是元件層。成型后的產(chǎn)品體積小巧,能很方便的嵌入防盜鐵門、保險(xiǎn)箱柜。

    標(biāo)簽: PIC 單片機(jī)設(shè)計(jì) 電子密碼鎖

    上傳時(shí)間: 2013-10-31

    上傳用戶:uuuuuuu

  • 用單片機(jī)制作多功能莫爾斯碼電路

    用單片機(jī)制作多功能莫爾斯碼電路:用單片機(jī)制作多功能莫爾斯碼電路莫爾斯電碼通信有著悠久的歷史,盡管它已被現(xiàn)代通信方式所取代,但在業(yè)余無(wú)線電通信和特殊的專業(yè)場(chǎng)合仍具有重要的地位,這是因?yàn)榈确姶a通信的抗干擾能力是其它任何一種通信方式都無(wú)法相比的。在短波波段用幾瓦的功率即可進(jìn)行國(guó)際間的通信,收發(fā)射設(shè)備簡(jiǎn)單易制成本低廉,所以深受業(yè)余無(wú)線電愛(ài)好者的喜愛(ài),是業(yè)余無(wú)線電高手必備的技能。要想熟練掌握莫爾斯電碼的收發(fā)技術(shù)除了持之以恒的毅力外,還需要相關(guān)的設(shè)備。設(shè)計(jì)本電路的目的就是給愛(ài)好者提供一個(gè)實(shí)用和訓(xùn)練的工具。  一、功能簡(jiǎn)介    本電路可以配合自動(dòng)鍵體和手動(dòng)鍵體,產(chǎn)生莫爾斯碼控制信號(hào),設(shè)有16種速度,從初學(xué)者到操作高手都能適用。監(jiān)聽(tīng)音調(diào)也有16種,均可以通過(guò)功能鍵進(jìn)行選擇。可以按程序中設(shè)定好的呼號(hào)自動(dòng)呼叫,設(shè)有聽(tīng)抄練習(xí)功能,聽(tīng)抄練習(xí)有短碼和混合碼兩種模式,分別對(duì)10個(gè)數(shù)字和常用的38個(gè)混合碼模擬隨機(jī)取樣,產(chǎn)生分組報(bào)碼,供愛(ài)好者提高抄收水平之用,速度低4檔的聽(tīng)抄練習(xí)是專為初學(xué)者所設(shè),內(nèi)容是時(shí)間間隔較長(zhǎng)的單字符。設(shè)有PTT開(kāi)關(guān)鍵,可以決定是否控制發(fā)射機(jī)工作,不需要反復(fù)通斷控制線。無(wú)論當(dāng)前處于呼叫狀態(tài)還是聽(tīng)抄狀態(tài)只要電鍵接點(diǎn)接通則自動(dòng)轉(zhuǎn)到人工發(fā)報(bào)程序。4分鐘內(nèi)不使用電路將自動(dòng)關(guān)閉電源,只有按復(fù)位鍵才能重新開(kāi)始工作。先按住聽(tīng)抄練習(xí)鍵復(fù)位則進(jìn)入短碼練習(xí)狀態(tài),其它功能不變。從開(kāi)機(jī)到自動(dòng)關(guān)機(jī)執(zhí)行每個(gè)功能都有不同的莫爾斯碼提示音。本電路具有較強(qiáng)的抗高低頻干擾的能力和使用方便的大電流開(kāi)關(guān)接口,以適應(yīng)不同的發(fā)射設(shè)備。    二、硬件電路原理硬件電路如圖1所示。設(shè)計(jì)電路的目的在于方便實(shí)用,以免在緊張的操作中失誤,所以除了聽(tīng)抄練習(xí)鍵外其它鍵沒(méi)有定義復(fù)用功能。各鍵的作用在圖中已經(jīng)標(biāo)出。PTT控制在每次復(fù)位時(shí)處于關(guān)閉狀態(tài),每按動(dòng)一次PTT功能鍵則改變一次狀態(tài),這樣可以使用軟件開(kāi)關(guān)控制發(fā)射。 PTT處于控制狀態(tài)時(shí)發(fā)光二極管隨控制信號(hào)閃亮。考慮到自制設(shè)備及淘汰軍用設(shè)備與高檔設(shè)備控制電流的不同,PTT開(kāi)關(guān)管采用了2SC2073,可以承受500mA的電流,同時(shí)還增加了無(wú)極性PTT開(kāi)關(guān)電路,無(wú)論外部被控制的端口直流極性如何加到VT3的極性始終不變,供有興趣的愛(ài)好者實(shí)驗(yàn)。應(yīng)該注意,如果被控制的負(fù)載是感性,則電感兩端必須并聯(lián)續(xù)流二極管,除自制設(shè)備外成品機(jī)在這方面一般沒(méi)有什么問(wèn)題。手動(dòng)鍵只有一個(gè)接點(diǎn),接通后產(chǎn)生連續(xù)的音頻和發(fā)射控制信號(hào)。在本電路中手動(dòng)鍵的輸入端是P1.5 ,程序不斷檢測(cè)P1.5電平,當(dāng)按鍵按下時(shí)P1.5電平為0,程序轉(zhuǎn)入手動(dòng)鍵子程序。 自動(dòng)鍵的接點(diǎn)分別接到P1.3和P1.4 ,同樣當(dāng)程序檢測(cè)到有接點(diǎn)閉合時(shí)便自動(dòng)產(chǎn)生“點(diǎn)”或“劃”。音頻信號(hào)從P輸出,經(jīng)VT1放大后推動(dòng)揚(yáng)聲器發(fā)音。單片機(jī)的I/O口在輸入狀態(tài)下阻抗較高,容易受到高低頻信號(hào)干擾,所以在每個(gè)輸入端口和三極管的be端并聯(lián)電阻和高頻旁路電容,確保在較長(zhǎng)的電鍵連線和大功率發(fā)射時(shí)電路工作穩(wěn)定。圖2是印刷電路版圖,尺寸為110mmX85mm,揚(yáng)聲器用粘合劑直接粘接在電路版有銅箔的面。    三、軟件設(shè)計(jì)方法  “點(diǎn)”時(shí)間長(zhǎng)度是莫爾斯電碼中的基本時(shí)間單位。按規(guī)定“劃”的時(shí)間長(zhǎng)度不小于三個(gè)“點(diǎn)”,同字符中“點(diǎn)”與“劃”的間隔不小于一個(gè)“點(diǎn)”,字符之間不小于一個(gè)“劃”,詞與詞之間不應(yīng)小于五個(gè)“點(diǎn)”。在本程序中用條件轉(zhuǎn)移指令來(lái)產(chǎn)生“點(diǎn)”時(shí)間長(zhǎng)度。通過(guò)速度功能鍵功可以設(shè)置16種延時(shí)參數(shù)。用T0中斷產(chǎn)生監(jiān)聽(tīng)音頻信號(hào),并將中斷設(shè)為優(yōu)先級(jí),保證在聽(tīng)覺(jué)上純正悅耳。T1用于自動(dòng)關(guān)機(jī)計(jì)時(shí),如果不使用任何功能四分鐘后將向PCON 位寫(xiě)1,單片機(jī)進(jìn)入休眠狀態(tài),此時(shí)耗電量?jī)H有幾個(gè)微安。自動(dòng)鍵的“點(diǎn)”或“劃”以及手動(dòng)鍵的連續(xù)發(fā)音都是子程序的反復(fù)調(diào)用。P1.2對(duì)地短接時(shí)自動(dòng)呼叫可設(shè)定為另一內(nèi)容。為了便于熟悉匯編語(yǔ)言的讀者對(duì)發(fā)音內(nèi)容進(jìn)行修改,這里介紹發(fā)音字符的編碼方法。莫爾斯碼的信息與計(jì)算機(jī)中二進(jìn)制恰好相同,我們可以用0表示“點(diǎn)”,用1表示“劃”。提示音、自動(dòng)呼叫、聽(tīng)抄內(nèi)容等字符是預(yù)先按一定編碼方式存儲(chǔ)在程序中的常數(shù)。每個(gè)字符的莫爾斯碼一般是由1至6位“點(diǎn)”、“劃”組成,也就是發(fā)音次數(shù)最多6次。程序中每個(gè)字符占用1個(gè)字節(jié),字符時(shí)間間隔不占用字節(jié),但更長(zhǎng)的延時(shí)或發(fā)音結(jié)束信息占用一個(gè)字節(jié)。我們用字節(jié)的低三位表示字節(jié)的性質(zhì),對(duì)于5次及5次以下發(fā)音的字符我們用存儲(chǔ)器的高5位存儲(chǔ)發(fā)音信息,發(fā)音順序由高位至低位,用低3位存儲(chǔ)發(fā)音次數(shù),發(fā)音時(shí)將數(shù)據(jù)送入累加器A,先得到發(fā)音次數(shù),然后使A左環(huán)移,對(duì)E0進(jìn)行位尋址,判斷是發(fā)“點(diǎn)”還是“劃”,環(huán)移次數(shù)由發(fā)音次數(shù)決定。對(duì)于6次發(fā)音的字符不能完全按照上述編碼規(guī)則,否則會(huì)出現(xiàn)信息重疊,如果是6次發(fā)音且最后一次是“劃”我們把發(fā)音次數(shù)定義為111B,因?yàn)檫@時(shí)第6次位尋址得到的是1。如果第6次發(fā)音是“點(diǎn)”,那么這個(gè)字符的低三位定義為000B。字符間隔時(shí)間由程序自動(dòng)產(chǎn)生,更長(zhǎng)的時(shí)間隔或結(jié)束標(biāo)志由字節(jié)低三位110B來(lái)定義,高半字節(jié)表示字符間隔的倍數(shù),例如26H表示再加兩倍時(shí)間間隔。如果字節(jié)為06H則表示讀字符程序結(jié)束,返回主程序。更詳細(xì)的內(nèi)容不再贅述,讀者可閱讀源程序。四、使用注意事項(xiàng)手動(dòng)鍵的操作難度相對(duì)大一些,時(shí)間節(jié)拍全由人掌握,其特點(diǎn)是發(fā)出的電碼帶有“人情味”。自動(dòng)鍵的“點(diǎn)”、“劃”靠電路產(chǎn)生,發(fā)音標(biāo)準(zhǔn),容易操作,而且可以達(dá)到相當(dāng)快的速度,長(zhǎng)時(shí)間工作也不易疲勞。在干擾較大、信號(hào)微弱的條件下自動(dòng)鍵碼的辨別程度好于手動(dòng)鍵碼。初學(xué)者初次使用手動(dòng)鍵練習(xí)發(fā)報(bào)要有老師指導(dǎo),且不可我行我素,一旦養(yǎng)成不正確的手法則很難糾正。在電臺(tái)上時(shí)常聽(tīng)到一些讓對(duì)方難以抄收的電碼,這可能會(huì)使對(duì)方反感而拒絕回答。使用自動(dòng)鍵也應(yīng)在一定的聽(tīng)抄基礎(chǔ)上再去練習(xí)。在暫時(shí)找不老師的情況下可多練習(xí)聽(tīng)力,這對(duì)于今后能夠發(fā)出標(biāo)準(zhǔn)正確的電碼非常有益。

    標(biāo)簽: 用單片機(jī) 多功能 莫爾斯 電路

    上傳時(shí)間: 2013-10-31

    上傳用戶:sdq_123

  • 可編程外圍接口82C55A

    82C55A是高性能,工業(yè)標(biāo)準(zhǔn),并行I/O的LSI外圍芯片;提供24條I/O腳線。     在三種主要的操作方式下分組進(jìn)行程序設(shè)計(jì)82C88A的幾個(gè)特點(diǎn):(1)與所有Intel系列微處理器兼容;(2)有較高的操作速度;(3)24條可編程I/O腳線;(4)底功耗的CHMOS;(5)與TTL兼容;(6)擁有控制字讀回功能;(7)擁有直接置位/復(fù)位功能;(8)在所有I/O輸出端口有2.5mA  DC驅(qū)動(dòng)能力;(9)適應(yīng)性強(qiáng)。方式0操作稱為簡(jiǎn)單I/O操作,是指端口的信號(hào)線可工作在電平敏感輸入方式或鎖存輸出。所以,須將控制寄存器設(shè)計(jì)為:控制寄存器中:D7=1; D6 D5=00;  D2=0。D7位為1代表一個(gè)有效的方式。通過(guò)對(duì)D4 D3 D1和D0的置位/復(fù)位來(lái)實(shí)現(xiàn)端口A及端口B是輸入或輸出。P56表2-1列出了操作方式0端口管腳功能。

    標(biāo)簽: 82C55A 可編程 外圍接口

    上傳時(shí)間: 2013-10-26

    上傳用戶:brilliantchen

  • 并行接口

    7.1 并行接口概述并行接口和串行接口的結(jié)構(gòu)示意圖并行接口傳輸速率高,一般不要求固定格式,但不適合長(zhǎng)距離數(shù)據(jù)傳輸7.2 可編程并行接口芯片82C55     7.2.1  8255的基本功能 8255具有2個(gè)獨(dú)立的8位I/O口(A口和B口)和2個(gè)獨(dú)立的4位I/O(C口上半部和C口下半部),提供TTL兼容的并行接口。作為輸入時(shí)提供三態(tài)緩沖器功能,作為輸出時(shí)提供數(shù)據(jù)鎖存功能。其中,A口具有雙向傳輸功能。8255有3種工作方式,方式0、方式1和方式2,能使用無(wú)條件、查詢和中斷等多種數(shù)據(jù)傳送方式完成CPU與I/O設(shè)備之間的數(shù)據(jù)交換。B口和C口的引腳具有達(dá)林頓復(fù)合晶體管驅(qū)動(dòng)能力,在1.5V時(shí)輸出1mA電流,適于作輸出端口。C口除用做數(shù)據(jù)口外,當(dāng)8255工作在方式1和方式2時(shí),C口的部分引腳作為固定的聯(lián)絡(luò)信號(hào)線。

    標(biāo)簽: 并行接口

    上傳時(shí)間: 2013-10-25

    上傳用戶:oooool

  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

    有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過(guò)為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過(guò)輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語(yǔ)言的訪問(wèn)設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來(lái)調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問(wèn)的第一步就是打開(kāi)一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開(kāi)一個(gè)設(shè)備的句柄為了打開(kāi)一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開(kāi)句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開(kāi)一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開(kāi)它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來(lái)構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開(kāi)句柄用這種方式打開(kāi)一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫(kù)提供兩個(gè)助手類來(lái)使獲得對(duì)該接口的訪問(wèn)容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來(lái)獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來(lái)打開(kāi)設(shè)備。下面用一個(gè)小例子來(lái)顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來(lái)產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒(méi)有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開(kāi)的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫(xiě)的VxD的應(yīng)用程序代碼中可能會(huì)在打開(kāi)設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒(méi)有特權(quán)的用戶企圖打開(kāi)這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過(guò)調(diào)用Kirp::Mdl來(lái)存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過(guò)KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來(lái)對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒(méi)有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來(lái)存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來(lái)構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來(lái)作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過(guò)調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過(guò)調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問(wèn)通過(guò)調(diào)用KIrp::Mdl來(lái)實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫(xiě)訪問(wèn)權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來(lái)配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來(lái)定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來(lái)如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:gai928943

  • DA與AD轉(zhuǎn)換

    計(jì)算機(jī)應(yīng)用中,有時(shí)需處理的信息不是數(shù)字量,而是一些隨時(shí)間連續(xù)變化的模擬量,甚至是一些非電量,如溫度、壓力、速度等。模擬量的存儲(chǔ)處理困難。首先將非電的模擬信號(hào)變成與之對(duì)應(yīng)的模擬電信號(hào),這要通過(guò)各種傳感器來(lái)完成。計(jì)算機(jī)可處理的信息均是數(shù)字量(電脈沖信號(hào))1和0,必須把要處理的模擬電量轉(zhuǎn)換成數(shù)字化的電信號(hào),這需要模擬(Analog)與數(shù)字(Digital)轉(zhuǎn)換電路。數(shù)字到模擬轉(zhuǎn)換:(Digital to Analog Convert, D/A) D/A轉(zhuǎn)換電路是模擬電路加上電子開(kāi)關(guān)。D/A轉(zhuǎn)換電路的核心是一個(gè)運(yùn)算放大器。運(yùn)算放大器的特性:(Operation Amplifier)    K->無(wú)窮大, V和->0  傳遞函數(shù):V0 = -Vi * R0/Ri    Ii->0,  I和=If梯形R-2R電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器Ki受一個(gè)8位二進(jìn)制代碼控制   某位為1,對(duì)應(yīng)開(kāi)關(guān)K倒向右邊;   某位為0,對(duì)應(yīng)開(kāi)關(guān)K倒向左邊。Ki不論倒向哪邊,均為接地VA-VH 的電位為:     VREF,1/2VREF,..1/128VREFVO= -VREF *(1/2K7+1/4K6+…+1/256K0)V0= -(0-255/256)VREF 8位D/A轉(zhuǎn)換器DAC0830系列器件國(guó)家半導(dǎo)體公司(NS)產(chǎn)品,0830、0831、0832。R-2R梯形電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器,雙緩沖結(jié)構(gòu)。單電源、低功耗、電流建立時(shí)間1uS。與微計(jì)算機(jī)接口方便。8位D/A轉(zhuǎn)換器DAC0830系列器件ILE:        輸入鎖存允許;  WR1#:       加載IN REG;  WR2#:        加載DAC REG;    XFER#:       IN REG傳到DAC REG;  Iout1,Iout2: 外接OA輸入;  Rfb:         反饋電阻接OA輸出;  VREF:        參考電源,控制輸出電壓變化范圍。

    標(biāo)簽: AD轉(zhuǎn)換

    上傳時(shí)間: 2013-10-16

    上傳用戶:lu2767

  • 8255A可編程并行接口

    并行接口電路:微處理器與I/O設(shè)備進(jìn)行數(shù)據(jù)傳輸時(shí)均需經(jīng)過(guò)接口電路實(shí)現(xiàn)系統(tǒng)與設(shè)備互連的匹配。并行接口電路中每個(gè)信息位有自己的傳輸線,一個(gè)數(shù)據(jù)字節(jié)各位可并行傳送,速度快,控制簡(jiǎn)單。由于電氣特性的限制,傳輸距離不能太長(zhǎng)。8255A是通用的可編程并行接口芯片,功能強(qiáng),使用靈活。適合一些并行輸入/輸出設(shè)備的使用。8255A并行接口邏輯框圖三個(gè)獨(dú)立的8位I/O端口,口A、口B、口C。口A有輸入、輸出鎖存器及輸出緩沖器。口B與口C有輸入、輸出緩沖器及輸出鎖存器。在實(shí)現(xiàn)高級(jí)的傳輸協(xié)議時(shí),口C的8條線分為兩組,每組4條線,分別作為口A與口B在傳輸時(shí)的控制信號(hào)線。口C的8條線可獨(dú)立進(jìn)行置1/置0的操作。口A、口B、口C及控制字口共占4個(gè)設(shè)備號(hào)。8255A并行接口的控制字工作模式選擇控制字:口A有三種工作模式,口B有二種工作模式。口C獨(dú)立使用時(shí)只有一個(gè)工作模式,與口A、口B配合使用時(shí),作為控制信號(hào)線。三種工作模式命名為:模式0、模式1及模式2。模式 0 為基本I/O端口,模式1為帶選通的I/O端口,模式 2 為帶選通的雙向I/O端口。口A可工作在三種模式下,口B可工作在模式 0與模式 1下,口C可工作在模式0下或作為控制線配合口A、口B工作。

    標(biāo)簽: 8255A 可編程 并行接口

    上傳時(shí)間: 2013-11-07

    上傳用戶:xitai

  • 微機(jī)接口技術(shù)試題

    微機(jī)接口技術(shù)試題:《微機(jī)接口技術(shù)》模擬試題  一、 選擇題:(每空1分,共20分)1. CPU與外設(shè)之間交換數(shù)據(jù)常采用        、       、       和        四種方式,PC機(jī)鍵盤接口采用      傳送方式。 ⒉ 當(dāng)進(jìn)行DMA方式下的寫(xiě)操作時(shí),數(shù)據(jù)是從       傳送到       __中。 ⒊ PC總線、ISA總線和EISA總線的地址線分別為:     、     和     根。 ⒋ 8254定時(shí)/計(jì)數(shù)器內(nèi)部有     個(gè)端口、共有     種工作方式。 ⒌8255的A1和A0引腳分別連接在地址總線的A1和A0,當(dāng)命令端口的口地址為317H時(shí),則A口、B口、C口的口地址分別為     、     、      。 ⒍ PC微機(jī)中最大的中斷號(hào)是       、最小的中斷號(hào)是       。 ⒎PC微機(jī)中鍵盤是從8255的       口得到按鍵數(shù)據(jù)。 ⒏ 串行通信中傳輸線上即傳輸_________,又傳輸_________。 二、選擇題:(每題2分,共10分)⒈ 設(shè)串行異步通信每幀數(shù)據(jù)格式有8個(gè)數(shù)據(jù)位、無(wú)校驗(yàn)、一個(gè)停止位,若波特率為9600B/S,該方式每秒最多能傳送(    )個(gè)字符。  ①  1200     ②  150 ③  960          ④  120 2.輸出指令在I/O接口總線上產(chǎn)生正確的命令順序是(    )。① 先發(fā)地址碼,再發(fā)讀命令,最后讀數(shù)據(jù)。② 先發(fā)讀命令、再發(fā)地址碼,最后讀數(shù)據(jù)。③ 先送地址碼,再送數(shù)據(jù),最后發(fā)寫(xiě)命令。④ 先送地址碼,再發(fā)寫(xiě)命令、最后送數(shù)據(jù)。3 使用8254設(shè)計(jì)定時(shí)器,當(dāng)輸入頻率為1MHZ并輸出頻率為100HZ時(shí),該定時(shí)器的計(jì)數(shù)初值為(      )。 ① 100   ② 1000 ③ 10000 ④ 其它 4 在PC機(jī)中5號(hào)中斷,它的中斷向地址是(     )。 ① 0000H:0005H   ② 0000H:0010H ③ 0000H:0014H        ④ 0000H:0020H 5. 四片8259級(jí)聯(lián)時(shí)可提供的中斷請(qǐng)求總數(shù)為(      )。 ① 29個(gè)  ② 30個(gè)  ③ 31個(gè)    ④ 32個(gè) 6. 下述總線中,組內(nèi)都是外設(shè)串行總線為(   )組。① RS-485、IDE、ISA。② RS-485、IEEE1394、USB。③ RS-485、PCI、IEEE1394。④ USB、SCSI、RS-232。 7. DMA在(  )接管總線的控制權(quán)。① 申請(qǐng)階段  ② 響應(yīng)階段 ③ 數(shù)據(jù)傳送階段   ④ 結(jié)束階段 8. 中斷服務(wù)程序入口地址是(  )。 ① 中斷向量表的指針 ② 中斷向量 ③ 中斷向量表  ④ 中斷號(hào)

    標(biāo)簽: 微機(jī) 接口技術(shù) 試題

    上傳時(shí)間: 2013-11-16

    上傳用戶:xiaoxiang

主站蜘蛛池模板: 墨玉县| 马鞍山市| 尼木县| 林西县| 铅山县| 牙克石市| 邓州市| 砚山县| 麦盖提县| 温泉县| 凤冈县| 虞城县| 东丽区| 怀安县| 伊通| 上犹县| 贵州省| 威宁| 藁城市| 太仓市| 黔西| 望江县| 庆元县| 邓州市| 昌邑市| 平邑县| 武山县| 罗城| 平定县| 江都市| 喀什市| 始兴县| 齐齐哈尔市| 苍山县| 麻城市| 腾冲县| 安远县| 兴和县| 正定县| 宜兴市| 宜宾县|