|
|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
: U* ?, ?: w% z& j+ M: d9 y# M6 K1 i2 \: O3 \8 }/ l
樓主︰) }% J) v; ~9 B6 L
; z' S2 a" r0 X1 O7 O1 M您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。" A* j/ o4 [0 \
: P- |9 C& t; d: l而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。. N e9 C5 c/ L3 b6 F- V9 @
6 T5 Z4 I+ O6 j& y+ ]有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
; A+ V8 L0 t& \% C4 V
8 P/ w6 n7 ^9 }; c如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。$ {) d: g3 E `/ `1 h, K+ D
' h8 |" S" p* K
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
% j2 {6 ^1 ~* B z, M3 K) @9 C* x7 p5 @. J q) a) f$ C
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
6 ^4 c* b9 u5 @* X& v& h
9 O1 b& T6 j/ P3 m如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
& M4 I/ J( T3 ]0 h
0 u# v/ q+ P$ I# `% ]{:soso_e177:} . b% B* U$ q; ]6 J8 `( y
" R2 |2 i9 z. W9 D2 | |
|