|
|
本帖最后由 超級狗 于 2013-6-5 10:17 编辑 : a7 ~0 G# X1 o6 A8 c
风吹摇摆 发表于 2013-6-5 09:02 ![]()
6 [; X4 G" J% D6 A. W k' S$ p* Z不是上拉电阻的问题是输出电路的问题,都是推挽输出但是一种是TTL电平一种是CMOS电平。TTL电路的速度快, ... 3 c! O7 M" |4 v& m% J$ T# G& I+ P
- i z0 m9 B0 L% _# e) T% [) RPush-Pull 不一定是 TTL,CMOS 也有 Push-Pull。
; |; b' T0 x. O# _( K. d" S) b! e2 L* k' @( A+ u2 X/ c( d
樓主說換了 AT89S51 後就推不動 LED,照文字敘述應該是什麼都沒變只換 CPU。所以我排除是軟件設定的問題,即便是 AT89C51 和 AT89S51 I/O Port 也可以設定成 Push-Pull 輸出,但他們設錯了。/ v" w3 [2 L4 B/ D; c1 g
; ?" Z1 V5 K( y# I! @' W3 J
但你仔細看芯片資料,Port 0 他直接跟你講是 Open Drain。Port 1 ~ 3 示意圖看起來也都是 Open Drain,差別只在於 Port 2 內部的上拉電阻可以被控制。
& y" z5 G3 `& `5 x) f/ B3 s8 A# n- I! _7 t
我知道有些 8051 的 I/O Pin 可以被設為好幾種模式(Push-Pull 是其中一種),但它們會被畫成像最後一張圖那樣(節錄自 新唐電子 NuvoTon 8051 芯片資料)。對於 ATMEL 這兩個系列,我從 I/O Port 結構圖看不出他們可以被設為 Push-Pull。但我也說過,芯片資料內容少得可憐,除非他們有不能說的秘密沒講出來。! |" t+ v* `2 \3 M" D
% O5 W) F4 }: h0 ~ G! X# g6 {Port 0:) _: {! A% H3 ?% a
Is an 8-bit open drain bi-directional I/O port. Port 0 pins that have 1’s written to them float, and in this state can be used as high-impedance inputs. Port 0 is also the multiplexed low-order address and data bus during accesses to external Program and Data Memory. In this application it uses strong internal pull-ups when emitting 1’s. Port 0 also outputs the code Bytes during program validation. External pull-ups are required during program verification. |: h8 G" B$ F, F+ q: A) y
3 l1 Z. V% K! _{:soso_e113:}
" x4 Q7 A5 m0 X# o" X/ t' E5 t1 Y5 W P) M( Q3 B; ]4 o
|
|