-项目概述-

最开始学习51的时候,总是“冷启动”,手动按动开关重启,下载一次程序重启一次,觉得很麻烦

而且另一方面,我的最小系统板是有自带电源的,那么这根数据线也显得有些多余了,于是打算做一个“无线自动烧录器”。

目的:

  • 程序发送特定重启指令实现“热启动”。
  • ESP-01S作为无线串口使用。
  • 烧录器端口指定。

材料清单:51系统板一块(STC8G1K08),ESP-01S模块两个(收发),CH340G下载模块

注意:我用的是51单片机是STC8G系列,对于老版本的STC89C52能否使用特定指令重启,需要自己去查看数据手册,具体位置下面会提到。

-成品预览-

-项目框架-

这个项目硬件逻辑很简单,主要在于特定指令重启这一块,查阅文档很麻烦,整体流程如下:

-硬件资料,代码-

  • ISP软复位方法:

    根据STC8G芯片文档(下文文末):

  

    一共有四种方法,这里我选择串口特定指令检测复位,其余方法可以自己查阅文档调试。

    关键代码:

  • IAP_CONTR = 0x60; //复位到系统区
  • #include "reg51.h"
    #include "intrins.h"
    #define FOSC 11059200UL
    #define BR115200 (65536 - FOSC / 4 / 115200)
    sfr IAP_CONTR = 0xc7;
    sfr AUXR = 0x8e;
    sfr P3M0 = 0xb2;
    sfr P3M1 = 0xb1;
    char stage; /*
    每一次读取一个字符,当当前字符满足要求,(每一个case的if语句作用)
    就判断下一位是否满足要求,如果全部满足,(每一行stage作用)
    就执行跳转指令。如果当中有一位不满足,
    就从新跳转到第一位,重新进行判断。(go to 语句作用)
    */
    void UartIsr() interrupt 4 //串口中断服务程序
    {
    char dat;
    if (TI)
    {
    TI = 0;
    }
    if (RI)
    {
    RI = 0;
    dat = SBUF;
    switch (stage)
    {
    case 0:
    default:
    L_Check1st:
    if (dat == 'S') stage = 1;
    else stage = 0;
    break; case 1:
    if (dat == 'T') stage = 2;
    else goto L_Check1st;
    break; case 2:
    if (dat == 'C') stage = 3;
    else goto L_Check1st;
    break; case 3:
    if (dat == 'I') stage = 4;
    else goto L_Check1st;
    break; case 4:
    if (dat == 'S') stage = 5;
    else goto L_Check1st;
    break; case 5:
    if (dat == 'P') stage = 6;
    else goto L_Check1st;
    break; case 6:
    if (dat == '$') //当检测到正确的用户下载命令时
    IAP_CONTR = 0x60; //复位到系统区
    else goto L_Check1st;
    break;
    }
    }
    }
    void main()
    {
    P3M0 = 0x00;
    P3M1 = 0x00;
    SCON = 0x50;
    TMOD = 0x00;
    AUXR = 0x40;
    TH1 = BR115200 >> 8; //设置串口波特率为 115200
    TL1 = BR115200;
    TR1 = 1;
    ES = 1;
    EA = 1;
    stage = 0;
    while (1)
    {
    }
    }

  

项目全部文件:

个人博客下方私信领取

http://potatoworld.top:5800/

最后,下载成功,非常nice ~

-项目槽点-

  • 对于STC新系列的单片机,串口寄存器相关的配置还是交给软件去做吧,想要自己配置练练手的拿STC89系列就够了

      切记。新系列需要配置AUXR寄存器,具体配置方式查看数据手册,也可以STC烧录器自带的

    

  • 注意电平转换,5V转3.3V ,电平转换电路如下

  

