STC单片机-I/O简介
文章目录
前言
本文为STC单片机I/O口的简介与配置方式,若有不足之处,还望各位同行不吝赐教。一、简介
STC单片机所有的I/O口均有4种工作模式:准双向口/弱上拉(标准8051输出口模式)、推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)、开漏输出。可使用软件对I/O口的工作模式进行配置。
二、相关寄存器
1.端口数据寄存器(Px)
读写端口状态
写0:输出低电平到端口缓冲区
写1:输出高电平到端口缓冲区 读:直接读端口管脚上的电平
2.端口模式配置寄存器(PxMx)
端口模式:
注意:当有I/O口被选择为ADC输入通道时,必须设置PxM0/PxM1寄存器将I/O口模式设置为输入模式。另外如果MCU进入掉电模式/时钟停振模式后,仍需要使能ADC通道,则需要设置PxIE寄存器关闭数字输入,才能保证不会有额外的耗电
3.端口上拉电阻配置寄存器(PxPU)
端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些)
0:禁止端口内部的4.1K上拉电阻
1:使能端口内部的4.1K上拉电阻
4.端口施密特触发控制寄存器(PxNCS)
端口施密特触发控制位
0:使能端口的施密特触发功能。(上电复位后默认使能施密特触发)
1:禁止端口的施密特触发功能。
5.端口电平转换速度控制寄存器(PxSR)
控制端口电平转换的速度
0:电平转换速度快,相应的上下冲会比较大
1:电平转换速度慢,相应的上下冲比较小
6.端口驱动电流控制寄存器(PxDR)
控制端口的驱动能力
0:增强驱动能力
1:一般驱动能力
7.端口数字信号输入使能控制寄存器(PxIE)
数字信号输入使能控制
0:禁止数字信号输入。若I/O被当作比较器输入口、ADC输入口或者触摸按键输入口等模拟口时,进入时钟停振模式前,必须设置为0,否则会有额外的耗电。
1:使能数字信号输入。若I/O被当作数字口时,必须设置为1,否MCU无法读取外部端口的电平。
三、I/O口配置
1.模式配置
STC单片机的I/O口模式通过寄存器(PxM0,PxM1)进行配置。
以P0为例,P0M0的第x位与P0M1的第x位组合起来配置P0.x口的模式。
PnM0与PnM1的组合方式如下表所示:
2.其他配置
在STC8系列单片机中,新增了上拉电阻配置寄存器、施密特触发控制寄存器等一系列寄存器,具体功能请查阅手册。
四、举个例子
void IO_Init(void)
{
P0M0 = 0x05;
P0M1 = 0x06;
}
以下表格中为P0M0与P1M1中各位对应的值:
寄存器 | 第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 第0位 |
---|---|---|---|---|---|---|---|---|
P0M0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
P0M1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
通过查表可知:
P00的工作模式:推挽输出
P01的工作模式:高阻输入
P02的工作模式:开漏输出
P03-P07的工作模式:准双向口