登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] C51单片机 独立按键控制LED显示二进制

[复制链接]
发表于 2023-1-31 19:24:41 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C51单片机
学习安排: 想学再学
开始时间: 2023-01-14
结束时间:
C51单片机 独立按键控制LED显示二进制

  • 本节进制转换相关知识
进制转换.png

  • 本节C语言相关知识
C51数据类型.png

代码展示:
  1. #include <STC12C5AXX.h>
  2. void Delay20ms()                //@32MHz
  3. {
  4.         unsigned char i, j, k;

  5.         i = 3;
  6.         j = 111;
  7.         k = 138;
  8.         do
  9.         {
  10.                 do
  11.                 {
  12.                         while (--k);
  13.                 } while (--j);
  14.         } while (--i);
  15. }

  16. void main ()
  17. {
  18.           unsigned char LED=0;
  19.                 P11=0;
  20.                 P20=0;
  21.                 P21=1;
  22.                 P22=1;
  23.                 P23=0;
  24.         while(1)
  25.         {
  26.                 if(P27==0)
  27.                 {
  28.                         Delay20ms();
  29.                         while(P27==0);
  30.                         Delay20ms();
  31.                        
  32.                   LED++;
  33.                         P0=~LED;
  34.                 }
  35.         }
  36. }
复制代码
在看视频中遇到的困惑,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



好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表