1. C8051F系列单片机,IO配置如下:
推挽输出,push-pull,不需要外加驱动电路,可以直接驱动外面的芯片。
推挽输出的时候,端口输出高电平,NMOS截止,PMOS导通,把IO口拉高;端口输出为低电平,PMOS截止,NMOS导通,把IO口拉低,适合驱动一些TTL负载,LED,或是通讯时用作数据或时钟发送;
漏极开路,open-drain,需要外加电阻上拉到电源。
漏极开漏输出时PMOS被禁止,只有保留NMOS,当端口输出低电平时,NMOS导通,把IO拉低;但输出端口为高电平时,NMOS截止,端口没有输出了高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1,适合线与或是用作I2C通讯。
模拟输入,Analog in
模拟输入被使能时,其它IO方式将被禁止,模拟信号直接经过一个Pass Gate 送入MCU内部的ADC;
数字输入,Digital in
当数字输入时,IO口输出禁止,数字信号经过 Schmitt Trigger(施密特触发器 )送入内部逻辑。
特别需要注意的是当IO口用作输入端口时:
有两种方法:
1)、 禁止IO输出,配置为数字输入。注意是所有的IO端口的输出方式都被禁止
2)、 配置为OD方式。这时外部的高电平会保持,低电平会把IO拉低。
通常中断输入,数据输入时可以这样配置
2. 通过C8051F的IO配置,可见,配置不同的IO模式时候,实际IC内部逻辑是变化的;同时,通过实际了解IC的IO内部逻辑,对IO操作的一些疑问,就会有答案:
(1) IO输入的电平一般是有门限的,比如假设0-0.8V算低电平,1.8-3.3V算高电平,这个是谁规定的呢?如果2V输入,是某部分电路不工作了还是怎么样了?
>> 如同上边描述的,当作为数字输入时候,数字信号经过施密特触发器进入内部逻辑,施密特触发器的特点是,有两个阀值,高和低,当输入电平超过高阀值时候,触发器输出高(VCC),当输入电平低过低阀值时候,触发器输出低(GND),当然这是简单描述,不过是可以实现的,而且实现施密特触发器方法很多,成本有高有底.
to be continued.