关于关键字“sbit”定义某些特殊位的问题

2020-01-30 13:58发布

用关键字“sbit”定义某些特殊位时,在对地址分配有三种格式,其中sbit-bit name=sfr-name中为什么要求该值必须在0x80-0xFF之间,并能被8整除?求解,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
xwkm
2020-01-31 09:37
意思就是说,在51的体系中,能够有效的被SETB操作的8位寄存器的地址必须被8整除
类似0x80(P0)。
拿一个地址,0x81来讲。
如果对八位操作的话,MOV 81H,.....这个指令是对在0x81的8位寄存器操作。
但是,SETB 81H / CLRB 81H却是对P0的第一位操作。
也就是说,P0.1在位操作指令上使用的地址是0x81,和8位寄存器0x81不是一个东西。
51这里很纠结的。高128B的内存只能用 MOV @PTR,...的方法操作。直接寻址就变成操作寄存器了。
外部RAM也是必须指针的。位操作只有能被8整除的寄存器,不像avr,直接sbi,cbi就可以了。

一周热门 更多>