|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
4 ]+ n2 Z; b+ Z7 j" ^6 x( U
0 j$ ^# h+ n& j" l. o0 }* H樓主︰! L: Q9 {' F5 e& P
& U1 F6 [ v& J7 T5 D l0 a Z: o/ S
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。# d! W. }5 W* S
( f" ^8 b# c; d- U) t' P, l而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
& D: o; c1 N* k* Z+ v9 c8 `! m; I
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。, ~2 a% _7 x! w9 [
- F8 f* M( U, q3 w+ _/ x. X. V6 ]8 V
如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。0 d% O5 }$ p* d5 T' ~6 F: |
7 W$ n4 F0 q& l# ?6 C' o
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。/ C# \- L- k. W# K0 M
; |/ z/ S/ k" g- H所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
) j2 }! V0 o- W* n3 u& u7 `8 ~) }$ @8 u" s
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。( Z6 D6 b9 Z7 \3 _- g u
0 ? G0 n# d6 c5 U8 o
{:soso_e177:} 7 J U4 b8 g. U: P' O9 P' q
! |/ n2 {9 _9 Z2 S) `& q
|
|