|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
, B' p _& ~: d7 }! P/ y4 W% k3 N2 k
樓主︰
& z: B" @% n& \. ]( c2 Y; j. ]& I- q$ X' {
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。
' @8 _3 H) Y. S; F- H: I3 T5 d9 n, L+ _( P
而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
5 f- }: P9 Q& }: v" p7 t k
/ L9 k" f" \' d有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。: } ^6 D' ~5 ~
" M% M* [8 }7 o+ K8 S如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。
$ J, w/ I! u, c; ?7 m- b/ h+ }1 C' [+ O6 x/ I
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
+ k+ ?9 f2 R- L& X' l4 q: V' ^7 C j1 ~$ I A9 P4 d: u* K
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
, E9 z; c8 O& m: `! i L! l; ~: b" a; |- n. K
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
1 N9 f: I- s+ [$ R3 |# J1 N N7 x! E. @0 K, @" e3 I6 `) M) x
{:soso_e177:}
; [& a6 ~' J7 P0 k4 i& H
2 o# X4 k0 P) U |
|