KA_IX

  • 2197 主题
  • 2246 帖子
  • 4508 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王 突出贡献
  • E币:1068

单片机,写1清0,写0清0,有什么区别呢?

2020-11-11 16:48:21 显示全部楼层
单片机文档的时候一般寄存器是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才有效,只能一种方式。

最新评论

楼层直达:

丸子~

  • 118 主题
  • 318 帖子
  • 1610 积分
  • 身份:版主
  • E币:1547

moyanming2013

  • 108 主题
  • 343 帖子
  • 1166 积分
  • 身份:版主
  • E币:694
我要评论
2
10
广告
关闭 热点推荐上一条 /6 下一条
快速回复 返回列表