文章目录

  • 前言
  • 一、位运算——按位取反
  • 二、代码部分
    • 1.实例代码
    • 2.对核心代码P2=~i 的解释
  • 总结

前言

51单片机独立按键实现LED显示二进制【代码详解】
——按位取反
——具体实现原理


提示:以下是本篇文章正文内容,下面案例可供参考

一、位运算——按位取反

按位取反,顾名思义, 按照 位 (bit)取反
二进制只有0和1,其中1代表 真 ,0 代表 假 。例如:二进制数 1001取反后为0110
1字节=8位,这次实验使用的是P2总线 (8位)
其中这8位默认八个1 ,高电平 ,点灯是低电位 0 点亮
二进制表示:1111 1111

二、代码部分

1.实例代码

#include <REGX52.H>void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void main()
{unsigned char i=0;while(1){if(P3_0==0)          //如果K1按键按下{Delay(20);       //延时消抖while(P3_1==0); //松手检测Delay(20);        //延时消抖i++;        //变量自增P2=~i;       //变量取反输出给LED}}
}

2.对核心代码P2=~i 的解释

首先 这是对总线的操作,总线有八位,赋值一次便可以赋值到总线的8位 ,这里的八位可以理解成八个通道

Ps:本次实验使用P2总线 :P2_0~P2_7 ,按键使用P3_1

按一次按键 执行一次i++;实现原理看代码

假设按了八次,分别对应 i的值
取反前: 1,2,3,4,5,6,7,8
取反后:-2,-3,-4,-5,-6,-7,-8,-9

对应的二进制值(取8位):
1111 1110,1111 1101,1111 1100,1111 1011,1111 1010,1111 1001,1111 1000,1111 0111
按八次,分别将这八个值,分别赋值给P2总线

单片机就会以这样的二进制顺序点亮LED
视频:
https://live.csdn.net/v/207479

总结

理解取反运算,理解给总线赋值。

C51单片机LED显示二进制【核心代码详解】相关推荐

  1. MeanTeacher文章解读+算法流程+核心代码详解

    MeanTeacher 本博客仅做算法流程疏导,具体细节请参见原文 原文 原文链接点这里 Github 代码 Github代码点这里 解读 论文解读点这里 算法流程 代码详解 train_transf ...

  2. FixMatch文章解读+算法流程+核心代码详解

    FixMatch 本博客仅做算法流程疏导,具体细节请参见原文 原文 查看原文点这里 Github代码 Github代码点这里 解读 FixMatch算法抓住了半监督算法的两个重要观点,第一个是一致性正 ...

  3. .Net 反射脱壳机代码核心代码详解

    本文主要对 <.Net 反射脱壳机核心源代码 >一文代码的原理和使用进行详细介绍. 首先介绍一下代码主要流程: 入口函数 void DumpAssembly(Assembly ass,st ...

  4. 【锁相环系列3】QPSK解调之Costas锁相环去小频偏(重点环路滤波器参数设置和迭代核心代码详解)

    关注公号[逆向通信猿]更精彩!!! 假设在QPSK信号解调中,完成匹配滤波.定时抽样后的星座如下所示 而画出基带信号部分点的星座图如下所示 由以上两幅图可以看出,基带信号中还存在微小的频偏,导致星座图 ...

  5. 深入浅出吃透多线程、线程池核心原理及代码详解

    一.多线程详解 1.什么是线程 线程是一个操作系统概念.操作系统负责这个线程的创建.挂起.运行.阻塞和终结操作.而操作系统创建线程.切换线程状态.终结线程都要进行CPU调度--这是一个耗费时间和系统资 ...

  6. 51单片机串口通信发送以及接收代码详解1

    #include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...

  7. 51单片机串口通信发送以及接收代码详解2

    #include <reg51.h> //实验现象:在电脑端没按下发送的时候,单片一直给电脑发送aaa字符串: //实验现象:在电脑端按下发送的时候,结束字符串aaa的发送代码,执行单片接 ...

  8. Qt开发技术:QCharts(三)QCharts样条曲线图介绍、Demo以及代码详解

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108022984 各位读者,知识无穷而人力有穷 ...

  9. socket 获取回传信息_Luat系列官方教程5:Socket代码详解

    文章篇幅较长,代码部分建议横屏查看,或在PC端打开本文链接.文末依然为爱学习的你准备了专属福利~ TCP和UDP除了在Lua代码声明时有一些不同,其他地方完全一样,所以下面的代码将以TCP长连接的数据 ...

最新文章

  1. webpack-插件机制杂记
  2. 解决网页ICON图标无法显示的问题
  3. Halcon初学者知识 【11】自定义算子和应用实例
  4. 电商ERP vs.传统ERP,有何不一样?
  5. 两点定标法_一种两点校正红外热像仪的非均匀性的模块及方法
  6. C语言格式控制符/占位符 - C语言零基础入门教程
  7. JMeter性能测试工具简介
  8. Spring--事务处理编程
  9. PHP中 如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变...
  10. RCP之病人信息系统开发总结(4):MVC模式之View层—透视图
  11. python 读grid 数据_jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???...
  12. Simple-RNN with Keras
  13. Python基础知识题库(带答案)
  14. 视频编辑 ae pr 区别
  15. ug12对计算机配置要求,ug12.0对电脑配置要求
  16. 密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等...
  17. 手机二维码应用潜力无限
  18. Power bi 4.19 龙卷风图
  19. gocv拆分颜色通道
  20. GhostXP_SP3电脑装机终极版V9.7 (NTFS版)

热门文章

  1. linux命令dstat,dstat命令
  2. 淫思奇巧篇 之 Save Actions 替你摆平代码格式问题
  3. 使用fake_useragent报错:fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached
  4. 【STM32学习】(26)STM32实现舵机旋转并实现超声波检测
  5. Java毕业设计——> JSP+Servlet+C3P0+Mysql实现的网上蛋糕店
  6. DO447Ansible Tower的维护和常规管理--备份和修复
  7. 51单片机学习笔记-7LED点阵屏
  8. 数字逻辑实验——138译码器
  9. VOLO开源:首次在ImageNet上达到87.1%
  10. TFS 数据库表信息