|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑 : D+ w+ n' o3 E7 t1 M6 l2 y5 S
0 g; _; d6 s2 J樓主︰
; h6 o* v3 l# P1 |8 ^7 Z% t, n1 G( ?$ q5 C( D3 H, ?& a
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。& D1 ] f$ O' y0 l, l" @
2 ?; H8 B% m% H% g1 v" t, M
而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。6 T& f: ^1 H0 D4 V
4 D3 o& r1 H& a" A
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
7 q4 w% Z$ d# Y4 ` [
1 @6 p8 x: [1 J% N- z如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。& I0 h* h5 h4 `
: ~# @* \+ e; m& l3 j但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
( k+ w6 b! h$ v5 ^. t7 y
1 T" v3 b! e# t7 W2 T! ~' d3 `1 F2 E所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。9 r9 S- y: t# {" f; m
9 e% E E$ q+ l( a6 R9 O0 ]
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。6 N: u/ j o& P2 G P, }
0 {& J8 s1 d8 O4 c{:soso_e177:}
. g3 J9 h( h0 ^, b, D
' l( C; C+ F! }: [ |
|