ESP-01S无线下载器
-项目概述-
最开始学习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无线下载器的更多相关文章
- 修复ST-LINK V2下载器 | ST-LINK V2下载器烧录DAPLink固件
前言 某宝上的STLINK V2下载器偶尔会坏掉,我们尝试修复一下 1.材料 (1)完好的STLINK V2下载器和坏掉的下载器各1个: (2)固件:https://gitee.com/Cai-Zi/ ...
- 用python实现的百度音乐下载器-python-pyqt-改进版
之前写过一个用python实现的百度新歌榜.热歌榜下载器的博文,实现了百度新歌.热门歌曲的爬取与下载.但那个采用的是单线程,网络状况一般的情况下,扫描前100首歌的时间大概得到40来秒.而且用Pyqt ...
- .NET破解之图片下载器
自去年五月加入吾爱后,学习了三个月,对逆向破解产生了深厚的兴趣,尤其是对.NET方面的分析:但由于这一年,项目比较忙,事情比较多,破解这方面又停滞了许久,不知道还要好久. 前些天,帮忙批量下载QQ相册 ...
- 用 python 实现一个多线程网页下载器
今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. k ...
- .NET破解之太乐地图下载器【非暴破】
不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰…… 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, ...
- 【图文详解】python爬虫实战——5分钟做个图片自动下载器
python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...
- ISoft(开源)专用下载器
继 两年的坚持,最后还是决定将ISoft开源 之后,今天再共享一款ISoft专用下载器小工具.这款工具是一年前开发的,也是一直闲置着没去扩展更新.当时开发出来就是仿穿越火线专用下载器的样式来做的,现在 ...
- Python实战:美女图片下载器,海量图片任你下载
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- 一个urllib2构建的html下载器的代理组件的实现方案
调用栈/函数链如下: 情形一:下载器初始化时 __init__ buildOpener#构建opener newProxy4Opener#装备代理 getNewProxy#获取代理 maintainP ...
- python-selenium实现的简易下载器,并常见错误解决
简易下载器的实现 支持代理.失败重试.确保包含指定ID元素(可根据需求自定义修改) # coding: utf-8 from Utils import logging from bs4 import ...
随机推荐
- JUC(7)四大函数式接口
文章目录 1.四大函数式接口(必须掌握) 1.1 function 1.2 Predicate 1.3 Consumer 1.4 Supplier 1.四大函数式接口(必须掌握) 1.lambda表达 ...
- 人生苦短,我用 python 之入门篇
Python 是一种跨平台的,开源的,免费的,解释型的高级编程语言,它具有丰富和强大的库,其应用领域也非常广泛,在 web 编程/图形处理/黑客编程/大数据处理/网络爬虫和科学计算等领域都能找到其身影 ...
- 七、Ajax请求
七.Ajax请求 客户端(浏览器)向服务端发起请求的形式: 地址栏:GET 超链接标签:GET form表单:GET或POST Ajax(重要):GET或POST或PUT或DELETE AJAX(As ...
- pod(九):污点taint 与容忍度tolerations
目录 一.系统环境 二.前言 三.污点taint 3.1 污点taint概览 3.2 给节点添加污点taint 四.容忍度tolerations 4.1 容忍度tolerations概览 4.2 设置 ...
- hwlog--limiter.go
// Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package limiter implement ...
- c++ const和指针
const int *p: 定义指针,指向的变量的值不能修改(指向整型常量或普通整型,但值不能通过指针修改) int const *p: 同上 int * const p=&a: 一直指向a, ...
- python3小技巧总结(实时更新)
1.列表解析 如果一个想将一个列表中的大于0的数字过滤,一般可能会用到lambd结合filter,或者就是直接遍历,不过最好的解决办法是这样: b = [1,0,-1,-2] a = [i for i ...
- Iris_data_analysis
SVM调用实例--鸢尾花 任务描述: 构建一个模型,根据鸢尾花的花萼和花瓣大小将其分为三种不同的品种. 数据集: 每一行数据由4个特征值及1个目标值组成,4个特征值分别为:萼片长度.萼片宽度.花瓣长度 ...
- C++日期和时间编程总结
一,概述 二,C-style 日期和时间库 2.1,数据类型 2.2,函数 2.3,数据类型与函数关系梳理 2.4,时间类型 2.4.1,UTC 时间 2.4.2,本地时间 2.4.3,纪元时间 2. ...
- form表单里的button 等元素不能使用margin: 0 auto;
记得把form和button都设为display:block; 就能用margin: 0 auto;水平居中了
