51单片机逆向,更新4,用P0口控制实现流水灯效果。

8051单片机手工逆向练习 代码到41,就完毕了,对反汇编代码进行整理,这里有的变量没有定义,需要处理掉这些变量,使汇编不报错,就OK了.附上汇编代码 ,下面的地址编号,知识一个编号,没有过多的整理, 如果大家感兴趣可以对照C语言去整理一下,如果是汇编写的代码,在来逆向的话,思路会清晰很多,下个案例我用汇编写,再手工逆出来,对比一下,这样学习。这里是学习过的过程,所以线写一个简单的C代码,下载进单片机,正常运行。把此代码保存为bin,用ida打开。下载进单片机,led指示灯闪烁。下面是汇编,asm,编译正常, 阅读详情

51单片机逆向

51单片机逆向1,点亮一个LED示例

C代码

参考代码


#include <reg52.h>   //包含特殊功能寄存器定义的头文件

sbit LED = P0^0;     //位地址声明,注意:sbit必须小写、P大写!
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
    ENLED = 0;
    ADDR3 = 1;
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;
    LED = 0;        //点亮小灯
    while (1);      //程序停止在这里
}

hex烧录文件

在这里插入图片描述

用IDA加载

看下框图
在这里插入图片描述

这里看出从地址00出,跳到地址11处,这里是做初始化工作。 完成之后跳到我们的用户程序main中。

初始化程序
我们一步一步来,这里先从简单的开始。
在这里插入图片描述

跳转指令总结:

这里用到了短跳sjmp和长跳limp指令。其中02 00 11 ,02 后面给的是绝对值地址,这个是长跳,02是机器码
长跳给绝对值地址
其中验证一下,从初始化完成跳转到用户函数也是用的绝对值跳转,长跳。
长跳指令验证

下面看一下短跳:
短跳用到的是sjmp指令 80 是机器码,后面给一个有符号的地址(这个地址是相对地址,区别于绝对值地址。),这里要注意是有符号的,一般这样理解就没有错。如果是负数就是回跳,是正数往下跳。(注意FE需要转换为有符号的数。)
短跳指令sjmp
这里看一下指令djnz,机器码D8 FD
DJNZ跳转指令
djnz是给的相对指令,相对于当前pc指针的值。这里FD也是有符号数。
给同学们留一个作业,FD转换为有符号数是多少?

51单片机逆向2,LED闪烁示例

C代码

#include<reg52.h>

sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()  //void即函数类型
{
    //以下为声明语句部分
    unsigned int i = 0;  //定义一个无符号整型变量i,并赋初值0
    
    //以下为执行语句部分
    ENLED = 0;   //U3、U4两片74HC138总使能
    ADDR3 = 1;   //使能U3使之正常输出
    ADDR2 = 1;   //经U3的Y6输出开启三极管Q16
    ADDR1 = 1;
    ADDR0 = 0;
    while (1)
    {
        LED = 0;                  //点亮小灯
        for (i=0; i<30000; i++);  //延时一段时间
        LED = 1;                  //熄灭小灯
        for (i=0; i<30000; i++);  //延时一段时间
    }
}
 

hex烧录文件

hex文件

用IDA加载

看下框图,框图比项目1点亮led要复杂多了。看下面的分析。

在这里插入图片描述

汇编代码分析

1,这里我们分成模块来分析。从这里直接跳到初始化函数中。

入口

2,初始化函数和上面基本一致,这里略。

初始化完成初始化之后跳到用户函数。这里重点是用户函数的分析。
初始化函数

3,用户函数分析

用户函数有点复杂,我们先看用户函数的小框架
用户函数

4 ,这一段赋值和点亮led代码一致,为了方便理解这里我给添加注释,下面看重点的。

两个复位,三个置位指令

5,点亮led

点亮led

6,循环

a,这里先把A寄存器清零,同时R6,R7都清零。
b,R7加1
c, 判断R7(?)与#0是否相等不相等跳到code_17的位置。code_17也是相对位置,相对距离是1个单位。
d,R6与#0x75不相等跳到code_12的位置,这里F8也是相对位置,记住这是有符号的需要大家手动转换一下。
说明:30,000 = 0x7530,在51系统中7530被分割成两部分。
上面跳到code12的位置,重复执行b—>d的步骤。结果就是当R7加到0时候,跳出改循环,这个循环我把有用的代码提取出来
code_12:INC R7
CJNE R7 #0 code_17
code_17:cjne R6, #0x75, code_12(在这个循环中R6始终等于0不满足条件),所以上面这段指令会一致循环,当R7+++++++,溢出为0的时候满足跳出该循环(相对的说法)。
溢出之后CJNE R7 #0 code_17 这条指令满足条件,顺序执行,R6++++
也上两个循环满足0x75之后,在执行inc R7
cjne R7, #0x30, code_12,0不等于0x30.所以还需要循环到0x30.完成上面循环之后,跳出循环延时时间到。
循环
上面循环完成了。就需要熄灭LED
LED熄灭

