|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑 9 a" \6 z! e/ D" R4 w, w' f/ v( e
; Y5 p( F; b5 C
樓主︰+ S- Z3 ~/ |, ^, \5 b
/ o* `3 k' c. p; i( d, T7 d! C# s
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。 \) W3 Y* m. K7 z6 V7 r! U, u6 }
% [+ s1 @3 ]0 K6 @% \7 N9 c- i而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。$ Q" F6 [/ {; R
5 d3 _; E( Z- t+ {( E+ p
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
$ @+ f% X7 Q$ b5 A
' s# a9 R6 {7 J1 X5 K如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。
2 T5 |0 p3 ~! f( ]1 b. h
& Z; v& D+ ]# G/ G* @但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。) x. q# H7 _- m" o+ h9 x, K
+ }# b, ~) z) `+ u5 _
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
8 U$ `! |: g7 F0 |$ z0 R. K$ b% l3 i& t; L/ [7 S/ S7 |; H
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
c* N0 u0 \ {* B9 f% X4 q, n/ V7 P$ i' Y1 }# v" ?
{:soso_e177:} ! h% J. T( U* c% E/ q
* l5 A5 S: c' h4 q ^: {8 n |
|