2019-07-15 08:40发布
wulinwl 发表于 2018-4-13 21:03 现在使用的都是8位以上的单片机,在8位机中都是以8位为基础处理数据的,极少把8位数据再分解为高4位和低4位来处理,虽然有一些使用案例,但现在对你讲你也不能理解,随着学习水平提高自然就明白了。
不是8位分为高4和低4,我想要的是16位分为高8和低8。
不管前面的,你看看下面的可以实现?
int a = 248; z = a;然后再怎么把 z = a转成 z=0xf8;(这个你可以当成高8位的吧)
int b = 169; y = b; 然后再怎么把 y = b转成 y = 0xa9;(这个你可以当成低8位的吧)
这个要怎么实现?
wulinwl 发表于 2018-4-14 07:38
最多设置5个标签!
不是8位分为高4和低4,我想要的是16位分为高8和低8。
不管前面的,你看看下面的可以实现?
int a = 248; z = a;然后再怎么把 z = a转成 z=0xf8;(这个你可以当成高8位的吧)
int b = 169; y = b; 然后再怎么把 y = b转成 y = 0xa9;(这个你可以当成低8位的吧)
这个要怎么实现?
有点像c语言一样:
int main()
{
int a = 248;
int b = 169;
printf("z = %#x ", a);
printf("y = %#x ", b);
return 0;
}
就是想得到输出的z和y一样的结果;
但在单片机中怎么输出这样的z和y;
uint8_t test(void)
{
uint8_t hi4 = 0;
uint8_t lo4 = 0;
uint8_t z = 248;
hi4 = (z & 0xF0) >> 4;
lo4 = (z & 0x0F);
if(hi4 >= 'A')
hi4 -= (10 - 'A');
else
hi4 += '0';
if(lo4 >= 'A')
lo4 -= (10 - 'A');
else
lo4 += '0';
//printf("0x%0x", z);
//printf("0x%c%c", hi4, lo4);
}
是不是说也可以这样合成8位的:
char x, y, z;
void main()
{
x = 15;
y = 8;
z = x<<4|y;
}
又或者这样合成16位的:
char x, y, a;
int z, b;
void main()
{
x = 10;
y = 9;
a = x<<4 | y;
b = 248;
z = b << 8 | a;
}
是这样的?
一周热门 更多>