
单片机文档的时候一般寄存器是rw类型,还有一些是r或者w。对于一些特殊寄存器的置1是由硬件自动实现的,比如标志位flag、中断int;但清0还是需要通过软件进行操作。清0方式有两种,写1清0、写0清0。这两种方式有什么区别呢?在硬件实现上有什么不同? 单片机内部有各种功能的寄存器,比如PIC、C51系列8位的单片机,寄存器的宽度就是八个二进制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位数据是1100,低四位数据是0011。 ![]() ( Y7 w! {0 b# j- R 单片机是可以进行位操作的,一个8位的寄存器,我们可以只针对其中一个位或者某些位进行操作,将寄存器相应的位赋值1(高电平)为置位,相反赋值0(低电平)为清零。这是一种比较容易理解的方式。 但对于写1清0有几种说法:
/ X- X/ j$ s; g" v I8 I0 U ![]() 还有寄存器一般支持的是byte、half word、word操作,对于寄存器上有几个标志位的情况下,完成对单一标志位的清0,又不影响其他标志位,但又必须对其他位进行写,因此也就只能是写1或者写0清0才有效,只能一种方式。 |