2015-11-16 2 views
0

Я хотел бы определить один бит регистра или переменной. Например: #define Pin5 (5-й бит порта A) // Предполагая, что porta является 16-битным типом данных.Бит-манипуляция одного бита целочисленного или битового маскирования

Как я могу определить один бит переменной, чтобы я мог легко переключаться с этим битом и сделать мой код проще на моих глазах. Обратите внимание, что я хочу, чтобы значение бит стало RValue переменной.

например Pin5 = 1; // приведет к тому, что 5-й бит partA будет равен 1

+1

возможный дубликат [Как установить, ясно и переключать один бит в C/C++?] (http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-cc) – AShelly

+1

См. [этот ответ] (http: // stacko verflow.com/a/50691/10396) – AShelly

+0

@ На самом деле Сэм, кажется, спрашивает, есть ли способ определить бит как lvalue, что является более интересным вопросом, чем просто «как его установить». –

ответ

0

Учитывая, что битподы - плохая идея, самое чистое, что я смог придумать для кода «легко на глазах» (т.е. как можно в макросы):

#define setbit(n) |=(1<<(n)) 
#define clrbit(n) &=~(1<<(n)) 

, а затем код для примера будет:

portA setbit(5); 
Смежные вопросы