|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑
) z0 p3 k4 r0 C
; A( f7 Y" G9 U9 p. H6 q樓主︰
$ K: L8 M4 O: f6 u- R# U* b8 g7 z0 J& h) c! w4 G! Y
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。
" z# c/ D- O r; x# c9 L$ H5 P
( \: S) l( T0 c3 @( S/ k而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。
+ O' ?: a% Y! w. z+ c8 u
, w: ^$ y2 `% S: p1 T有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。
l8 ~) h5 m- S8 `6 o- `+ v4 h! r/ z
! q) e: {1 z$ _8 M) u/ H. M如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。
( [- @$ _: f& d% A# ~3 t' W7 j) x/ R I0 [6 v* A+ H1 u" y; n
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。# S, I' l" K% w* Y( ?, F
) h1 h" v5 ~: L8 l7 F/ s
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。, | |7 G8 k4 \) J+ u0 P
# K. p4 v+ J" D" _& T7 n
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。- z' Q- M! m- w T& D& U5 e" x
+ I- |. z; x. e# l7 c5 t{:soso_e177:}
- Z7 U) J% V1 s# \7 V1 E4 h7 J) u+ U" p* u1 v+ y8 u! p
|
|