|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑 ( ~- a1 ]5 s- ]# f# n. N. n" s
, P; f5 A9 o8 e! J/ L% y0 H e樓主︰
* F# Z# P/ y' F% C1 r' T% ]4 P) r$ m1 I5 L! e! ^
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。
! X; t) ~, b; x6 u
% f% a+ h/ C3 \, [7 ?而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
0 r6 }, `' S$ K7 x' V) H, s9 @1 C( ?% U9 i& p4 w
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
& @: @+ G( q' M4 f2 i; J
+ Q" @( w5 s) G( m' y如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。. v% z9 w% G8 z+ J! U, }+ S
& R$ D( n/ ]/ b( l( w# a
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
5 [ @( }0 z% t9 g; E& _" f; J3 E, f) P/ V9 k% j( w$ o
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
+ U5 |0 u4 j% o1 B' B3 ]8 `0 G8 Z. j' z9 i
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。( ]: |5 j% Z8 M0 f/ X
. F/ B3 O6 R9 o$ v{:soso_e177:}
* ~ s, X) n; p1 P7 s) {; G9 G7 {
|
|