硬件地址反序?用位操作为LED灯序“纠偏”。反转二进制数即可解决
特别有意思,LED的灯序与其硬件地址刚好相反,没办法直接通过加1实现二进制进位的亮灯操作,查了一些资料说用数组和switch实现,觉得太麻烦了,思索良久,就想到了反转二进制数解决这个问题。
reverse_bits( )是实现反转二进制数:
/* 位反转函数@param num 待反转的8位数据@return 返回位顺序反转后的数值 */
unsigned char reverse_bits(unsigned char num) {unsigned char reversed = 0;int i;for (i = 0; i < 8; i++) { // 遍历每一位reversed |= ((num >> i) & 1) << (7 - i); // 将第i位移至对称位置}return reversed; // 例如:0b00000001 -> 0b10000000
}
说明:
>> 将操作数的所有位向右移动指定的位数。
<< 将操作数的所有位向左移动指定的位数。
& 对两个操作数的每一位执行逻辑与操作,如果两个相应的位都为 1,则结果为 1,否则为 0。(全1则1)
| 对两个操作数的每一位执行逻辑或操作,如果两个相应的位都为 0,则结果为0 ,否则为 1。(有1则1)
以下代码是通过按键实现二进制进位的亮灯操作(STC89C52RC):
#include <REGX52.H> // 包含8052单片机寄存器定义头文件
#include <INTRINS.H> // 包含内联函数库(如_nop_())/* 延时函数@param num 延时次数,次数越多总延时越长@11.0592MHz晶振下,每次循环约1ms */
void Delay(int num) //@11.0592MHz
{while(num){unsigned char i, j;_nop_(); // 插入一个空指令周期(1.085us)i = 2;j = 199;do { // 双重循环实现精确延时while (--j); // 内层循环约0.5ms} while (--i); // 外层循环2次,总延时约1msnum--; // 控制总延时次数}
}/* 位反转函数@param num 待反转的8位数据@return 返回位顺序反转后的数值 */
unsigned char reverse_bits(unsigned char num) {unsigned char reversed = 0;int i;for (i = 0; i < 8; i++) { // 遍历每一位reversed |= ((num >> i) & 1) << (7 - i); // 将第i位移至对称位置}return reversed; // 例如:0b00000001 -> 0b10000000
}/* 主函数:检测按键控制LED显示 */
void main() {//8051/52 系列单片机的寄存器是 8 位// 代码中 P2 端口驱动 8 个 LED,每个引脚对应 1 个 LED//通过 char 类型的位操作可以直接控制每个 LED 的状态:unsigned char num=0; while(1) { // 主循环if (P3_1 == 0) { // 检测P3.1引脚(如按键)是否按下(低电平)Delay(20); // 延时20ms消抖while (P3_1 == 0); // 等待按键释放(保持阻塞直到松开)Delay(20); // 再次消抖num++; P2=~(reverse_bits(num)); // 数值取反后发送到P2口驱动LED/* 执行流程:1. reverse_bits(num):将数值位反转2. ~:按位取反(因LED通常低电平点亮)示例:num=1(0x01) → 反转后0x80 → 取反0x7F → P2.7引脚低电平点亮LED */}}
}
效果展示:

相关文章:
硬件地址反序?用位操作为LED灯序“纠偏”。反转二进制数即可解决
特别有意思,LED的灯序与其硬件地址刚好相反,没办法直接通过加1实现二进制进位的亮灯操作,查了一些资料说用数组和switch实现,觉得太麻烦了,思索良久,就想到了反转二进制数解决这个问题。 reverse_bits( )是…...
如何让ai问答机器人通人性?
领域专用的问答机器人,数据是灵魂。通用模型的问题在于,它们虽然知识广博,但对特定领域的深度理解不足。解决这个问题的第一步,就是构建一个高质量的领域知识库。 数据要精准且全面 想让机器人真正“懂”一个领域,数…...
AI绘画笔记--基础知识
一.什么是AI绘画 AI绘画或者说AI生图,本质上来说还是图像生成技术,是一种基于深度学习的人工智能技术,通过提前大量学习学习图像特征,生成符合提示词的新图像。 整个流程可以简化理解为:人们首先让深度学习模型读取大量…...
图解AUTOSAR_CP_BSWMulticoreLibrary
AUTOSAR BSW 多核库详解 AUTOSAR基础软件多核操作库详细解析 目录 架构概述 1.1. 组件架构 1.2. API结构 1.3. 错误处理流程详细设计 2.1. 基础数据类型 2.2. 接口说明 2.3. 错误处理机制使用指南 3.1. 配置说明 3.2. 典型应用场景 3.3. 注意事项 1. 架构概述 1.1. 组件架构 …...
热key探测技术架构设计与实践
参考: 得物热点探测技术架构设计与实践 Redis数据倾斜与JD开源hotkey源码分析揭秘 京东热点检测 HotKey 学习笔记 hotkey: 京东App后台中间件,毫秒级探测热点数据,毫秒级推送至服务器集群内存,大幅降低热key对数据层查询压力 …...
【微服务】java中http调用组件深入实战详解
目录 一、前言 二、http调用概述 2.1 什么是http调用 2.1.1 http调用步骤 2.2 HTTP调用特点 2.3 HTTP调用应用场景 三、微服务场景下http调用概述 3.1 微服务开发中http调用场景 3.2 微服务组件中http的应用 四、常用的http调用组件 4.1 java中常用的http组件介绍 4…...
Python数据结构 ——字典
1.以下关于Python字典变量的定义中,正确的是()。 A. d={[1,2]:1, [3,4]:3} B. d={1:as, 2:sf} C. d = {(1,2):1, (3,4):3} D. d={‘python’:1, 2:[tea, cat]} 答案:C。在Python中,字典是存储可变数量键值对的数据结构,通过字典类型实现映射,键必须是唯一的,必须是不可变数据…...
32、构造函数
1、用构造函数反复创建多个相同结果的对象 问题 如果想反复创建多个相同结构,但是内容不同的对象时,用{}创建会代码重复,及其不便于维护! 解决 今后只要想反复创建同一类型的多个相同结构不同内容的对象时,都用构造函…...
编程环境搭建专栏目录汇总
1.WindowsvscodeclineMCP配置 2. Cline使用openrouter报错:Error Unexpected API Response: The language model did not provide any assista...
app.config.globalProperties
目录 一:基础使用 1、简介 2、使用 3、打印结果: 二:封装 1、创建一个.ts文件(utils/msg.ts) 2、在main.ts中全局注册 3、在页面中使用 4、打印结果 一:基础使用 1、简介 app.config.globalProperties 是 Vue 3 应用实例(app)的一个配置属性&…...
C# GeneticSharp包
可以直接从nuget安装GeneticSharp包 GeneticSharp 遗传算法类库 GeneticSharp 是什么 GeneticSharp 是一个C#的遗传算法类库, 遗传算法Java著名的JMetal, Python也有JMetalPy和PyMoo, C#相对差一截, 稍微有名的是GeneticSharp库. GeneticSharp 的弱点: 不支持多目标优化没…...
Leetcode做题记录----3
1474、删除链表M个节点之后的N个节点 思路: 1、两个循环解决问题 第一个循环移动M个位置,第二个循环确定移动N个位置后的,然后将M位置的节点的next指向,N位置后的节点即可 2、注意边界条件和判空处理 代码实现: pub…...
React(二):JSX语法解析+综合案例
事件绑定 this绑定方式 问题:在事件执行后,需获取当前类的对象中相关属性,此时需要this——当打印时,发现this为undefined,这又是为啥? 假设有一个btnClick函数,但它并不是我们主动调用的,而是…...
Gitee重新远程连接仓库(Linux)
Gitee重新远程连接仓库(Linux) 因为虚拟机重新安装了一回,所以需要重新和远程仓库连接,在网上找了很久没有找到相关操作,自己实操成功,记录下本博客,帮助有需要的人 确保新虚拟机安装Git 在新虚…...
Vitis HLS中的Array Partition与Array Reshape详解
Vitis HLS中的Array Partition与Array Reshape详解 引言 在高层次综合(HLS)设计中,数组是最常用的数据结构之一,但默认情况下,HLS会将数组映射到单个BRAM块,这会限制并行访问能力,成为性能瓶颈。为了克服这一限制&am…...
Centos离线安装openssl
文章目录 Centos离线安装openssl1. openssl是什么?2. openssl下载地址3. openssl-devel安装4. 安装结果验证5. 版本查看 Centos离线安装openssl 1. openssl是什么? OpenSSL 是一个开源的、跨平台的 加密工具库 和 命令行工具集,广泛用于实现…...
protobuf安装
安装 github官方链接 https://github.com/protocolbuffers/protobuf/ 以protobuf21为例 https://github.com/protocolbuffers/protobuf/releases/download/v21.11/protobuf-all-21.11.zip windows 解压好文件夹后,使用cmake,vs,qt creator等工具打开该项目,进行编译,编译需…...
《基于超高频RFID的图书馆管理系统的设计与实现》开题报告
一、研究背景与意义 1.研究背景 随着信息化时代的到来,运用计算机科学技术实现图书馆的管理工作已成为优势。更加科学地管理图书馆会大大提高工作效率。我国的图书管理体系发展经历了三个阶段:传统图书管理模式、现代图书管理模式以及基于无线射频识别&…...
小程序渲染之谜:如何解决“加载中...”不消失的 Bug(glass-easel)
🎉 小程序渲染之谜:如何解决“加载中…”不消失的 Bug 🎉 引言 在小程序开发中,渲染问题总能让人抓狂。😫 这次,我遇到了一个奇怪的 bug:产品详情页的内容已经正常显示,但页面却一…...
在 React 中使用 Web Components 的实践操作
前言 在现代前端开发中,React 和 Web Components 都是广泛使用且备受欢迎的技术。React 是一个用于构建用户界面的 JavaScript 库,提供了组件化的开发方式和高效的状态管理,而 Web Components 是一套原生的浏览器技术标准,允许开…...
网络原理之HTTPS(如果想知道网络原理中有关HTTPS的知识,那么只看这一篇就足够了!)
前言:随着互联网安全问题日益严重,HTTPS已成为保障数据传输安全的标准协议,通过加密技术和身份验证,HTTPS有效防止数据窃取、篡改和中间人攻击,确保通信双方的安全和信任。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要…...
五子棋小游戏-简单开发版
一、需求分析 开发一个基于 Pygame 库的五子棋小游戏,允许两名玩家在棋盘上轮流落子,当有一方达成五子连珠时游戏结束,显示获胜信息,并提供退出游戏和重新开始游戏的操作选项。 1.棋盘显示 : 显示一个 15x15 的五子棋…...
node-sass替换成Dart-sass(全是坑)
改了好久,人都改傻了,我是用的node:14.21.3,vue:2.5.2,webpack": "^3.12.0" 还好最后成功了,不然还准备要升级webpack版本试试,但/deep/换成::v-deep,人要死…...
2025中国科技大学少年班/创新试点班·初试备考测试卷(数学)
本卷考查内容:高中课程内容及拓展。 本卷考查形式:书面作答(客观题18小题解答题4题)。 卷首语:中科大少年班、创新班每年大规模招录在数理成绩优异的中学学生。其中初试数学题在高考基础上略有拓展,难度又低…...
即时通讯平台测试报告
1.项目概述 项目名称:即时通讯平台 版本号:V1.0.0 测试周期:2025年2月25日--2025年3月15日 测试目标:验证核心功能(登录、注册、消息收发、用户管理、群组功能等)的稳定性和性能指标。 2. 测试范围 功…...
如何记录Matlab程序运行过程中所占用的最大内存
有些时候,我们需要分析Matlab程序运行过程中所占用的最大内存。如果只是得到程序运行到当前位置所占用的内存,可以简单在程序当前位置插入memory命令即可: user memory; MemUsed_now user.MemUsedMATLAB; 但如果我们想要的是整个程序在运行…...
WIN11开发环境变量记录
这里写自定义目录标题 总图JAVA环境变量配置GIT环境变量配置NODEJS环境变量配置 总图 JAVA环境变量配置 新建系统变量。变量名:JAVA_HOME,变量值(可以选择浏览目录,JAVA的根目录,本处为D:\Java\jdk1.8.0_251ÿ…...
易语言模拟真人鼠标轨迹算法
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
洛谷P9950 [USACO20FEB] Mad Scientist B
P9950 [USACO20FEB] Mad Scientist B - 洛谷 代码区: #include <iostream> #include <string>using namespace std; int main() {int n;cin>> n;string a;string b;cin >> a >> b;int flag,step0,i,t;for ( i 0; i < a.length(…...
【人工智能基础2】Tramsformer架构、自然语言处理基础、计算机视觉总结
文章目录 七、Transformer架构1. 替代LSTM的原因2. Transformer架构:编码器 - 解码器架构3. Transformer架构原理 八、自然语言处理基础1. 语言模型基本概念2. 向量语义3. 预训练语言模型的基本原理与方法4. DeepSeek基本原理 九、计算机视觉 七、Transformer架构 …...
