数据寄存器多少位怎么算?数据寄存器D

数据寄存器是计算机中的一种重要组件,它可以存储、处理和传输数据 。数据寄存器的位数影响了它所能存储的数据范围,因此在设计计算机时,需要根据需要确定数据寄存器的位数 。那么,数据寄存器多少位才能满足需求呢?本文将从数值范围和计算复杂度两个方面探讨如何确定数据寄存器的位数 。
一:数据寄存器多少位怎么算1、按字节编址 1MB = 2^20B 1个字节=8bit=1B 2^20B/1B = 2^20 地址范围为0~2^20-1 也就是说至少需要二十根地址线,地址寄存器是用来存放地址的,与存储器容量及编址方式有关,可以简单的认为地址线的个数等于地址寄存器的位数,所以地址寄存器为20位 。
2、数据寄存器用来存放CPU在一个存取周期内从存储器中一次性取出为二进制位数,也就是一个机器字长,本题中字长32位,所以数据寄存器为32位 。
3、寻址空间 。在此需要区分清楚寻址空间与寻址范围两个不同的概念,范围仅仅是一个数字范围,不带有单位,而寻址空间指能够寻址最大容量,单位一般用MB、B来表示;本题中寻址范围为0~2^20-1,寻址空间为1MB 。

呵呵,想必是报考计算机专业的研友,如果还不太清楚,可以HI我.二:数据寄存器的作用用字符串或是整形数组将数字的每一位记录,然后从低位开始运算,并通过循环的方式向高位进行,循环中实现本位的运算和向高位进位或借位 。
三:数据寄存器D任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了 。所以今天为大家讲解通过寄存器操作控制高低电平,对寄存器操作有一个简单认识 。
STM32 的 IO 口可以由软件配置成如下 8 种模式:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽输出
7、推挽式复用功能
8、开漏复用功能
每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问 。每个 IO 端口都有 7 个寄存器来控制 。他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH;2 个 32位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器BRR;1 个 32 位的锁存寄存器 LCKR;这里我们仅介绍常用 的几个寄存器,我们常用的 IO端口寄存器只有 4 个:CRL、CRH、IDR、ODR 。CRL 和 CRH 控制着每个 IO 口的模式及输出速率 。
STM32 的 IO 口位配置表

数据寄存器多少位怎么算?数据寄存器D

文章插图
STM32 输出模式配置表
接下来我们看看端口低配置寄存器 CRL 的描述 。
端口低配置寄存器 CRL
CRH 的作用和 CRL 完全一样,只是 CRL 控制的是低 8 位输出口,而 CRH 控制的是高 8位输出口 。
端口高配置寄存器 CRH
IDR 是一个端口输入数据寄存器,只用了低 16 位 。该寄存器为只读寄存器,并且只能以16 位的形式读出 。要想知道某个 IO 口的状态,你只要读这个寄存器,再看某个位的状态就可以了 。
端口输入数据寄存器 IDR
ODR 是一个端口输出数据寄存器,也只用了低 16 位 。该寄存器为可读写,从该寄存器读来的数据可以用于判断当前 IO 口的输出状态 。而向该寄存器写数据,则可以控制某个 IO 口的输出电平 。
端口输出数据寄存器 ODR
比如我们要设置 PORTB 的PB.5为推挽输出的LED初始化配置 。
void LED_Init(void)
{
RCC->APB2ENR|=1<<3; //首先使能 PORTB 时钟
GPIOB->CRL&=0XFF0FFFFF;//清掉PB.5原来的设置,同时也不影响其他位的设置
GPIOB->CRL|=0X00300000;//PB.5 推挽输出
GPIOB->ODR|=1<<5; //PB.5 输出高
【数据寄存器多少位怎么算?数据寄存器D】

推荐阅读