在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>主機(jī)配件>cpu>

狀態(tài)檢查及TIMEOUT位清除 - 增強(qiáng)型并行端口EPP編程

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

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

  3.5、16位、32位數(shù)據(jù)的讀寫(xiě)操作

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

  3.6、Windows 3.x/Windows 9x環(huán)境下的編程

  Windows 3.x/Windows 9x環(huán)境下對(duì)硬件操作的最好方法是使用虛擬設(shè)備驅(qū)動(dòng)程序VxD(virtual device driver),它可以使用DDK或C開(kāi)發(fā),對(duì)端口的操作可以得到系統(tǒng)級(jí)的保護(hù),并能得到快速的中斷響應(yīng)。另一種和硬件打交道的方法是使用OCX或ActiveX控件,在32位的Visual Basic中就能實(shí)現(xiàn)。但是這些方法需要較多的編程經(jīng)驗(yàn),所采用的編程語(yǔ)言也受到很大限制,一般的軟件人員不易實(shí)現(xiàn)。使用 Windows API也可以實(shí)現(xiàn)硬件操作,例如通過(guò)API調(diào)用可以實(shí)現(xiàn)對(duì)串口和打印機(jī)的操作。但是Windows API沒(méi)有一般性的端口操作函數(shù),不適用于 EPP的編程。

  實(shí)用而有效的方法是對(duì)EPP進(jìn)行直接I/O操作,并將相關(guān)函數(shù)生成動(dòng)態(tài)連接庫(kù)DLL,供應(yīng)用程序調(diào)用。在并口不被其他程序使用的情況下,對(duì)EPP執(zhí)行直接I/O讀寫(xiě)是沒(méi)有問(wèn)題的。由于Windows編程語(yǔ)言都支持對(duì)DLL的調(diào)用,因而程序員可以使用他所熟悉的語(yǔ)言(包括不支持直接I/O的VB)編寫(xiě)應(yīng)用程序,實(shí)現(xiàn)EPP的操作。

  下面給出在32位的Delphi中,通過(guò)內(nèi)嵌匯編代碼實(shí)現(xiàn)的EPP端口讀寫(xiě)的input32.dll源程序。

  library input32;

  uses sysutils;

  //向端口寫(xiě)一個(gè)字節(jié)

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

  var

  bytevalue: byte;

  begin

  bytevalue := byte(value);

  asm

  push dx

  mov dx,portaddress //寫(xiě)bytevalue到portaddress

  mov al,bytevalue

  out x,al

  pop dx

  end; end;

  //從端口讀一個(gè)字節(jié),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%

不好我反對(duì)

(0) 0%

( 發(fā)表人:小蘭 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 酒色成人网| 久久综合九色 | 亚洲六月丁香六月婷婷花 | 丁香五香天堂网 | 美女视频毛片 | 精品视频在线视频 | 夜夜摸夜夜爽 | a天堂资源 | 九九精品国产兔费观看久久 | 欧美一级免费在线观看 | 羞羞视频靠逼视频大全 | 夜色成人 | 午夜影院三级 | 午夜视频吧 | 福利午夜 | 日本特黄视频 | 久久精品香蕉视频 | 亚洲国产成人精品青青草原100 | 欧美日韩视频综合一区无弹窗 | 午夜 在线播放 | 欧美日本视频一区 | 欧美一级特黄aaaaaa在线看片 | 国产女人和拘做受视频免费 | h视频在线看 | 色吧欧美 | 亚洲午夜在线观看 | 手机在线精品视频 | 一级三级黄色片 | 婷婷午夜 | 亚洲综合色就色手机在线观看 | 四虎东方va私人影库在线观看 | 亚欧色视频在线观看免费 | 天天添天天射 | 在线视频这里只有精品 | 亚洲爱爱网 | 性做久久久久久久免费观看 | 久久香蕉国产线看观看精品yw | 成人激情综合网 | 嫩草影院永久入口在线观看 | 免费在线观看大片影视大全 | 久久久www免费人成看片 |