|
|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
2 W: h- e8 B Z& r* L! T/ A9 R% ?( z# Y6 ~+ j. g( ^$ {
樓主︰
: F, |1 Z% U4 }9 | v8 w7 ~
& n0 e) O `; y您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。4 _ n0 P) N, A1 P) v
6 I5 V- D* B' n! O8 m
而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
7 }6 ]8 o9 q* x/ k' t( {0 @, C( S! e/ X6 H3 j( I* }
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。7 L7 D6 M( t. x: W, ~2 ?5 s. _
1 |0 D7 B0 [" z3 E8 j如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。
; B0 a' w" }# ]. M5 `7 c: f0 ^- ~8 `. E: i" H; \) B7 Z+ b( M
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。. f* ?0 f( g# z; C/ \9 Y
. b+ A- d8 p- `5 }7 u% X
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
& a4 x+ s! m3 b+ h% W8 |' A5 x% f1 L/ p9 r! c# W
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。" K+ A! Z6 r6 d7 k
7 C! W$ r P @! U" w, R{:soso_e177:}
9 ~' t2 K" { N, b* ~) s) Y/ \( T! q$ J' c
|
|