91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>主機配件>cpu>

狀態檢查及TIMEOUT位清除 - 增強型并行端口EPP編程

2011年11月23日 13:54 本站整理 作者:秩名 用戶評論(0
3.4、狀態檢查及TIMEOUT位清除

  每一次讀寫后,應檢查狀態寄存器是否發生錯誤(如超時錯誤TIMEOUT)。如果TIMEOUT位被置位,下一次EPP數據和地址口的讀寫操作都將無效,因而每次EPP操作后對該位的檢測時必要的。TIMEOUT位為狀態寄存器(基地址+1)的第0位,對該位TIMEOUT標志的清除,不同的控制芯片使用不同的方法,這對編程不利。有的向該位寫“1”,可以清除TIMEOUT標志,寫“0”對該位無影響;有的對狀態寄存器進行讀操作,就可以清除該位;還有的是寫“0”清除該標志。所以通用的方法是讀狀態寄存器后,TIMEOUT位如果置位,先向該位寫“1”,再寫“0”。這樣,無論哪種芯片都可以保證對該位的清除。

  3.5、16位、32位數據的讀寫操作

  EPP的8位數據口共有4個:基地址+4~+7,在其中任意一個端口上進行8位I/O寫指令(如匯編語言的out,或C語言中的outportb函數),都會發生EPP的數據周期,與外設傳遞數據。這4個數據口的另一種用法是,使用16/32位輸出指令,2個或4個字節就會自動的按順序傳送給外設。例如使用匯編指令outsd向第一個EPP數據口寫一個雙字,雖然只用了一條I/O指令,但外設收到了這雙字的4個字節。值得注意的是,外設不是一次收到32位的數據,而是分4次收到,在EPP模式下,數據寬度仍是8位。另外,地址口只能使用8位I/O指令,不能一次傳遞 16位或32位地址。

  3.6、Windows 3.x/Windows 9x環境下的編程

  Windows 3.x/Windows 9x環境下對硬件操作的最好方法是使用虛擬設備驅動程序VxD(virtual device driver),它可以使用DDK或C開發,對端口的操作可以得到系統級的保護,并能得到快速的中斷響應。另一種和硬件打交道的方法是使用OCX或ActiveX控件,在32位的Visual Basic中就能實現。但是這些方法需要較多的編程經驗,所采用的編程語言也受到很大限制,一般的軟件人員不易實現。使用 Windows API也可以實現硬件操作,例如通過API調用可以實現對串口和打印機的操作。但是Windows API沒有一般性的端口操作函數,不適用于 EPP的編程。

  實用而有效的方法是對EPP進行直接I/O操作,并將相關函數生成動態連接庫DLL,供應用程序調用。在并口不被其他程序使用的情況下,對EPP執行直接I/O讀寫是沒有問題的。由于Windows編程語言都支持對DLL的調用,因而程序員可以使用他所熟悉的語言(包括不支持直接I/O的VB)編寫應用程序,實現EPP的操作。

  下面給出在32位的Delphi中,通過內嵌匯編代碼實現的EPP端口讀寫的input32.dll源程序。

  library input32;

  uses sysutils;

  //向端口寫一個字節

  procedure function out32(portaddress, value: smallint);stdcall;export;

  var

  bytevalue: byte;

  begin

  bytevalue := byte(value);

  asm

  push dx

  mov dx,portaddress //寫bytevalue到portaddress

  mov al,bytevalue

  out x,al

  pop dx

  end; end;

  //從端口讀一個字節,br> function in32(portaddress: smallint):smallint;stdcall;export;

  var

  bytevalue: byte;

  begin

  asm

  push dx

  mov dx,portaddress //從portaddress讀bytevalue

  in al,dx

  mov bytevalue,al

  pop dx

  end;

  in32 := smallint(bytevalue) and $00ff;

  end;

  exports

  in32,out32;

  begin

  end.

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發表人:小蘭 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 国产一区二区三区在线影院 | 久久国产精品99精品国产987 | 伊人久久大香线蕉综合影 | 国产视频三级 | 99久久精品费精品国产一区二区 | 一区二区免费视频 | 国产精品亚洲一区二区三区在线播放 | 午夜性| 欧美一区二区三区在线 | 日本欧美一区二区三区不卡视频 | 六月丁香激情综合成人 | 色婷五月综激情亚洲综合 | 天堂网2021天堂手机版 | 美女一级免费毛片 | 亚洲性人人天天夜夜摸 | 狠狠色欧美亚洲狠狠色www | 日本不卡在线观看 | 亚洲天天做夜夜做天天欢人人 | 在线免费视频手机版 | 成人国产一区 | 日韩a无吗一区二区三区 | 国产男女交性视频播放免费bd | 色婷婷一区二区三区四区成人 | 美女国产| 好男人社区www的视频免费 | 色清片| 久久精品亚瑟全部免费观看 | 天天摸夜夜添狠狠添2018 | 成人在线视频网址 | 色色色色色色色色色色色色色色 | 激情综合五月婷婷 | 午夜激情啪啪 | 一级片在线免费观看 | 国产免费高清视频在线观看不卡 | www.国产一区二区三区 | 成人丁香乱小说 | 永久免费的啪啪免费的网址 | 色狠狠色综合久久8狠狠色 色狠狠网 | 国内精品一级毛片免费看 | 欧美人与动欧交视频 | 天天天狠天天透天天制色 |