这里就是一两,一灭完成,下面记住重复上面的循环,不过这里的差比是循环的时候跳转的位置不一样。我们看一下差异。

第二个大循环

这里看出跳到的是code_d,也就是点亮led的位置。这也就是while(1)的大循环。

这里需要说一下,clr c 这里用到了subb指令所以需要献给cy清零
在这里插入图片描述

51单片机逆向3、用P0口控制实现流水灯效果

C代码

 #include <reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
    unsigned int i = 0;     //定义循环变量i,用于软件延时
    unsigned char cnt = 0;  //定义计数变量cnt,用于移位控制

    ENLED = 0;
    ADDR3 = 1;
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;
    while (1)  //主循环,程序无限循环执行该循环体语句
    {
        P0 = ~(0x01 << cnt);      //P0等于1左移cnt位,控制8个LED
        for (i=0; i<20000; i++);  //软件延时
        cnt++;                    //移位计数变量自加1
        if (cnt >= 8)             //移位计数超过7后,再重新从0开始
        {
            cnt = 0;
        }
    }
}

hex烧录文件

02 00 3C E4 FF FE FD C2  94 D2 93 D2 92 D2 91 C
90 A8 05 74 01 08 80 02  C3 33 D8 FC F4 F5 80 E
FE FF 0F BF 00 01 0E BE  4E F8 BF 20 F5 0D ED C
94 08 74 80 94 80 40 D9  E4 FD 80 D5 78 7F E4 F
D8 FD 75 81 07 02 00 03                        
000  ?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? ?? ??
010  ?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? ?? ??
020  ?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? ?? ??
030  ?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? ?? ??
040  ?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? ?? ??
050  ?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? ?? ??

用IDA加载

这里稍微看一下大概就可以了。我们把重点放在初始化和main函数里面。
这里稍微看一下就可以了

汇编代码分析:

1 程序入口

从入口直接跳到初始化到吗Ini_Main函数里面。这里是一个长跳指令ljmp,机器码(02)后面跟的是绝对值地址。3C的地方,我们跳到3C的地方。
跳到初始化的位置

2 初始化Ini_Main函数的分析

逆向代码
这里可以看出初始化就是对内存0-127之前的范围初始化为0,循环128次,对内存初始化,后面是设置栈顶指针。
初始化的框图

3,用户函数main的分析:
1,对IO口进行赋值,并对寄存器R5,6,7进行清零

在这里插入图片描述

2,双循环
双循环这里可以参考上面的2,3的内容
3,补充一下,移位指令。rlc指令,机器码(0x33)
这里是循环对移位指令的操作。

###总结:这里没有新鲜内容,内容框架。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML。

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

2014-01-07 2014-01-09 2014-01-11 2014-01-13 2014-01-15 2014-01-17 2014-01-19 2014-01-21 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

51单片机驱动16×16点阵显示汉字:硬件设计、取模与扫描程序详解 在嵌入式系统与单片机开发中,I/O口扩展和矩阵扫描是驱动多像素显示设备的核心技术。其原理在于利用串行移位寄存器(如74HC595)扩展有限引脚,通过分时复用和视觉暂留效应,以扫描方式控制LED点阵的每个像素。这项技术的价值在于,它高效解决了单片机资源受限与复杂外设控制之间的矛盾,是学习底层硬件驱动和显示技术的经典实践。在应用场景上,它广泛用于信息显示牌、简单游戏机及教学演示设备。本文聚焦于**51单片机**与**16×16 LED点阵**的组合,通过Proteus仿真,详细阐述了从电路搭建、汉字取模到动态扫 阅读详情

相关推荐

单片机逆向分析第一步:用STM32CubeProgrammer+STlink完整提取固件bin文件指南

