我有16位寄存器,它包含在LSB和MSB一些值:获得值寄存器
LSB:
在位0 ... 1个的值是0
在比特2个的值是0
MBS:
在MSB我需要写值20
所以应该在寄存器写入的值是0 + 0 + 20 = 160
当我在读注册我做它是这样的:
对位的第1个值[0 ... 1]:
firstVal = (valFromReg & (((1 << 2)-1) << 1)/2)
secondVal = (valFromReg & 4)/4
但如何读取/转换第三个值得到数字20?
也许我解释了我的问题有点不对。正如我在第一篇文章中解释的那样,前3位是为某些值保留的。位[0 ... 1]的最大值为3,位2的值可以是0或1,第三个值可以在0和255之间。我的问题是如何存储第三个值并从寄存器读回? – Josef