单片机中高8位是啥,低8位又是啥,还有高四位低四位的,求解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机中高8位是啥,低8位又是啥,还有高四位低四位的,求解相关的知识,希望对你有一定的参考价值。

基本的楼上也说了,再补充几点。
(1)之所以要分低8位和高8位的原因是,普通51单片机(其实基本上简单的单片机都这样)的寄存器只能放下8个字(位,bit),即1 byte(1字节)
(2)高低八位其实就是把一个数拆开来。如果一个数高于0xff,小于0xffff就会出现放不进1个寄存器但却能拆开来放在2个寄存器的情况(这种情况很普遍)。所以这时候把这个数转换成16位的2进制数,然后把16位拆成高8位和低8位。而在8088之类的危机中,更有20位寻址,把数拆成高4位低16位的情况。
(3)其实八位八位得拆很直观啊,一个16进制数可以变成4位2进制数(而不用进行其他变化),比如0xfa就可以看成0xf0+0x0a,f=1111,a=1010,所以0xfa=1111(高四位) 1010(低四位),很方便吧。这就是八进制、十六进制、二进制为何广泛应用于数字系统设计的原因。而数字电路中从最简单的3-8译码器,到64位微机都很注重高低位的放置。
(4)所以综上,0x2f4a中,2f就是高八位,4a就是低八位,如果0x4a,则4是高四位,a是低四位
参考技术A 在51单片机上一个int型为16位数据,char型为8位数据。
高8位低8位是对应于16位数据来说的,
如二进制的:1111111100000000 16进制的:0xff00
那么它的的高8位则是:11111111(二进制) 0xff(16进制)
低8位则是:00000000 0x00
同理,高4位低4位是对应于8位数据来说的。本回答被提问者采纳
参考技术B 学习了

stm32的GPIO端口模式的枚举结构定义的每个模式的高四位是啥意思,是用来干啥的?

根据手册配置分为两个部分
上下拉输入模式配置,CRL或CRH相应的4bit配置位应该配置为 1000
ODR配置,配置该输入端口是上拉还是下拉,根据手册应该是上拉,ODR的相应bit为1,下拉ODR的相应bit为0。
但是库文件给出的GPIO模式枚举结构中,将上下来的高位分别定义为0100/0010这是为什么?
还有输出模式也是的高位都定义为1,也不知道是何用意?
深刻求解释????

在GPIO枚举结构中 给出的结构体
typedef enum
GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
GPIOMode_TypeDef;
这里的只是一个标示,并不能代表它对寄存器是怎么设置的,你可以看下面他的库函数里怎么设置的,另外此处枚举还很好的区分输入输出,输出模式的第4位为1,可以通过此判断你的模式是输入还是输出。

/* Reset the corresponding ODR bit */
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)

GPIOx->BRR = (((u32)0x01) << pinpos);

else

/* Set the corresponding ODR bit */
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)

GPIOx->BSRR = (((u32)0x01) << pinpos);


他会判断你配置的模式是什么,然后根据pinpos来设置对应的端口
参考技术A


摘自霸道103手册,侵删

以上是关于单片机中高8位是啥,低8位又是啥,还有高四位低四位的,求解的主要内容,如果未能解决你的问题,请参考以下文章

什么是STM32的高寄存器和低寄存器?

stm32的GPIO端口模式的枚举结构定义的每个模式的高四位是啥意思,是用来干啥的?

PIC汇编入门示例

PIC汇编入门示例

byte取高4位,低4位,byte转int

单片机简易计算器的设计要求用2*8矩阵键盘,程序如下,求大神把下面4*4键盘程序改成2*8的,可追加分数