色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發(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位清除

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

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

  EPP的8位數(shù)據(jù)口共有4個(gè):基地址+4~+7,在其中任意一個(gè)端口上進(jìn)行8位I/O寫指令(如匯編語言的out,或C語言中的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ù)口寫一個(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開發(fā),對(duì)端口的操作可以得到系統(tǒng)級(jí)的保護(hù),并能得到快速的中斷響應(yīng)。另一種和硬件打交道的方法是使用OCX或ActiveX控件,在32位的Visual Basic中就能實(shí)現(xiàn)。但是這些方法需要較多的編程經(jīng)驗(yàn),所采用的編程語言也受到很大限制,一般的軟件人員不易實(shí)現(xiàn)。使用 Windows API也可以實(shí)現(xiàn)硬件操作,例如通過API調(diào)用可以實(shí)現(xiàn)對(duì)串口和打印機(jī)的操作。但是Windows API沒有一般性的端口操作函數(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讀寫是沒有問題的。由于Windows編程語言都支持對(duì)DLL的調(diào)用,因而程序員可以使用他所熟悉的語言(包括不支持直接I/O的VB)編寫應(yīng)用程序,實(shí)現(xiàn)EPP的操作。

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

  library input32;

  uses sysutils;

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

  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;

  //從端口讀一個(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ī)定!

      ?
      主站蜘蛛池模板: 欧美xx69| jizz丝袜| 免费一区二区三区久久| 成人网络电视破解版| 亚洲人美女肛交真人全程| 秋霞电影网午夜鲁丝片| 九九热精品在线| 国产h视频在线观看免费| 26uuu老色哥| 亚洲精品午睡沙发系列| 日韩性xxx| 欧美巨大xxxx做受高清| 暖暖免费观看日本在线视频| 国产人妻XXXX精品HD电影| MM131亚洲精品久久安然| 又黄又爽又无遮挡在线观看免费| 久久re视频这里精品青| 国产极品美女视频福利| 99久久精品久久久久久清纯| 亚洲伊人色综合久久天天伊人| 无人区在线日本高清免费| 翘臀少妇被扒开屁股日出水爆乳| 久久综合给会久久狠狠狠| 黑人强伦姧人妻日韩那庞大的 | 掀开奶罩边躁狠狠躁软学生| 青娱乐极品视觉盛宴国产视频| 老熟风间由美AV在线一区二区| 狠狠色香婷婷久久亚洲精品| 国产精品日韩欧美一区二区三区| 日日碰狠狠躁久久躁综合网| 欧美色妞AV重囗味视频| 美女内射少妇一区二区四区| 久久re这里视频只精品首页| 国产在线观看www| 国产精品嫩草影院| 国产盗摄一区二区| 国产 日韩 欧美 综合 激情| 成人做视频免费| 成片免费观看视频在线网| 边做边爱BD免费看片| 啊灬啊灬啊灬快高潮视频 |