单片机程序源码大全_单片机程序工程源码 - CSDN
  • 51单片机的160个程序源码,你想要的都在这里,各种传感器,模块应有尽有
  • 51单片机编程源码大全,51单片机大量源码,内容有:1-流水灯y、2-蜂鸣器y、3-IO口控制、4-数码管y、5-独立按键、6-矩阵键盘、7-1602液晶、10-12864液晶(带字库)、14-外中断实验、19-PCF8591 AD转换实验、20-PCF...
  • 900多个51/52单片机仿真实例大全,包含c语言 源程序项目代码,均经过测试
  • 温度控制的单片机源码单片机爱好者提供便利,内涵PID算法
  • STM32单片机BMS源码程序集 。
  • 51单片机超声波程序源码,简单模块的是个使用,用了l298n 的驱动 ,之前的使用的不好用这次的避障好用这是个简单的避障没有使用舵机之类的.
  • 飞思卡尔PPC架构单片机MPC5604B程序源码
  • 单片机程序加密思路

    2019-05-05 22:02:17
    实际产品中MCU软件涉及到机密信息,因此需要保护已上市的产品中MCU固件不被窃取,梳理了一下,具体思路有以下几种: 1、将MCU的FLASH锁死以防止固件被非法读取。 2、软件中增加自毁机制 3、在软件中增加加密算法 ...

    实际产品中MCU软件涉及到机密信息,因此需要保护已上市的产品中MCU固件不被窃取,梳理了一下,具体思路有以下几种:

    1、将MCU的FLASH锁死以防止固件被非法读取。

    2、软件中增加自毁机制

    3、在软件中增加加密算法

    第一道防范是针对那种毫无研发能力的厂商,这种厂商一般直接把MCU拿给专业破解机构进行破解获取MCU的固件,然后批量烧录到他们自己的MCU中完成赤裸裸的盗版。如果把读取FLASH固件的大门给堵住了,那么他们就无能为力了。

    第二道防范依然是针对那种毫无研发能力的厂商,为什么还要第二道防范呢?因为第一道防范并不是绝对的,有些破解机构有很强的破解能力,他们可以直接掀开MCU外层封装然后用高倍率放大镜配合特殊技术直接烧断熔丝从而破坏读保护,于是第一道防范就这样被解除了。就是阻止真实数据被读出,MCU软件检测到外部有读FLASH操作后就执行特定的函数对FLASH数据进行擦除,最后盗版者读出来的全部是空值。

    第三道防范依然是针对那种毫无研发能力的厂商,有了第二道防范,为什么还要第三道防范呢?因为软件自毁机制并一定总是有效,一旦软件设计有漏洞,那么盗版者还是可以侥幸得到固件的,因此第三道防范就出现了,目的就是即便他们千辛万苦获得了固件,如果他们自身不具备反汇编能力,无法对固件的软件逻辑进行分析,那么结果也是前功尽弃。那么第二道防范的思路是如何的呢?如下:
    ①设计一套加密算法,利用MCU内部的unique ID作为运算参数,计算结果通过第三方工具烧进MCU内部的FLASH的特定地址处。

    ②MCU软件采用相同的算法利用unique ID作为运算参数计算获得结果,然后读取FLASH中特定地址处的结果,两者进行对比,如果相同则继续执行,否则进入死循环。

    ③由于每一片MCU的unique ID都不一样,因此对于每一片MCU来说,软件利用加密算法计算得到的结果都不同。而由于盗版者不知道加密算法是什么,也不知道加密结果存放在FLASH的什么地方。因此软件从那个特定地址读到的数值始终是与当前计算的值不匹配,所以软件将始终进入死循环。

    第三道防范的原型图如下:

    第四道防范就是针对具备研发能力的厂商,这种厂商一般有能力对反汇编后的代码进行研究,因此对待这类盗版者就要增加逻辑上的误导了,这其实是很难的,毕竟通过调试和各种测试他们总能将软件噪声与有用信息分离开来。 

    【总结】

    加密没有一步到位的方法,需要设置多个关卡,将盗版者层层阻挡在外。 即便如此,最终也会有漏网之鱼,正如抗生素无法歼灭所有病菌一样,总有病菌能够适应这种抗生素,一旦他们活下来,当前的这种围剿措施就基本上毫无作用了。

     

     

    展开全文
  • 51单片机串口通讯C语言源码,其中串口测试程序完成串口发送任意字符到单片机单片机通过P0口LED灯显示。比如 发送16进制的 00 单片机的LED灯全亮 发送FF灯全灭  首先 烧写程序单片机 晶振 11.0592MHZ  连接好...
  •  单片机无线遥控接收模块C程序源码:  void main(void)  {  P2_7=0;//开数码管显示 选通左右侧的数码管  P0=0xc0; //初始显示数字0  while(1){  P1=0xff; //P1口设置为输入状态 先全部写1  i=P1;//...
  • 单片机光敏电阻源码

    2020-07-30 23:33:23
    51单片机控制PCF8591芯片(AD转换),将光敏电阻采集来的值转换后,比较光线太暗则点亮二极管。
  • 歌曲渴望51单片机c语言源代码 可以在51的开发板上利用蜂鸣器播放出来,要求蜂鸣器的效果要好,分辨率要高一点的。
  • 新手教程,基于51单片机的计算机例程,亲测有效,51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为...
  • 单片机电磁炉源码电路图,里面采用了合泰的单片机,便宜简单,有多个案例供大家学习。
  • 单片机是没有上操作系统的东西,在keil中编写的代码都是裸机代码,深入编写裸机代码有助于了解硬件的特性。 若不是硬件特性已定的情况之下的其它流程都是代码作祟。忽然想到来探探51单片机的执行流程。这个念头起源...

    单片机是没有上操作系统的东西,在keil中编写的代码都是裸机代码,深入编写裸机代码有助于了解硬件的特性。

    若不是硬件特性已定的情况之下的其它流程都是代码作祟。忽然想到来探探51单片机的执行流程。这个念头起源于最初见到每个51程序里面的主函数里面最终都挂一个while(1);语句。为何要加一句while死循环让程序停留在main函数中呢。将while(1);语句去掉有什么影响么?

    写一个很简单的程序试一下。

    51单片机程序执行流程详细分析
    执行以上程序,由P1端口控制的流水灯闪了一下。程序最终进入while(1);里纠缠去了,这个到好解释。

    现将while(1);语句屏蔽掉。我还以为程序不能被正确执行了呢,因为退出了main主函数,就像Render需要循环来实现一样(尽管刚刚闪灯的程序不在循环之内,但我还是不由产生了这一错觉)。程序执行的结果是:流水灯不停的闪烁!

    看到这个现象后的猜想及动作-

    (1) 这块板坏了吧!(在带操作系统如linux字符界面下运行一个不带死循环的C语言文件完毕后就会返回到linux shell程序中)。赶紧换个板再测试一下,显然还是一样的结果。

    (2) 单片机中将一直执行main函数中的最后一个(些)语句?(基于带OS平台下运行标准C语言文件的经验,可从来没有想过是main函数被多次调用或多次进入)

    (3) 单片机内将C语言指令取出来加载到单片机内,单片机内自动生成一个主程序循环执行C语言中main函数的内容?(虽然很荒唐,还是想了)

    (4) 赶快谷歌百度一下单片机的执行流程(虽然在谷歌百度时以“51单片机程序执行流程”搜索,没有搜到相关内容)。换朴实的搜索词:“51单片机 main”。然后就出现跟我一样带有疑问的问题:为什么main函数中不加while(1);语句之后程序会反复执行呢?回答的关键词包括“程序跑飞、看门狗、复位”。

    (5) 趁上嵌入式的机会将“51单片机程序执行流程”搬出来并向老师讲述了我所写程序的得到的现象,包括我怎么验证呀等等。

    老师的回答:Keil C51程序自动加载了一个名为”STARTUP.A51”的文件,在这个文件里面进行了一系列的初始化操作后进入用户编写的C语言程序入口main函数中,main函数执行完毕后,STARTUP.A51文件后有一句跳转到程序入口main函数的语句,所以会再次进入C语言主程序main函数中执行相关内容。

    然后我用keil软件模拟了运行一下以上那一段代码:

    51单片机程序执行流程详细分析
    程序开始运行就在程序入口main函数的第一条语句之处,Disassembly窗口是c语言代码与汇编代码相对应的窗口,前面是地址,后面的是C语言对应的汇编语句。下面的窗口是相应文件的运行代码的位置,由黄色箭头指向当前正要执行的代码。然后点击单步运行工具条,指导跳出main函数为止,程序跳转到STARTUP.A51中的以下代码位置:

    51单片机程序执行流程详细分析51单片机程序执行流程详细分析
    这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去。很显然这是一个循环,那么RO的值是多少呢,在以下窗口显示:

    51单片机程序执行流程详细分析
    可见r0的初值为0x7f,这里将要循环0x7f(128)次,具体在这里r0值的含义可查看一下子的。那么在这个循环之后程序又将去哪里呢?跳过这个循环后程序运行的地方如下:

    51单片机程序执行流程详细分析
    在单步运行一次

    51单片机程序执行流程详细分析
    根据Disassembly的内容,此条语句执行了就又要回到main函数中去了,执行一下试试:

    51单片机程序执行流程详细分析
    是的!

    所以,在51单片机中,程序的执行流程就是会不断( 以r0的值作为延迟条件, 具体含义可继续探索 )的进入main函数中执行main函数中的代码。

    为什么我们在linux等上面运行不带死循环的C语言代码后程序就会自行终止呢?这是不同的操作流程:

    (1) C51单片机不带OS(操作系统),代码的执行形势在此看来就由STARTUP.A51来安排了,没有一个更大的程序来管理怎么调用main函数。

    (2) 像Linux这类的平台是带了OS的,运行一个C语言程序对linux来说就是一个任务,除了运行C语言程序这个任务外还有其它的任务。当运行一个C语言程序完毕时,此次的任务也算是完成了。如在linux shell界面运行一个文件名为“hello.c”功能为输出“hello world!”的C语言程序,过程如下:

    编译:gcc hello.c –o hello

    运行:./hello

    在运行hello可执行文件时,可以当做是shell调用了hello这个可执行程序。在hello运行完毕后,将返回值等返回给shell界面。整个C语言文件的生死全有linux shell程序管理。

    归其原因,还是代码规定的机制不一样吧。

    展开全文
  • 51单片机大量源码

    2020-07-30 23:32:39
    51单片机源码: 1-流水灯 2-蜂鸣器 3-IO口控制 4-数码管 5-独立按键 6-矩阵键盘 7-1602液晶 8-24C08 9-DS1302 10-12864液晶(带字库) 11-12864不带字库 11-18B20 12-红外接收 13-串口通讯 14-外中断实验 15-8X8点阵...
  • 51单片机 典型的modbus通许协议!Modbus协议;串行通信;LRC校验;CRC校验;RS-232C,对于初学者有很大帮助!
  • STC单片机远程IAP更新源码与超级终端。源码分析在本人博客中有所涉及。
  • 本书第2版以全新的MPLAB X IDE+XC编译器搭建PIC单片机程序开发环境,并以PROTEUS为硬件仿真平台,精心编写了100个PIC单片机C语言程序设计案例,各案例设计了难易适中的实训目标,并提供了完整的C程序源码。...
  • 普中科技51单片机程序源码,与哔哩哔哩上的视频相配套,用keil运行,有需要的拿走即可,祝你们51单片机学有所成
1 2 3 4 5 ... 20
收藏数 10,678
精华内容 4,271
关键字:

单片机程序源码大全