图中是关于51单片机动态数码管显示的一段代码,然后我划线这行代码,这一行简化为P2=4*Location;,case就不是从1-8了,而是从0-7;是为什么呀,求大神指点。
有关于51单片机的问题。
图中是关于51单片机动态数码管显示的一段代码,然后我划线这行代码,这一行简化为P2=4*Location;,case就不是从1-8了,而是从0-7;是为什么呀,求大神指点。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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无用
悬赏问题
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100