我有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