当前位置:首页 » 数据仓库 » 如何看懂端口配置寄存器对应引脚
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

如何看懂端口配置寄存器对应引脚

发布时间: 2022-09-25 08:41:16

1. 通用输入输出引脚如何通过专用寄存器控制

通用输入输出引脚通过专用寄存器控制方法如下:S3C2440有130个I/O端口,分为A-J共9组:GPA、GPB,GPJ,可以通过设置寄存器来确定某个引脚用于输入、输出还是特殊功能,比如:可以设置GPH6作为输入、输出、或者用于串口,直接进行控制。

通过寄存器来操作GPxCON寄存器它用于配置引脚的功能端口A与端口B-J在功能上有所不同,GPACON中每一位对应一根引脚共23根引脚当某位为0时,对应引脚为输出。此时在GPADAT中相应位写入0或1,让此引脚输出低电平或高电平,当某位被设为1时,对应引脚为地址线或用于地址控制,此时GPADAT保留不用。

GPACON通常被设为全1,以便访问外部存储设备端口B-J在寄存器操作上完全相同,PxCon中每两位控制一根引脚,00表示输入,01表示输出,10表示特殊功能,11保留不用。

GPxDAT寄存器它用于读写引脚,当引脚被设为输入时,读此寄存器得到对应引脚的电平状态是高还是低;当引脚被设为输出时,写此寄存器相应位可令此引脚输出高低电平。

GPxUP寄存器GPxUP,某位为1时,相应引脚无内部上拉电阻,为1时,相应引脚使用内部上拉电阻上拉电阻、下拉电阻的作用在于,当GPIO引脚出于第三态非高低电平,而是高阻态,即相当于没接芯片时,它的电平状态由上拉电阻和下拉电阻确定,这样就可以实现控制了。

2. 端口配置寄存器有哪两种

端口配置寄存器分别为端口配置低寄存器(CRL)和端口配置高寄存器(CRH)。

每四位配置一个端口,如11 01,11就是选择开启功能,01就是选择模式和确定最大速度,但有一点不一样,低寄存器的偏移地址为0x00,高寄存器的偏移地址为0x04。

以PC15为示例,相应端口配置器GPIOA_CRL地址为GPIOA的基址+上偏移量,为0x40011004``,而这个端口要开启,所以要使对应位为相应的值,我这里是0x30000000,设置推挽输出并设置最大速度为2Mhz。

接下来就是配置端口输出寄存器(ORD),可以看到偏移量为0xc,所以该寄存器的地址等于端口的基址加上偏移量,在相应的位赋值可以控制输出电压,0为低电压,1为高电压,以PA7引脚为例子,想要输出高电压,就需要在第八位赋1。

端口配置寄存器编译的方法:

使用mcuisp软件将程序烧录到最小版上面,先选择编译生成的.hex文件,然后点击开始编译,也可以先读取器件信息再编译。


3. 端口配置寄存器CRH

这是用I/O口寄存器定义的方法,其实就是
GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12; //把PG11定义为输入模式,即
GPIOG->CRH=0XFFFF8FFF;则寄存器位配置CNF1、CNF0、MODE1、MODE0分别是1000.
同理GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;//是把PG11定义为推挽输出模式,即
GPIOG->CRH&=0XFFFF3FFF;则寄存器位配置CNF1、CNF0、MODE1、MODE0分别是0011.

4. 关于端口寄存器和锁存器的问题

针对C8051F系类单片机的端口初始化步骤如下:
1.
用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。
2.
用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推挽)。
3.
用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那些引脚。
4.
将引脚分配给要使用的外设(XBR0、XBR1、XBR2)。
5.
使能交叉开关(XBARE
=
1)。
端口锁存器是一个硬件电路模块,用于输出信号稳定和输入信号锁存的具体固件。
端口寄存器是为了方便程序员读写端口数据而在数据存储空间开辟的一个内存单元。每个端口寄存器都有其自己固定的地址,每个单元是个8位的空间,对应端口的8个引脚。
编程序的时候我们很少操作到锁存器,因为一般情况下寄存器的内容和锁存器的内容应该是一致的。但是在微控制器中,一条汇编写端口代码(读端口代码)是分好几条微控制指令的:
首先是写总线(即,写端口锁存器,总线和锁存器向连);
然后是控制输出。
为什么要在配置引脚为输入的时候向寄存器写“1”呢。这要看内部电路图,如下:
很明显,要读入数据Q2必须处于截止状态才行,否则读入的数据就是0.这就是向端口写“1”的作用。当然并不是每次读数据前都要写1.只要端口输出配置没有变化,只要在初始化的时候写一次就够了,因为输出端口有输出锁存,可以保持Q2的状态截止。

5. 单片机的引脚和寄存器的关系

对引脚的操作就是对寄存器的操作,因此如果写寄存器相应的引脚也会立即重写。

6. 如何理解单片机P0~P3端口与特殊功能寄存器P0~P3的关系

51单片机
P0端口对应特殊寄存器地址:80H
P1端口对应特殊寄存器地址:90H
P2端口对应特殊寄存器地址:0A0H
P3端口对应特殊寄存器地址:0B0H
而且这四个寄存器是可以进行位寻址操作的

7. 关于端口寄存器和锁存器的问题

针对C8051F系类单片机的端口初始化步骤如下:

1. 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。

2. 用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推挽)。

3. 用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那些引脚。

4. 将引脚分配给要使用的外设(XBR0、XBR1、XBR2)。

5. 使能交叉开关(XBARE = 1)。


端口锁存器是一个硬件电路模块,用于输出信号稳定和输入信号锁存的具体固件。

端口寄存器是为了方便程序员读写端口数据而在数据存储空间开辟的一个内存单元。每个端口寄存器都有其自己固定的地址,每个单元是个8位的空间,对应端口的8个引脚。

编程序的时候我们很少操作到锁存器,因为一般情况下寄存器的内容和锁存器的内容应该是一致的。但是在微控制器中,一条汇编写端口代码(读端口代码)是分好几条微控制指令的:

首先是写总线(即,写端口锁存器,总线和锁存器向连);

然后是控制输出。


为什么要在配置引脚为输入的时候向寄存器写“1”呢。这要看内部电路图,如下:

很明显,要读入数据Q2必须处于截止状态才行,否则读入的数据就是0.这就是向端口写“1”的作用。当然并不是每次读数据前都要写1.只要端口输出配置没有变化,只要在初始化的时候写一次就够了,因为输出端口有输出锁存,可以保持Q2的状态截止。

8. 关于单片机P1口读所存器与读引脚!

楼主没有弄清楚,标准51单片机IO脚采用准双向口,引脚输入是没有锁存的,只有输出是带锁存器,在设置P1口为高电平时,P1实际上既可以作为高电平输出,也可以作为输入(这要求外部源有足够的驱动能力,至少能够吸收1mA电流),所以MOV A,P1就是一次读8个引脚, maxiurui说的逻辑指令可以一次读一个引脚。若设置设置P1口为低电平时,MOV A,P1读锁存器。

需要注意的是,一些新型51单片机设置了专用的引脚功能选择寄存器,这时MOV A,P1读的是输出寄存器还是引脚就需要考虑专用的引脚功能选择寄存器的设置了。