|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
8 D, c% J" Y# O _) ?! r/ E% J
( z7 l* K2 l- n: q& x& Z樓主︰
) M) X% x7 E! n5 t2 U
E( t! ^ D* c' t- E您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。' S) e. A* {9 P0 P; T
/ q( O5 c9 ~0 ?: D而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
3 w1 x8 d: p/ g) `7 J- L/ H$ A, i
6 K3 S6 ?' f* R+ t* k有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
7 E9 X% B2 \5 m8 O- q6 O, D$ g: }9 p1 i# q u% O2 u$ C6 U9 H! s
如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。2 o# M4 [3 l% A8 M3 y0 ~6 c" X+ p
4 @2 V& @! {3 H- h- _+ E
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
9 W7 @6 D- Q$ c) a, F- l0 p
3 n6 `+ T; x# ]! E" m所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。5 w f- d) d4 e- ~: ~& O
( l3 c* `/ @- C5 h/ O- l0 V
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。2 i8 }/ S9 U) J# B# C2 I1 J+ D4 U& W
% T. U& @1 G C{:soso_e177:}
: A$ S1 s3 F; u0 }6 ?: m1 d; d- X3 R3 I+ p! I* @. ~, p) C8 ]
|
|