本文详细介绍了使用STM32CubeProgrammer和STlink调试器进行单片机逆向分析的第一步:完整提取STM32芯片固件bin文件的实战指南。文章深入探讨了环境搭建、连接建立、处理读保护(RDP)等常见问题,并提供了高级读取策略以应对非常规内存布局,确保固件提取的完整性与准确性,为后续反编译与分析奠定基础。

k5l6m的博客 448

8051单片机手工逆向 demo小例子

这里是手动,逆一个简单的程序, 如果是大型工程中的代码,远远比这工作量大,所以如果需要做这个工作,还需要编写工具,进行自动翻译成汇编,再从汇编到C,当然,如果对汇编比较熟悉的程序员,可能就不需要这一步了。打开memory窗口,输入D:0xXX即可查看内部数据RAM内容,输入X:0xXXXX即可查看外部数据RAM内容,输入C:0xXXXX即可查看程序存储器内容。这是需要烧录到单片机中的代码。

zhyjhacker的博客 1264

INFINONE XC164单片机逆向记录(R1) 汽车动力系统ECU固件逆向工程初探

此时,第一步提取的固件信息就很有用了,至少为我们提供了搜索的线索,结合固件涉及的电子属性和发动机相关信息,我发现该ECU属于英飞凌的(Infineon,前身为西门子集团的半导体部门),而该ECU采用的是C16X系列的内核,也就是说该ECU封装的实际上C16X的MCU,这款MCU原先属于西门子,因此指令集极有可能也是西门子的。通过更加细致的分析,我找到了一些MAP表,比如油量表、直接转矩控制表(DTC表)、DTS表、油量表、RPM表、进气温度表等,以及操作表的函数,比如有做MAP校验的函数,查表的函数等等。

一座明亮的小塔 1725

【MCU】可怕,别人把我MCU固件给反汇编了!(逆向)

1、聊一聊 今天推荐的歌曲没有其他理由,仅仅是因为好听! 本文主要跟大家分享一个简单逆向stm32固件程序的实例,为了让大家在一款成熟的产品中去考虑加密这一块的技术,不然...

最后一个bug的博客 2万+

STM32F1x系列芯片的逆向工程初步

总结起来,逆向工程STM32F1x系列芯片是一项复杂而有挑战性的任务,但通过深入研究和分析,可以揭示芯片的内部工作原理和特征,为开发者提供更多的理解和控制芯片的能力。逆向工程是一项重要的技术,它允许开发人员深入了解和分析芯片的内部结构和功能。逆向工程是通过分析和研究芯片的硬件和软件特征,以了解其内部结构和工作原理的过程。逆向工程STM32F1x系列芯片的过程可能会涉及到更多的步骤和复杂的技术,例如反汇编、静态和动态分析等。此外,需要注意逆向工程的法律和道德问题,确保在合法和道德的框架下进行研究和分析。

XeCuda的博客 2039

单片机:实现流水闪烁间隔500ms(附完整源码)

