|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
- p8 \9 Z c* z; D1 P$ {0 g2 T# {5 i f+ G9 l. m
樓主︰ ?. }% I' U+ f! z$ p9 d
. X) k' v% o6 \9 M
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。
- k- h, r9 X: }* J2 d
6 y2 A: |! }1 k) Q/ r* G而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
3 L E% U# g& J2 n0 r
/ [6 Y' ] e! e7 F* [& S# L% I有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
3 j) N7 U7 C* P. m& s
6 u, \7 n. D. ]3 {9 F6 }6 ~' G8 b6 K如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。( T1 ]! H% a- L! Z+ R# t
0 {: z/ B- n4 Q1 d8 T# V9 h但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
% T# N8 v: E) Z4 y5 r
5 S0 Y; n( k4 g( S$ i6 Z+ W所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
9 a0 p' o1 S! d) K- \( v/ M+ D2 V# ?) r+ H1 M
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。( q, y7 C1 l, h: [; ~/ n
3 H: W# L; Q0 u0 ?' V, {$ O& N7 P{:soso_e177:}
1 W% [# t3 t* K7 P& I5 P, A( N
& V6 O/ \& h" x |
|