标题: 8位单片机每8个寄存器中才有一个能够进行可位寻址? [打印本页]

作者: linxiaosen02    时间: 2023-7-11 19:15
标题: 8位单片机每8个寄存器中才有一个能够进行可位寻址?
问一个51单片机的问题
为什么51单片机这种8位单片机的寄存器 ,每8个中才有一个能够进行可位寻址。在网上搜索不到想要的答案,特来求助。

作者: mygreen    时间: 2023-7-12 00:19
因为51单片机寻址是按照8位寻址的 也就是说每次跳跃8个bit 就是你定义的sbit的大小 一共8个 因为能被8整除就表示符合一次寻址的大小,所以才能进行寻址。
作者: 188610329    时间: 2023-7-12 01:16
8位单片机,表示他的标准差寻址能力只有8位,即0-255,256个地址位,是他可以直接管理的,那么,256个位地址,分布后就是32个字节,其中16个字节用在bdata,方便用户定义flag,16个字节映射到sfr,所以每8个字节只能有一个,是你看到的表象,本质是,他有128个位地址份额,把他平均映射在可以被8整除的寄存器而已。你如果自己开发一个单片机完全可以把他一股脑映射在 0x80-0x8f 这段寄存器,或者不给bdata额度,全部用在sfr,那么你就能每4个有一个了。
作者: wys91203    时间: 2023-7-12 07:41
像TH0  TL0   等寄存器没有位寻址的必要吧
作者: zsyzdx    时间: 2023-7-12 09:14
2的8次方是255,超过就不行了。
作者: xuyaqi    时间: 2023-7-12 09:53
这是单片机的硬件设计,要弄懂要学计算机硬件原理,作为单片机应用者记住就行。
作者: hi等你    时间: 2023-7-12 09:54
51单片机可以20H-2FH都可以位寻址的,不是才有一个
作者: sbskywalker    时间: 2023-7-12 10:35
因为这是8位单片机的架构决定的,此外进行位寻址与段寻址其实从应用角度是一样的,对应读写相对应的位即可
作者: 1600277881    时间: 2023-7-12 10:43
因为要压缩指令在最少的字节数, 位寻址只能是被8整除的地址, 就能省下3 bits,这刚好就能放要被操作的位位置,b0~b7刚好3 bits, 这样就能只用一个字节指定位寻址的地址及位的位置。
作者: Hephaestus    时间: 2023-7-12 13:44
问题就不成立,绝大多数8位单片机不可以位寻址。
作者: Y_G_G    时间: 2023-7-13 15:02
这个几乎不叫问题
人家做8051就是这个样子的,也许是架构的问题,也许是制造工艺的问题
作者: 984905742    时间: 2023-7-13 17:05
8051就是这个样子的,也许是架构的问题,也许是制造工艺的问题

作者: yzwzfyz    时间: 2023-7-14 17:30
1、在设计指令系统时,51系统中增加了位寻址指令,由于是8位的系统,自然是用一个字节区分指令(本码表示寻址了),一个字节表示寻址哪一个(本码指向欲寻的位),这时关键字来了,8位只能区分256个位址了)。【用双字节指令位寻址,后一个字节指向要寻的位】
2、51系统中给了用户128个位,它们对应在RAM的20H-2FH这16个字节上,20H.0位对指令的00H,2FH.7对应指令的7FH。(指令的第二个字节)
3、51系统中的许多特殊寄存器也是非常需要位寻的,特殊突破口有128个字节(地址从80H-FFH),全部位寻需要1024个位。如前所述,总共256位,用户用去128位,还剩余128位,合算成字节,也只能位寻16个字节。
4、于是将特殊突破口80-FFH中,选出能被8整除的地址字节(80H,88H,90H...F0H,F8H),恰好16个字节的128位,分配给了剩余的位寻址。
5、其中80H.0(也就是P0.0口)对应指令码80H,88H.6(也就是TCON.6 = TR1)对应指令码8EH。
6、明白以上,就知道:TMDO(89H),SBUF(99H)是不可以位寻址的了(地址不是8的整数倍)。
以上是个人对51的理解与猜想。
51的位寻功能,这其最灵活的特点。许多其它系统,无独立的位寻址指令。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1