STC8系列单片机的I/O驱动原理
STC8系列有四种驱动模式
- 准双向输出
- 强推挽输出
- 仅为输入(高阻)
- 开漏输出
准双向输出配置
说明:准双向输出可以用作输出和输入功能,而不需要重新配置I/O口输出状态。如下图所示:当端口锁存数据置为逻辑高时,驱动能力很弱,允许外部设备将其拉低(要尽量避免这种情况);当引脚输出为低时,驱动能力很强,可吸收很大的电流。
注:(1)STC 1T系列单片机的供电电压(VCC)为3.3V,建议不要在准双向口模式下直接施加5V电压到管脚上。
(2)在准双向口模式下读取外部设备状态前,要先将相应的端口位置1,才可以读到外部正确的状态。
强推挽输出配置
说明:此种模式提供持续的强上拉,推挽模式一般用于需要更大驱动电流的情况。
仅为输入(高阻)配置
注:仅为输入(高阻)配置,不提供吸收20mA电流的能力
开漏输出配置
说明:在开漏模式下,单片机可以读取引脚的外部状态;(在外接上拉电阻的情况下)可以正确对外部输出高电平;否则,只要对外部输出低电平的情况下是正确的。
注:(1)由于8051CPU始终速度较高,因此当软件执行由低变高的指令后,一般需要加入1-2个空操作延迟指令,再读取外部状态。
(2)在STC单片机中,通过I/O端口模式寄存器,可以切换这些引脚的工作模式
I/O端口控制寄存器组
总说明:
(1)对于LQFP 64脚封装的STC8系列单片机才有P6组端口和P7组端口
(2)STC8系列单片机STC8A8K64S4A12的P4组端口只有5位有效,即P5.0~P5.5,而端口P0,P1,P2,P3,P6,P7都是8位有效
端口模式控制寄存器
说明:含义以P0端口举例,其余类似。
端口寄存器
说明:通过端口寄存器,STC单片机可以读取端口状态,或者像端口写数据,以P0为例。
补充说明:P0端口地址为80H,复位值为0xFFH
其余端口情况见下图
端口上拉电阻控制寄存器
说明:(1)在STC8系列单片机中,每个端口集成了可供用户选择使用的上拉电阻。
(2)当给端口上拉寄存器相应的位写0时,禁止端口内部的3.7kΩ的上拉电阻;当给每个端口上拉寄存器相应的位写0时,使能端口内部3.7kΩ上拉电阻;默认复位后不使能。
端口施密特触发控制寄存器
说明:(1)在STC8系列单片机中,为每个端口提供了可供选择使用的施密特触发器(使用施密特触发器,可以进一步提高端口的抗干扰能力)
(2)当给每个端口施密特触发控制寄存器相应位写0时,使能施密特触发功能(上电复位后默认使能);当给每个端口施密特触发控制寄存器相应位写1时,禁止端口的施密特触发功能。
在供电电压为5V时和供电电压为3.3V时,使能和禁止施密特触发功能的允许输入电平特性见下图
(说明:STC8系列是宽电压范围供电,2.0~5.5V)
代码驱动GPIO端口的实现
汇编代码版本:
1 | /* |
C语言代码版本:
1 |
|
电路原理图:
实物运行效果如下:
视频略…
附件下载:
Keil51汇编程序及电路图压缩包:
- 推荐下载链接:
链接:https://pan.baidu.com/s/1IP3ue8jyOxkw5xDe2ktAPg 提取码:ux6a - 备用下载链接:
链接:https://www.aye.ink/files/004.zip
Keil51C语言程序压缩包:
- 推荐下载链接:
链接:https://pan.baidu.com/s/1AP0LnXhFYcPsLrT9bGP7jw 提取码:rv8i - 备用下载链接:
链接:https://www.aye.ink/files/005.zip