|
本帖最后由 超級狗 于 2013-6-5 10:17 编辑
! {- g3 z2 |; ]& \& X! X% R5 r1 z9 w ? a风吹摇摆 发表于 2013-6-5 09:02 + h) U7 j1 L( V0 p
不是上拉电阻的问题是输出电路的问题,都是推挽输出但是一种是TTL电平一种是CMOS电平。TTL电路的速度快, ... 0 y* f1 q" t- ]; d4 [
) v. C7 S5 Z5 E" XPush-Pull 不一定是 TTL,CMOS 也有 Push-Pull。 x/ t2 w! p- {* n) W# ~9 m% @( I
6 C: U6 O# S, H* ?2 U% R, E
樓主說換了 AT89S51 後就推不動 LED,照文字敘述應該是什麼都沒變只換 CPU。所以我排除是軟件設定的問題,即便是 AT89C51 和 AT89S51 I/O Port 也可以設定成 Push-Pull 輸出,但他們設錯了。, |+ X* [' U+ _4 D( G6 Y7 T) v" [
9 j; w. U) l5 W# h但你仔細看芯片資料,Port 0 他直接跟你講是 Open Drain。Port 1 ~ 3 示意圖看起來也都是 Open Drain,差別只在於 Port 2 內部的上拉電阻可以被控制。1 X- h) u; s* m9 s( B' K" q }
( `2 O) G# }. R& p1 a' ~
我知道有些 8051 的 I/O Pin 可以被設為好幾種模式(Push-Pull 是其中一種),但它們會被畫成像最後一張圖那樣(節錄自 新唐電子 NuvoTon 8051 芯片資料)。對於 ATMEL 這兩個系列,我從 I/O Port 結構圖看不出他們可以被設為 Push-Pull。但我也說過,芯片資料內容少得可憐,除非他們有不能說的秘密沒講出來。% c; e( Q( j- _; d: L/ k
% b( J- i" F) F8 I8 g, n0 o, H" Y. s! y
Port 0:4 n/ F1 M% G/ b- m" ^$ W, ^5 l
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.
% V/ l, P& c/ [4 m! b U9 r0 t( U- R" l0 l, h" b- Y
{:soso_e113:} 5 w& y8 J& X+ ?6 e1 A0 d
1 V5 `& X5 ^5 Y1 n* e+ [6 v4 J+ \% ` |
|