|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
+ T. ]! Z3 P& z2 \ g v& Y5 L. {+ b
" V2 z7 a) x2 F0 n8 a樓主︰
' `* A I# L! X
- i# z1 t: L# z# I& Z m/ k' ^您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。
: \0 o$ i; A# R" G
- ]8 Q4 s, W9 t& u: L/ A4 }5 p1 q而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
; U, ~# O$ ?" n# C7 O* [/ K. ?7 P* y2 l
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
) t! p7 P1 u% E2 b+ g* u, F7 ~4 H6 A |6 n0 y- |
如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。
. Q, [, F( P, H
, `" k# e; x# c7 O但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。9 d) S- E8 H5 F7 D) R' _
4 I+ l0 N, g# T2 B8 h2 p
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
7 `! [8 J" C9 i. _! |$ r2 L
, t! @) G* f6 {9 W' f如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
* }9 r) Q: k, o- I w5 X m3 \, {+ _) p; E
{:soso_e177:}
) g" A7 _6 D, m: c# t9 r& Q) Y* w) Q6 _3 T7 V
|
|