开始规划我的2024年micro:bit基础编程指南 输入函数组(特殊分析)7
单片机GPIO口的四种工作模式分析
以下——
版权声明:本文为CSDN博主希锐原创文章,继CC 4之后0 BY-SA版权协议,**请附上原始出处链接和本声明。
原文链接:该系列单片机GPIO端口四种模式
前言。 如何配置端口模式。
端口模式配置寄存器(pxm0、pxm1)。
1.准双向端口模式。
准双向端口的特点。
2.开漏输出模式。
开漏输出模式功能。
3.推挽输出模式。
4.高阻抗输入模式。
前言。
STC51系列单片机GPIO口的四种基本工作模式是:准双向端口、推挽输出、高阻抗输入和开漏输出。
gpio该端口以四种模式运行
随着技术的更新和发展,单片机的性能不断增强,GPIO的工作模式也更多,以STC8G单片机为例,所有GPIO端口都有4种最基本的工作模式,准确地说,所有IO口的每一位(每个引脚)都有4种工作模式: 准双向端口,推挽输出,高阻抗输入,开漏输出。也可能是不同的引脚具有不同的模式,每个引脚独立工作。
单片机上电后:P3除外0 和 p31、其他IO口全部为高阻抗状态,用户在使用IO口前必须设置好IO口的工作模式,即在初始化程序设计中,编写并设置相应的专用功能寄存器单元。 否则,程序上电后,默认状态为高阻抗状态,功能不匹配,因此不会有相应的输入输出功能(这是要求,让我吃了很多亏。 显然程序没有问题,但没有输出)。
因此,为了养成良好的编程习惯,我在程序设计之初就写了起始架构和原创架构模型,以提醒自己在程序之初就提前考虑、设计、设置程序内容部分。
如下(配置IO口工作模式),不管怎么用,都不需要先设置为准双向口模式。 也就是说,首先想到的是配置GPIO端口的能力。
如何配置端口模式。
当然,我的程序架构有点问题,我是双向对齐io口,遇到不同的引脚设置不同的模式怎么办?GPIO端口引脚的功能设置是根据特殊功能寄存器中的字节进行操作的,寄存器的操作是逐字节执行的,因此如果要将端口引脚设置为不同的应用,必须首先将相关字节进行逻辑转换为or, 或不,并将最终结果写入相应的控制寄存器。
端口模式配置寄存器(pxm0、pxm1)。
这是STC15系列单片机的数据表,相关内容如下
可以看出,每组IO口由两组特殊功能寄存器共同控制(以P1口为例)。
每个位两个寄存器组成两位控制码,00-01-10-11对应每个位(引脚)的控制模式。
例如,控制P1端口总线,即SFR:P1M1 P1M0;如果控制 P5 端口总线,即 SFR:P5M1 P5M0。
在这种两个寄存器的组合中,STC单片机中总共有5组IO口,每组IO口对应两个控制寄存器,即总共有10组SFR口控制模式寄存器。
需要注意的是,这些寄存器地址都不支持位寻址,因此它们只能以十六进制格式直接配置为 SFR。
也就是说,GPIO端口引脚的功能设置是根据特殊功能寄存器中的字节来操作的,寄存器的操作是逐字节执行的,所以如果要将端口引脚设置为不同的应用,必须首先将相关字节进行逻辑转换为or, 或不,然后将最终结果写入相应的控制寄存器。
例如,p10 需要漏极开路输出模式,P11为高阻抗输入模式等(如图所示)....
则对应寄存器p1m1=0x03;p1m0=0x09;相应的程序可以以这种方式分配(与其他端口一样)。