C<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8051F单片机中IO的使用
C8051F系列单片机IO可以配置为:Push-Pull ouput
Open Drain output
Analog in
Digital in
如图所示
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
推拉输出高电平由一个PMOS把IO口来高,低电平由NMOS把IO口拉低,适合驱动一些TTL负载,LED,或是通讯时用作数据或时钟发送;漏极开漏输出时PMOS被禁止,只有保留NMOS来把IO拉低,外接上拉电阻把IO拉高,适合线与或是用作I2C通讯,模拟输入被使能时,其它IO方式将被禁止,模拟信号直接经过一个Pass Gate 送入MCU内部的ADC;当数字输入时,IO口输出禁止,数字信号经过 Schmitt Trigger 送入内部逻辑。
特别需要注意的是当IO口用作输入端口时:
有两种方法:
1、 禁止IO输出,配置为数字输入。注意是所有的IO端口的输出方式都被禁止
2、 配置为OD方式。这时外部的高电平会保持,低电平会把IO拉低。
通常中断输入,数据输入时可以这样配置
当IO用作Bidirection时,最好把IO 配置为OD输出,例如在软件模拟I2C传输时,并且在IO由发送转为接收时,一定要在接收前把IO置高,因为发送数据后IO可能是低电平,
下拉的NMOS打开,接收的数据无论如何也不能把IO拉高,或者拉不到Vth高电平阈值之上,导致接收的数据全部为0。
应该: Send_funtion();
SET_SDIO;
Read_funtion();
tengjingshu_112148725 2009-4-15 22:21
tengjingshu_112148725 2009-4-15 15:09