单片机如何清零寄存器某一位,操作方法解析

单片机如何清零寄存器 置位就是把该位置1,清零就是把该位置0
硬件自动清零就是当某种条件成立,硬件会自动把该位清零。
比如定时计数器工作时,当定时时间到了,定时中断请求标志位硬件自动置位,当cpu响应了中断以后就会自动把该位清零。
所谓的软件清零,就是要在程序中,通过指令把该位清零。
写1清零应该是某些单片机特有的,比如avr单片机,要把某个寄存器清零,先写1-既是输入高电平,这样可以使内部的一个三极管导通接地,电容放电,进行清零!
这都是对某些特殊的寄存器,比如中断标志位等,需要这样操作。对于一般的寄存器比如porta口等,置位就是写1,清零就是写0
mcs51如何对工作寄存器某一位清零: 1、读出这个寄存器的值。
2、如果要清除第5位,就让读出来的数和0b11011111(二进制)位与。同理啊。
3、将位与后的结果写回去。
  单片机寄存器某一位置位或清零 程例一:将寄存器中的某一位置1或则清0,保持其他位不变。
int l_data;
void setbit(int pos)//将某一位置位的操作
{
if((pos 》= 0) && (pos 《= 31))
{
l_data |= bit_mask(pos);//bit_mask是 掩码。就是除了这一位其余位均为0
}
}
void clrbit(int pos)//将某一位清0的操作
{
if((pos 》= 0) && (pos 《= 31))
{
l_data &= ~bit_mask(pos);
}
}
说明:
该操作的依据如下:
1.0|1 == 1,1|1 == 1,故无论0还是1同1执行|操作,结果为1;无论0还是1同0执行|操作,都将保持不变。
2.1&0 == 0,0&0 == 0,故无论0还是1同0执行&操作,结果为0;无论0还是1同1执行&操作,都将保持不变。
程例二、判断寄存器某一位为0还是1
bool is1(int pos)//判断某一位是否为1
{
if((pos 》= 0) && (pos 《= 31))
{
if(l_data & (bit_mask(pos)) == 0x1)
{
return true;
}
else
{
return false;
}
}
}
程例三、将寄存器的某一位取反(1-》0;0-》1)
void reversebit(int pos)//将某一位取反
{
if((pos 》= 0) && (pos 《= 31))
{
l_data ^= bit_mask(pos);
}
}
说明:与0异或,保持不变;与1异或,取反。
程例四、保留2个数的不同部分,将它们合并为1个数
方法一:这两个数除了有效位之外,其他位均为0,可以将其先适当移位操作,然后在“|”运算。
例一:将temp中的低8位和t中的高4位组合成一个12位数
unsigned short temp = 0x00ab;
unsigned char t = 0xc0;
temp = temp《《4;
temp |= (t》》4);
例二:保留channel的底4位,将其作为result的高4位,result的低4位设置为0xc;
channel = (channel《《4) | 0x0c;
方法二:如果这2个数除了有效位之外,其他位需要保留为1,方法是先与适当的数“|”,之后2个数“&”
例一:保留temp的高4位和line的底4位,并将其组合成result。由于line的其他位全位1,所以必须先将temp的其他位全部设置为1,之后2个数“&”即可。
unsigned char result;
unsigned char temp = 0xab;
unsigned char line = 0xfe;
temp |= 0x0f;
result = temp&line;
程例五、将一个16位数的高低8位分别拆成2个8位数,方法是通过多字节数赋给少字节数,多字节数高位字节部分将被自动截取的原理。
unsigned short temp = 0xcdab;
unsigned char fir;
unsigned char sec;
fir = temp》》8;
sec = temp;
程例六、如果cpu没有来算数移位操作,如何用逻辑移位操作实现。
例如:line = 0xfe,如何实现其的左移操作后,右边补入的是1而不是默认的0。
line = (line《《1)|0x01;
如果要清零寄存器某一位可使用按位与(&)运算符。
例如要将pb1清零而其他位不变。
为何 写成portb&0xfd?
0xfd的二进制是11111101,右数第二位的0对应的引脚就是pb1,和0按位与后,这个位上的值就是0

防雷元器件的性能特点
三星电子砸近70亿美元新建7mn厂
[图文]IC+分立件的RIAA电路
工业焊接机器人对比人工焊接的优势
安卓主板_MTK6765安卓开发板-联发科安卓主板方案介绍
单片机如何清零寄存器某一位,操作方法解析
多层线路板起泡的原因及解决办法
上海联通5G用户突破百万,5G人口覆盖率达到了80%以上
聊一聊设计PCB时需要注意哪些点
小米5c正式升级安卓7.1,官方推送
腾讯优图/浙大/北大提出:重新思考高效神经模型的移动模块
热敏电阻NTC引脚与多股线应该如何焊接
五菱宏光S 1.5L MT上手体验评测
电动机在运行中避免烧毁的6个技术维护措施
平行光源OPT-PL系列
人工智能技术能否为疫后全球经济复苏开出科技良方?
小米MIUI9欲推新风格,网友:桌面图标显得很乱!
直流系统的作用及构成
什么是电采暖,相比传统供暖有什么优势?
AMD推出新显卡,性能比RX 5500XT高出35%