单片机:实现流水闪烁间隔500ms(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 304

51单片机花式流水灯项目开发全解析

单片机作为嵌入式系统的核心控制器,通过GPIO、定时器和中断等基础外设实现各种控制功能。其工作原理是通过编程配置寄存器来控制硬件行为,具有实时性强、资源占用少等技术特点。在物联网和智能硬件领域,单片机广泛应用于LED控制、传感器采集等场景。本文以经典的51单片机花式流水灯项目为例,详细解析了硬件电路设计、定时器精确控制、按键消抖等关键技术实现。项目综合运用了串口通信、状态机设计等工程实践方法,特别适合嵌入式开发初学者理解中断机制和GPIO操作原理。通过LED模式切换、速度调节等功能的实现,展现了单片机在灯光

weixin_34377919的博客 454

INFINONE XC164单片机逆向记录(6)C语言学习

本人所写的博客都为开发之中遇到问题记录的随笔,主要是给自己积累些问题。---- 文接上章 -------------------------------INFINONE XC164单片机逆向记录(1)资料准备。INFINONE XC164单片机逆向记录(3)汇编语法。INFINONE XC164单片机逆向记录(4)开发环境。INFINONE XC164单片机逆向记录(2)反汇编。指定生成的指令集为C167, 默认为C166。一个为客户逆向解析通讯协议的真实案例。指定生成类名,可以在链接器指定类地址。

一座明亮的小塔 788

51单片机LED驱动原理与软硬协同实战指南

LED驱动是嵌入式系统中最基础也最典型的输入输出控制场景,其背后涉及半导体物理特性、数字电路电气规范、单片机I/O口驱动能力等核心概念。理解LED导通压降、限流电阻计算、灌电流/拉电流差异,是掌握所有外设驱动的起点;而51单片机P1口操作、共阳/共阴接法选择、HEX文件生成与STC-ISP烧录流程,则构成了软硬协同开发的最小闭环。本文以‘点亮LED’为切入点,深入剖析从C代码到物理电平的全链路映射关系,覆盖晶振配置、复位电路、万用表硬件诊断等真实工程卡点,帮助初学者建立可迁移的嵌入式系统思维框架。

weixin_33898233的博客 849

51反汇编软件:深入单片机程序调试与逆向分析

51单片机的指令系统采用精简指令集(RISC)设计思想,共有111条基本指令,支持以下几类操作:数据传送指令(如MOV算术逻辑运算指令(如ADDANL控制转移指令(如JMPLCALL位操作指令(如SETBCLR每条指令长度为1~3字节,执行时间通常为1~4个机器周期。;示例:位操作指令SETB P1.0;设置P1口的第0位为高电平CLR P1.0;清除P1口的第0位为低电平逻辑分析。

weixin_42611310的博客 2241

C51单片机HEX到C语言反编译指南

本文还有配套的精品资源,点击获取 简介:C51智能反编译器是一款适用于51系列单片机的工具,旨在将HEX文件转换为可理解的C语言源代码。这款工具利用反编译技术,将机器码解析并转换成C语言代码,辅助开发者进行程序调试、维护和优化。反编译过程保留了原程序的逻辑结构,并优化生成的C代码以减少性能损失。此外,它还为初学者提供了学习51单片机底层工作原理和硬件交互的途径,并有助于项目...

weixin_42601547的博客 5771

51单片机驱动0.96寸OLED(IIC接口)完整教程与踩坑记录

嵌入式开发中,显示模块是人机交互的关键一环。从基础的GPIO控制到复杂的通信协议,理解底层原理是工程师进阶的必备能力。IIC总线作为一种仅需两根信号线即可挂载多设备的串行通信协议,广泛应用于各类传感器与显示屏驱动场景。本文从IIC协议的基本时序入手,解析起始、停止、应答等核心概念,并结合SSD1306驱动芯片的显存结构,阐述页地址模式下的数据写入原理。通过STC89C52单片机软件模拟IIC的实例,展示如何在资源受限的MCU上高效驱动0.96寸OLED屏幕,实现字符、数字、汉字及简单图形的显示。该方案在课程

weixin_34265814的博客 670

51单片机逆向学习实战视频教程(2)

51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。 8051单片机通常至少具备以下功能和外设: 8位CPU 程序存储器(ROM),寻址空间64KiB 数据存储器(RAM),寻址空间64KiB 4组8位共32个输入输出口 5至6个中断源,分2个优先级 全双工串行口

从原理到实践:51单片机驱动LED点阵屏的完整工程指南

在嵌入式开发中,IO口扩展与动态扫描是驱动多路输出设备的经典技术。其核心原理是利用人眼的视觉暂留效应,通过高速分时复用有限的IO口,控制大量LED等元件协同工作,从而在节省硬件资源的同时实现稳定显示。这项技术广泛应用于信息显示、状态指示和人机交互界面等场景。本文以LED点阵屏为具体载体,深入剖析了其行列矩阵结构与动态扫描机制,并针对驱动电流不足、IO口资源紧张等常见工程挑战,给出了基于三极管、ULN2003及74HC595的硬件解决方案。同时,文章详细对比了阻塞扫描与定时器中断两种软件驱动框架的优劣,强调了

346

智能驾驶感知模块的测试评估方法(上)

对于智能驾驶系统而言,感知模块是开发难度最大、投入资源最多的核心部分。在智能驾驶开发团队内部,感知模块需要独立进行评测才能及早发现潜在缺陷或判断性能是否有改进。随着近几年BEV、OCC、E2E等新技术方案被越来越多企业应用,感知的评测变得越来越艰难,效率也变得越来越低下。本文作者基于在智驾测试行业多年经验,试图总结感知评测的基本规律和效率提升方法,以供读者一些启发。

vincent_321的博客 2559

解读文献(五)------基于阻抗控制

文章目录背景主动柔顺控制阻抗控制基于力的阻抗控制基于位置的阻抗控制力位混合控制 背景 主动柔顺控制 阻抗控制 基于力的阻抗控制 基于位置的阻抗控制 力位混合控制 ...

accumulation 1万+

51单片机驱动8X8点阵LED:从动态扫描原理到滚动显示实战

动态扫描是LED点阵显示的核心技术,它利用人眼视觉暂留效应,通过逐行或逐列快速刷新,实现多像素的同时显示。这项技术基于矩阵电路和IO口分时复用原理,能有效节省单片机引脚资源,是嵌入式显示系统的基础。在单片机开发中,掌握动态扫描对于实现稳定、低功耗的显示效果至关重要,广泛应用于仪器仪表、信息屏和简单动画等场景。本文以51单片机驱动8X8点阵LED为例,详细解析了动态扫描的实现方法,并针对共阳/共阴点阵的驱动逻辑差异、消影处理等常见问题提供了解决方案,同时介绍了使用74HC595芯片优化IO口占用的工程实践,帮

weixin_30460489的博客 365

ST7789驱动实战:从SPI时序到RGB565显示的完整配置解析

本文详细解析了ST7789液晶驱动芯片的SPI时序配置与RGB565显示实现,从数据手册解读到代码实战,涵盖SPI接口配置、关键寄存器设置及完整初始化流程。通过优化DMA传输和常见问题排查,帮助开发者高效驱动ST7789显示屏,适用于嵌入式显示项目开发。

weixin_29162439的博客 184

【物联网硬件安全】二、固件分析-固件逆向

前言 对固件的一些逆向思路,通过几个具体的案例。 单片机 相对于嵌入式设备的逆向,单片机的逆向纯属于体力活,需要根据芯片定义的每个 IO 口,配合电路和外部模块进行分析、调试。逐步确定每一个分支的功能,逻辑等,是非常繁琐和复杂的工作。 这里使用 MSP430 系列芯片作为逆向分析的案例,其他的单片机也类似。 基础知识 MSP430 开发基础 Know it then hack it ,...

weixin_30886233的博客 1556

SEGGER Embedded Studio初体验

先楫HPM5E00EVK开发环境搭建

hywing's blog 1109

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Rockyoung 1万+

设计分享|基于单片机的P0口驱动LED闪烁

目录具体实现功能设计介绍51单片机简介设计思路设计内容仿真图(protues8.7)程序(Keil5)(1)利用P0.0口驱动LED闪烁,高电平有效;(2)利用P0.7口驱动LED闪烁,低电平有效。

DZGCSCZRJ的博客 1966

YOLOv8改进 | 融合篇,YOLOv8改进主干网络为MobileNetV4+CBAM注意机制+Powerful-IoU损失函数(2024 最新IOU),全网首发,实现极限涨点

本文将在 YOLOv8 主干中引入 MobileNetV4 轻量化骨干,同时,在检测头引入 CBAM机制注意力机制,并采用 Powerful-IoU 损失函数作为模型的损失函数,其中,MobileNetV4 通过引入通用反向瓶颈(UIB)搜索块和 Mobie MQA 注意力模块创新设计,实现了模型的轻量级化;同时,MobileNetV4 采用了优化的 NAS 策略,通过粗粒度和细粒度搜索相结合的方法,显著提高了搜索效率并改善了模型质量。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3784

从零到一:51单片机原理图逆向解析与实战避坑指南

本文系统讲解51单片机原理图的逆向解析方法,涵盖电源管理、核心控制、信号流向等模块分析,提供实战避坑指南和常见硬件问题解决方案,帮助开发者从零掌握51单片机开发板设计逻辑与调试技巧。

aa123的博客 599

个人量化系统的策略集合与赚钱之道:全栈深度解析 + 与主流开源框架对比

前三篇把系统的"骨架"拆完了——架构、工程化、部署。本篇回答最关键的问题:一句话:别人的系统是"程序员的系统"(写代码才能加策略),daily_stock_analysis 是"股民的 YAML"(写中文就能加策略)。这个差异决定了它能在多大程度上真的帮你赚钱。如果你用过 、、,加一个策略的流程是: 问题在哪?在 daily_stock_analysis 里,“策略” = 一个文件。每个 YAML 是一个自然语言描述的交易策略,包括: 看到没? ——整个策略就是一段中文,零代码。任何会写字的人都能加新策略

shiter编写程序的艺术 154

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4050
上一篇: ReactOS 4.2 OBJECT_TYPE_INITIALIZERj结构体的实现
zhyjhacker
博客等级 码龄17年 3203粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值