|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑 / p* x9 g! W8 J0 W5 c9 Y! d# ^
/ b0 d7 N. N! U# d0 k樓主︰& Z" c+ G9 w& t, k5 h
, D: _" Z/ S6 u( M& F
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。; R4 e% _; H0 K9 {+ ?
. r6 {7 R4 U$ ?' b' l( Y而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
4 _! h1 v1 \. n+ [7 S( Q' T& u) a
) k$ S, }, L, P有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
! s0 T' d1 U) b% `- o
' s8 |6 b* e# B; t如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。3 o: j, P7 `0 t4 _2 S
' {) n- n+ ^. G' B) z# r但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。0 p- _9 L$ }3 W6 v! ?6 |
1 n- u5 j( F" Q
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。
V& R4 d" l/ d+ W3 d8 w- {! u8 V/ d3 W
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。& n+ O+ W2 l+ N" Q, { f8 M
" x, D7 ]& X( u! p L$ y. L{:soso_e177:}
& r% v; m5 U1 ^9 T- Z) a* Z( T7 [8 y5 p2 \
|
|