登录
创易栈 匿名提问者 2020-07-22
8051,除了sfr以外还有没有什么办法可以动SFR寄存器,不要说什么at什么指针了,试了再说。
300积分

48小时没有回答 ,48小时抢答者被选中的人可获得赏金

回答
  • 创易栈 匿名提问者 2018-04-05 17:15:14
    过了好多天了,我自己来了结这个问题吧。
    从keil c51中关于.cx51的语法介绍说明可知。
    在cx51中这事是没戏的。
    最后说一下,我为什么要特别折腾这个事情。
    其实这源自于 51以后,几乎所有单片机都不具备位寻址功能,而就是51,也只有一部分空间可以位寻址。
    而对于寄存器这种频繁需要一个位,几个位的功能定义,置1和清0这个操作很麻烦,简单说,你不可能一步到位完成操作。
    比方说,有一个两个位的定义,假使要你设置成10或者01它就必然需要两步操作……具体这里不多说了,回头我会写一个很完整的文章介绍,可能会放在我个人的公众号uCer里。
    这里不多说。
    而我之所以希望可以有非sfr这种特殊关键字的方式去访问寄存器,目的是为了可以用位段这个原始的原生的c语法来模拟这种位操作。

    这个时候我的这种模拟不是为了性能,更多是为了方便代码编写。当然,我还会考虑一种问题,就是它在汇编层面带来的可能的隐藏的问题。

    还好,非51的,包括stm8这种,都可以用位段,具体的等我的文章吧。敬请关注uCer,及时得到推送。
    展开
    1 2020-08-01 15:32:34
相关问题

copyright@2014-2016 emakerzone.com 粤ICP备16121718号 公安局备案44030502001031 粤公网