|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
; g% B; {" P% g8 v5 q; B
! P8 D* \& ~" `9 y. l" l樓主︰
5 H9 G$ [0 r# |+ X/ Y/ k( V3 H: o$ R8 T! z6 L4 p2 w% N, B
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。% `. Z7 u& q* M4 Q% c: w' q
9 {1 |0 Y9 _+ o0 O0 q8 ?
而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。) }) H$ r: b8 }5 \1 H$ I
8 b$ w7 T3 j: w3 g1 H' {有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。3 V7 w5 G, O5 P* M" F
, U# I# J0 d7 _3 R如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。2 G# @9 o- J$ r
. m, ^/ P+ l; H+ ]$ z
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。& o$ ^' m) }$ E* V
1 H0 o+ ?& a' _所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。- m1 Q9 K1 z |/ S
+ y* L: d, a* T6 [3 \+ F+ _1 W如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。% \# d0 q: v- M, X1 x+ V( q
( a4 s z* r1 Z9 s: W
{:soso_e177:}
- U6 j- l1 l2 X4 M6 H- }4 J. D
% ^: @. d2 Z" l5 a G: a R5 ]" n2 T |
|