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

2020-01-30 13:58发布

用关键字“sbit”定义某些特殊位时,在对地址分配有三种格式,其中sbit-bit name=sfr-name中为什么要求该值必须在0x80-0xFF之间,并能被8整除?求解,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
fshunj
1楼-- · 2020-01-30 18:52
自己看51的书,位寻址区只有一部分的.
lcb761085384280
2楼-- · 2020-01-30 20:31
fshunj 发表于 2013-3-23 18:35
自己看51的书,位寻址区只有一部分的.



位寻址区只有一部分,我知道,但为什么上述格式必须要求能被8整除啊?这是出于哪个方面的原因
yoz
3楼-- · 2020-01-30 23:20
lcb761085384280 发表于 2013-3-23 18:48
位寻址区只有一部分,我知道,但为什么上述格式必须要求能被8整除啊?这是出于哪个方面的原因 ...

地址能被8整除的sfr才能位寻址
lcb761085384280
4楼-- · 2020-01-31 05:03
yoz 发表于 2013-3-23 18:57
地址能被8整除的sfr才能位寻址

感觉这个可以明白,但就是不能说明白!
wctmdgcd
5楼-- · 2020-01-31 07:10
 精彩回答 2  元偷偷看……
xwkm
6楼-- · 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就可以了。

一周热门 更多>