单片机文档的时候一般寄存器是rw类型,还有一些是r或者w。对于一些特殊寄存器的置1是由硬件自动实现的,比如标志位flag、中断int;但清0还是需要通过软件进行操作。清0方式有两种,写1清0、写0清0。这两种方式有什么区别呢?在硬件实现上有什么不同?
单片机内部有各种功能的寄存器,比如PIC、C51系列8位的单片机,寄存器的宽度就是八个二进制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位数据是1100,低四位数据是0011。
单片机是可以进行位操作的,一个8位的寄存器,我们可以只针对其中一个位或者某些位进行操作,将寄存器相应的位赋值1(高电平)为置位,相反赋值0(低电平)为清零。这是一种比较容易理解的方式。
但对于写1清0有几种说法:
1)从电路角度去看,对某位写1,即输入一个高电平,使内部的一个三极管导通接地,电容放电进行清0。
2)写1是在硬件上产生一个复位脉冲。能写0清除就很可能也可以写1进去,而这与功能要求不符。如要控制只能写0而不能写1,则硬件比较复杂。
3)从应用便捷性角度来说,读了寄存器数据以后,照着写回去就可以清0,不用再更改一次数据。
还有寄存器一般支持的是byte、half word、word操作,对于寄存器上有几个标志位的情况下,完成对单一标志位的清0,又不影响其他标志位,但又必须对其他位进行写,因此也就只能是写1或者写0清0才有效,只能一种方式。
责任编辑:haq
-
单片机
+关注
关注
6044文章
44633浏览量
639524 -
寄存器
+关注
关注
31文章
5377浏览量
121410
发布评论请先 登录
相关推荐
DAC7678输出清零的时候偶尔会莫名其妙的冒出瞬间高输出,再回到0电平,为什么?
在上电后,有时候会出现DAC1220E输出不清零的情况,怎么解决?
74ls163是同步清零吗
单D型异步清零触发器SN74LVC1G175-EP数据表
![单D型异步<b class='flag-5'>清零</b>触发器SN74LVC<b class='flag-5'>1</b>G175-EP数据表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有清零功能的汽车类八路 D 型触发器SN74LV273A-Q1数据表
![具有<b class='flag-5'>清零</b>功能的汽车类八路 D 型触发器SN74LV273A-Q<b class='flag-5'>1</b>数据表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM8s 003 EEPROM断电后不保存,eeprom数据被清零的原因?
具有清零和预设功能的汽车类双路正边沿触发D型触发器SN74AHC74Q-Q1数据表
![具有<b class='flag-5'>清零</b>和预设功能的汽车类双路正边沿触发D型触发器SN74AHC74Q-Q<b class='flag-5'>1</b>数据表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有清零和预设功能的 SN74LVC1G74单路上升沿触发式D类触发器数据表
![具有<b class='flag-5'>清零</b>和预设功能的 SN74LVC<b class='flag-5'>1</b>G74单路上升沿触发式D类触发器数据表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论