|
|
本帖最后由 超級狗 于 2013-6-4 21:55 编辑 * I+ h5 _5 e9 y( G& h" @7 Q, W
$ Q1 D7 ?" e* I" K. R# Q3 ?樓主︰
3 g& d; a3 o* j/ S- E1 W$ ~* f8 q" N
您這個問題真的很奇怪,上網找 ATMEL AT89C51 和 AT89S51 的芯片資料,其實內容也少得可憐。但如果您仔細閱讀芯片資料就會發現,不管是 Port 0 ~ Port 4 它們似乎都是 Open Drain 的結構,差別只是在於芯片內部是否有上拉電阻。; j9 f1 Q4 @: e9 d
! b- Y$ @% Z+ i* M; ]* N而從芯片資料的 VOL 和 VOH 的規格也可以看到,IOL 還能到 mA 級、但 IOH 只有數十 uA。證明 Port 0 ~ Port 4 當 General Purpose I/O,是 Open Drain 架構的推論可能是對的。2 k5 {6 \+ ]. D3 [+ F$ @) k
& H2 V( A/ b( F' j9 d- p& `. e7 [& _
有鑑於此,我從 Pspice 模擬出一種狀況,會發生類似你敘述的情形。' e- Z# D1 e! k' y1 R6 T' G
3 i- K1 \! D1 a如果 IC 內部的上拉電阻小於 100K,LED 驅動電路大概還有 1mA 以上的電流。5 q+ l7 d: {. r2 S" R- s* |1 a; A* O
+ I, o" b: [0 J
但如果 IC 內部的上拉電阻大於 120K,LED 驅動電路就只剩 550uA 以上的電流,這時候即便 LED 能亮,光線應該也是很微弱。此時若拿掉外部 20K 下拉電阻,LED 電流可以拉高到 4.5mA。
- I$ v% O, V; t" c: Y+ I, t9 @, e; \6 ] t! o/ J
所以,我懷疑 AT89C51 在轉換至 AT89S51 製程時,I/O Port 內部上拉電阻值變高了,才會發生今天的問題。" x' N6 e9 k3 ]* u
: o q( m9 b" G% Q' m
如果不拿掉 20K 下拉電阻,下拉電阻增大到 47K,或加一個 10K 上拉電阻,都可以解決這個問題,或許樓主可以驗證看看。
6 A2 G" r# ?4 I& L
2 E0 x" o4 [" ?2 p) j. ]; U# | F{:soso_e177:}
2 ^ y1 b `; r& M/ e2 ]
3 o/ B6 D$ }5 u% n, Q: |9 v( l! Z |
|