type c pin定义
Given a PIN (value in HEX) and bit number, we have to SET and then CLEAR given bit of the PIN (val) by using Macros.
给定一个PIN(十六进制值)和位数,我们必须使用宏将SET(设置),然后清除给定的PIN(值)位(值)。
Macros definitions:
宏定义:
#define SET(PIN,N) (PIN |= (1<<N))
#define CLR(PIN,N) (PIN &= ~(1<<N))
Here,
这里,
SET and CLR are the Macro names
SET和CLR是宏名称
PIN is the value whose bit to set or/and clear
PIN是要设置或清除的位的值
N is the bit number to set or/and clear
N是要设置或清除的位数
Example:
例:
#include <stdio.h>
#define SET(PIN,N) (PIN |= (1<<N))
#define CLR(PIN,N) (PIN &= ~(1<<N))
int main(){
unsigned char val = 0x11;
unsigned char bit = 2;
printf("val = %X\n",val);
//set bit 2 of val
SET(val,bit);
printf("Aftre setting bit %d, val = %X\n", bit, val);
//clear bit 2 of val
CLR(val,bit);
printf("Aftre clearing bit %d, val = %X\n", bit, val);
return 0;
}
Output
输出量
val = 11
Aftre setting bit 2, val = 15
Aftre clearing bit 2, val = 11
Explanation:
说明:
Initially val is 0x11, its binary value is "0001 0001".
最初val为0x11 ,其二进制值为“ 0001 0001” 。
In the example, we are setting and clear bit 2 (please note start counting bits from 0 i.e. first bit is 0, second bit is 1 and third bit is 2).
在该示例中,我们正在设置并清除位2(请注意从0开始计数位,即第一位为0,第二位为1,第三位为2)。
After calling Macro SET(val,bit), the bit number 2 (i.e. third bit) will be set/hight and the value of val will be "0001 0101" that will be 0x15 in Hexadecimal.
调用Macro SET(val,bit)后 ,将设置2位(即第三位)/高,并且val的值将为“ 0001 0101” ,十六进制为0x15 。
And then, we are calling CLR(val,bit), after calling this Macro, the bit number 2 (i.e. third bit) will be cleared and the value of val will be "0001 0001" again, that is 0x11 in Hexadecimal.
然后,我们调用CLR(val,bit) ,在调用此宏后,将清除位数2(即第三位),并且val的值将再次为“ 0001 0001” ,即十六进制为0x11 。
翻译自: https://www.includehelp.com/c-programs/define-macros-to-set-and-clear-bit-of-a-pin-in-c.aspx
type c pin定义