對(duì)利用打印口讀寫(xiě)存儲(chǔ)器24cxx的質(zhì)疑
作者Email: cscxh@pub.sz.jsinfo.net
有不少電子愛(ài)好者都讀過(guò)這樣一篇文章:《一款實(shí)用的串行E2PROM讀寫(xiě)軟件――24C》,有部分燒友也親自動(dòng)手制作了該電路。該軟件可以利用計(jì)算機(jī)的打印口上的輸出端口378H端口和379H的輸入端口,對(duì)存儲(chǔ)器24cxx進(jìn)行讀寫(xiě)。378H端口是輸出端口,對(duì)應(yīng)計(jì)算機(jī)打印口的2腳到9腳。經(jīng)我試用,效果相當(dāng)不錯(cuò)。但有一次我在對(duì)計(jì)算機(jī)打印口做了幾個(gè)小試驗(yàn)后,我不禁驚出一身冷汗!現(xiàn)寫(xiě)出來(lái)與大寫(xiě)一起來(lái)探討:
試驗(yàn)一:觀察開(kāi)機(jī)過(guò)程中,計(jì)算機(jī)打印口的電平變化
具體做法:利用下述電路,接在計(jì)算機(jī)打印口上,觀察各個(gè)發(fā)光二極管的亮滅變化情況。
觀察結(jié)果:在機(jī)器自檢階段,接在打印口上的輸出端口378H的8個(gè)發(fā)光二極管閃個(gè)不停;在windows98啟動(dòng)過(guò)程中,這幾個(gè)發(fā)光二極管也要閃幾下。發(fā)光二極管在閃動(dòng)時(shí)是有的亮有的滅,肉眼無(wú)法分辨其規(guī)律。Windows98啟動(dòng)完成后,各臺(tái)機(jī)器的發(fā)光二極管亮滅情況也不同。
觀察結(jié)論:機(jī)器硬件不同,操作系統(tǒng)不同,打印口上378H端口的各輸出線(xiàn)的電平高低無(wú)規(guī)律。
試驗(yàn)二:編寫(xiě)打印口讀數(shù)據(jù)程序
具體做法:利用windows98下的程序設(shè)計(jì)軟件Delphi,編寫(xiě)一段代碼來(lái)讀取打印口上的數(shù)據(jù):?jiǎn)?dòng)好Delphi后,在設(shè)計(jì)窗體中放一個(gè)按鈕button1,雙擊該按鈕,切換到代碼窗口,可以看到Delphi已為我們做好了框架:
procedure Tform1.Button1Click(Sender: Tobject);
begin
end;
我們?cè)?/SPAN>begin前一行加入變量聲明:var t:byte;
在begin與end中間輸入以下代碼:
asm mov dx , $378
in al , dx
mov t , al
end;
form1.Button1.Caption:=inttostr(t);
運(yùn)行程序后,我們可以隨時(shí)讀取打印口上的378H端口的數(shù)據(jù)。
觀察結(jié)果:以其中一次為例,按下button1按鈕后,按鈕上顯示的數(shù)字即為從端口讀得的數(shù)據(jù),我們讀得為108,利用windows自帶的“計(jì)算器”程序,把這個(gè)十進(jìn)制數(shù)字轉(zhuǎn)換成二進(jìn)制數(shù)字,為“01101100”;同時(shí)觀察得接在打印口上的各發(fā)光二極管的亮滅情況是:“滅滅亮亮滅亮亮滅”。
觀察結(jié)論:這一次打印口上的2~9腳的電平高低情況是:“低低高高低高高低”。
試驗(yàn)三:測(cè)試打印口輸入輸出電流能力。
具體做法:把指針式萬(wàn)用表?yè)苤?/SPAN>25毫安檔,黑表筆接打印口的某個(gè)低電平端,紅表筆瞬間接觸某個(gè)高電平端。
觀察結(jié)果:如果高低電平端直接相連,其電流肯定大于10毫安。
現(xiàn)在我們回過(guò)來(lái)再看看在網(wǎng)上廣泛流傳的這款用打印口讀寫(xiě)存儲(chǔ)器的電路:
該電路中可能為了給IC提供足夠的電流,把打印口的4、5、6、7腳并接在一起。
潛在的危險(xiǎn):假如在打印口讀寫(xiě)軟件未啟動(dòng)時(shí)甚至計(jì)算機(jī)機(jī)電源未開(kāi)時(shí),該電路就已經(jīng)連到了計(jì)算機(jī)的打印口上,那么開(kāi)機(jī)后必然會(huì)有一段時(shí)間打印口上的4567各引腳的電平有的為高有的為低。高電平端竭力輸出電流,低電平竭力吸收電流,鬼知道打印口什么時(shí)候就要報(bào)銷(xiāo)!不過(guò),如果打印口讀寫(xiě)軟件已啟動(dòng),我測(cè)得打印口上4567這4個(gè)引腳均為高電平。
我做試驗(yàn)的環(huán)境是:
明致M748MR主板,賽揚(yáng)400CPU
Windows 98 SE
Delphi用的是5.0、6.0和7.0三個(gè)版本,編寫(xiě)上述程序時(shí)均成功。
我暗自慶幸沒(méi)有用新買(mǎi)的計(jì)算機(jī)作試驗(yàn),也慶幸我的老主板沒(méi)有報(bào)銷(xiāo)。打印口的額定輸入和輸出電流到底可以達(dá)到多少?到底用上述電路會(huì)不會(huì)損壞計(jì)算機(jī)的打印口呢?希望高手們?cè)僮髦更c(diǎn)!
在很久很久以前的計(jì)算機(jī)主板上,打印口的378H端口用的是74LS374一類(lèi)的IC,這種IC的筋骨還比較硬朗,即使壞了,更換一塊就是了??墒乾F(xiàn)在的主板上好象找不到這種IC了,要是哪天打印口報(bào)銷(xiāo)的話(huà),麻煩就大了。如果燒友們還在使用上述電路的話(huà),我建議在計(jì)算機(jī)打印口上4567各腳各接一個(gè)二極管,二極管的負(fù)極引線(xiàn)端均接在24cxx的Vcc電源端,這樣可以徹底防止電流倒灌!
評(píng)論