|
本帖最后由 超級狗 于 2013-6-5 10:17 编辑
( _6 Z3 e: U9 u! ^3 y+ K; I8 y0 D风吹摇摆 发表于 2013-6-5 09:02 ! c0 r$ G2 a9 U# |2 f0 r/ Y2 L
不是上拉电阻的问题是输出电路的问题,都是推挽输出但是一种是TTL电平一种是CMOS电平。TTL电路的速度快, ... . l3 y1 b8 j# ?; ? z$ S
/ H1 j! o$ s5 G c* c: }# M2 RPush-Pull 不一定是 TTL,CMOS 也有 Push-Pull。
/ }. c: A9 W; I, E P
C8 Z; o& T8 ~+ ?1 }樓主說換了 AT89S51 後就推不動 LED,照文字敘述應該是什麼都沒變只換 CPU。所以我排除是軟件設定的問題,即便是 AT89C51 和 AT89S51 I/O Port 也可以設定成 Push-Pull 輸出,但他們設錯了。+ f9 O8 T7 I" _! X; M% f
. @. d7 H6 V9 P* f, s4 G! o' F. v1 x但你仔細看芯片資料,Port 0 他直接跟你講是 Open Drain。Port 1 ~ 3 示意圖看起來也都是 Open Drain,差別只在於 Port 2 內部的上拉電阻可以被控制。$ G! ~) S$ e% U
! y0 J8 V) g0 X. Q我知道有些 8051 的 I/O Pin 可以被設為好幾種模式(Push-Pull 是其中一種),但它們會被畫成像最後一張圖那樣(節錄自 新唐電子 NuvoTon 8051 芯片資料)。對於 ATMEL 這兩個系列,我從 I/O Port 結構圖看不出他們可以被設為 Push-Pull。但我也說過,芯片資料內容少得可憐,除非他們有不能說的秘密沒講出來。# @- T8 |5 X+ Q1 l2 F1 u- ~
( g# x0 Z* L+ L* [$ A
Port 0:
8 J t6 h0 d' Q; RIs 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.
. |3 A( E0 k- H% }- L1 W- p& Y, ?; L- I, P8 l; [4 J1 u( `, F
{:soso_e113:} 6 L* k' ]" g7 [: J" r5 g" n
3 `0 u: ~0 L8 G+ `' n
|
|