|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
$ s& }, P7 w1 `' W% P, O) }4 Z* n* s8 O& p0 L! q/ o6 ^# J
樓主︰( F' Z6 e3 a' `+ c9 t) ]
4 E$ a' r; _) p! |( P6 x6 f; I
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。$ b% K" E6 G2 k* X9 D/ e
J( \9 P7 s" D% D% Q
而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。3 y* G6 P5 r/ |- E. j& @# {8 W
% e( U' f" I* o# X. i1 ]有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。, q3 f7 C$ C% u* i' E
7 w9 m8 m$ S4 `. ^% {5 F4 f如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。( k6 b- r3 k# O! ^; l* N
9 Z" x4 [6 c2 {) m0 F但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。' |/ b) y# S$ ]( h) D& f
3 p! X5 \8 }. l
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。+ a) @) f, f" \2 k8 v
0 Q8 p1 N; u0 \6 {- Q3 `8 v如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
1 ?- b' O+ X( P; ?7 A: g+ ^
$ {9 F" }3 f/ D% R0 \& g{:soso_e177:}
2 ^) N- ?! [( M+ V# F3 g- e6 h
# S, X1 o! B, ]( t3 x. v6 y" i |
|