ESP-01S无线下载器的更多相关文章

  1. 修复ST-LINK V2下载器 | ST-LINK V2下载器烧录DAPLink固件

    前言 某宝上的STLINK V2下载器偶尔会坏掉,我们尝试修复一下 1.材料 (1)完好的STLINK V2下载器和坏掉的下载器各1个: (2)固件:https://gitee.com/Cai-Zi/ ...

  2. 用python实现的百度音乐下载器-python-pyqt-改进版

    之前写过一个用python实现的百度新歌榜.热歌榜下载器的博文,实现了百度新歌.热门歌曲的爬取与下载.但那个采用的是单线程,网络状况一般的情况下,扫描前100首歌的时间大概得到40来秒.而且用Pyqt ...

  3. .NET破解之图片下载器

    自去年五月加入吾爱后,学习了三个月,对逆向破解产生了深厚的兴趣,尤其是对.NET方面的分析:但由于这一年,项目比较忙,事情比较多,破解这方面又停滞了许久,不知道还要好久. 前些天,帮忙批量下载QQ相册 ...

  4. 用 python 实现一个多线程网页下载器

    今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. k ...

  5. .NET破解之太乐地图下载器【非暴破】

    不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰…… 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, ...

  6. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  7. ISoft(开源)专用下载器

    继 两年的坚持,最后还是决定将ISoft开源 之后,今天再共享一款ISoft专用下载器小工具.这款工具是一年前开发的,也是一直闲置着没去扩展更新.当时开发出来就是仿穿越火线专用下载器的样式来做的,现在 ...

  8. Python实战:美女图片下载器,海量图片任你下载

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  9. 一个urllib2构建的html下载器的代理组件的实现方案

    调用栈/函数链如下: 情形一:下载器初始化时 __init__ buildOpener#构建opener newProxy4Opener#装备代理 getNewProxy#获取代理 maintainP ...

  10. python-selenium实现的简易下载器,并常见错误解决

    简易下载器的实现 支持代理.失败重试.确保包含指定ID元素(可根据需求自定义修改) # coding: utf-8 from Utils import logging from bs4 import ...

随机推荐

  1. 3.版本穿梭&分支概述

    版本穿梭 如果我们提交了多个版本到本地仓库,想将工作区恢复到历史版本 可以先使用git reflog查看历史记录,获取到版本号 然后使用git rest --hard 版本号 命令恢复到指定版本 gi ...

  2. React动画实现方案之 Framer Motion,让你的页面“自己”动起来

    前言 相信很多前端同学都或多或少和动画打过交道.有的时候是产品想要的过度效果:有的时候是UI想要的酷炫动画.但是有没有人考虑过,是不是我们的页面上面的每一次变化,都可以像是自然而然的变化:是不是每一次 ...

  3. webRTC demo

    准备: 信令服务 前端页面用于视频通话 demo github 地址. 前端页面 为了使 demo 尽量简单,功能页面如下,即包含登录.通过对方手机号拨打电话的功能.在实际生成过程中,未必使用的手机号 ...

  4. python 的time、datetime模块

    python 时间模块 import datetime ​ res = datetime.datetime.now() print(res) # 2022-08-07 16:47:07.120459 ...

  5. windows安装wsl,在windows中使用ubuntu

    WSL(Windows Subsystem for Linux)即适用于 Linux 的 Windows 子系统,它是随 Windows 操作系统一起提供. WSL是windows操作系统的子系统,算 ...

  6. 【云原生 · Kubernetes】部署 kube-proxy 组件

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying kube-proxy 运行在所有 worker 节点上,它监听 apiserver 中 se ...

  7. Spring Cloud Gateway 使用示例

    Spring Cloud Gateway 使用示例 作者: Grey 原文地址: 博客园:Spring Cloud Gateway 使用示例 CSDN:Spring Cloud Gateway 使用示 ...

  8. i春秋Blog

    打开是个普普通通的hello world 然后有注册有登录 不多说我们直接注册登录试试 登录后有个POST选项,可以上传东西,先试试上传文字 没什么重要的回显 再上传一个文档试试 爆出提示:这里使用的 ...

  9. i春秋Do you know upload?

    打开题目是一个文件上传,就先写了一个一句话木马的php文件,直接提交显示文件类型不允许.于是乎将其改为jpeg格式上传,成功了,但是没用,菜刀连不上.再次上传jpg格式的一句话木马(写好php木马后将 ...

  10. float16与float32转换

    // based on https://gist.github.com/martin-kallman/5049614 // float32 // Martin Kallman // // Fast h ...