C51单片机 独立按键控制LED显示二进制
代码展示:
- #include <STC12C5AXX.h>
- void Delay20ms() //@32MHz
- {
- unsigned char i, j, k;
- i = 3;
- j = 111;
- k = 138;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void main ()
- {
- unsigned char LED=0;
- P11=0;
- P20=0;
- P21=1;
- P22=1;
- P23=0;
- while(1)
- {
- if(P27==0)
- {
- Delay20ms();
- while(P27==0);
- Delay20ms();
-
- LED++;
- P0=~LED;
- }
- }
- }
复制代码 在看视频中遇到的困惑,CSDN中的一篇文章的解答:
注意到unsigned char LED的作用:
假设没有这个值,那么P2的位置(即所有的灯都会亮起),或者说该亮的地方没亮,但是不该亮的地方全都亮了
然后就需要我们进行按位取反
但是按位取反之后1111 1111溢出(因为进行P2++导致了溢出)就回变成 0000 0000,然后使用~进行按位取反之后又变成了1111 1111,至始至终没有改变,所以就需要使用到LEDNum这一个值进行一个代换
————————————————
版权声明:本文为CSDN博主「无你想你」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_62904883/article/details/125145078
|