能位寻址是指能够对它的每一位都可以进行位操作,比如我们常用的用十六进制的数据0x01为P1口赋值使得P1^0输出高电平,这种叫做能位寻址;
不可寻址,则是指不能单独进行每一位的操作,如TMOD定时器工作模式及工作方式寄存器,在进行操作时,只能写TMOD = 0xXX。再以IE寄存器为例进行位操作的解释。
IE寄存器为中断允许寄存器,如各位的作用如图,其中第7位EA是51单片机5个中断的总开关,如要进入任何一个中断时,需先把EA打开,因为可以进行位操作,此时程序有两种写法:IE=0x80(假如其它位为0,即1000 0000),也可以直接写EA = 1,后者EA = 1即属于位操作。
关于能否进行位操作,可以通过查相关资料知道,当然还有个技巧就是其字节地址换成10进制后能否被“8”整除,能被“8”整除的就能进行位操作,不能被“8”整除就不能,如P1地址为90H,10进制为144 144/8=18,能被整除,所以可以位操作。再如TMOD地址为89H, 10进制为137 137/8=17.125,不能被整除,所以不可以位操作。