|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑 4 Q& L# M4 {5 E+ L) q. i' i# M# s
4 [& {' o/ ]. C# C9 H; I- x( U樓主︰, |7 E# U- u; s- N) u- {
/ O4 Q" c) N1 C; T0 @2 p3 E+ T您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。
$ [# k" k8 w: c; ?2 @3 f2 `6 {; u; x) o( i: c# e0 y7 L9 Q5 R
而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
* B: p+ ?, E: D4 ?; w2 E8 J# i; y, [5 `- I, o4 M
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
( s, ]; A" P+ e3 ]+ ?! z) k
, g+ @* K) a' H% ?$ {5 r如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。
5 T9 B/ ~0 P' W6 C) y: |( G* e$ P. G
+ h0 ~8 L% y" L+ C但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。- g, q* G0 o( ]# n! L4 `' O x
b* N& w! `4 [: a1 L$ c7 u. G3 k
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。6 Z4 G$ a0 s6 P. X$ C* A9 j
D4 a" ^$ @9 [9 }; `如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
5 j' a3 V% B% b+ ^- H; K
1 w: H& P1 i$ c1 |+ h; l1 x& }2 T{:soso_e177:}
8 a4 T7 E4 Q- l) x9 Q8 M# R% R) u% i& M( ]. R: x: B
|
|