别再心动啦. 2022-01-15 13:52 采纳率: 25%
浏览 40
已结题

有关于51单片机的问题。

img


图中是关于51单片机动态数码管显示的一段代码,然后我划线这行代码,这一行简化为P2=4*Location;,case就不是从1-8了,而是从0-7;是为什么呀,求大神指点。

  • 写回答

1条回答 默认 最新

  • 房道强 2022-01-15 22:39
    关注

    P2=4Location,首先Location4意味着值左移2位后赋值给P2整个字节(8个位),原本是通过位赋值,分别单独对P2的位2,3,4单独赋值,楼主代码不全,猜测可能是实现单独对具体GPIO口的操作,即P2的2口,3口,4口。简化成P2=4*Location,就不需要单独操作,比如,
    Locatiion是0,左移2位后(乘以4)是0,二进制表示00000000,对应原来的case 8;
    Locatiion是1,左移2位后(乘以4)是4,二进制表示00000100,对应原来的case 7;
    Locatiion是2,左移2位后(乘以4)是8,二进制表示00001000,对应原来的case 6;
    Locatiion是3,左移2位后(乘以4)是12,二进制表示00001100,对应原来的case 5;
    Locatiion是4,左移2位后(乘以4)是16,二进制表示00010000,对应原来的case 4;
    Locatiion是5,左移2位后(乘以4)是20,二进制表示00010100,对应原来的case 3;
    Locatiion是6,左移2位后(乘以4)是24,二进制表示00011000,对应原来的case 2;
    Locatiion是7,左移2位后(乘以4)是28,二进制表示00011100,对应原来的case 1;
    这样实现的整体效果就是对P2的三个位直接操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月15日

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100