51单片机一键下载相关
// 作品:STC免手动烧写(自适应波特率自动冷启) + 简易逻辑分析仪
// 芯片:STC15F104E
// 晶振:45MHz
// 编译:Keil uVision4 V9.00
//
// 说明:自适应STC-ISP软件最低波特率(1200bps/2400bps/4800bps)
//
//
//
//
//
//
//
//
//
//
//
//
//
#include "STC15F104E.H"
#include "MY_SET.h"
sbit LED
sbit KEY
sbit RXB
sbit TXB
sbit PNP
sbit IO_in = P3^5;
uint8
bit
uint8
bit
bit
bit
uint16
bit
uint8
uint16
uint8 TBUF,RBUF;
uint8 TDAT,RDAT;
uint8 TCNT,RCNT;
uint8 TBIT,RBIT;
bit
bit
bit
uint8 Correct_nums;
uint8 Error_nums;
uint8 Status;
void YS(uint8 n)
{
}
void UART_INIT()
{
}
void Analyzer_Init()
{
}
void UART_Change()
{
}
void Restart()
{
}
void main()
{
}
void tm0() interrupt 1 using 1
{
}
void tm1() interrupt 3
{
}【主位的电路,11.0592M】
那个是旧版本,电路图也有些不妥(应该把10Ω电阻去掉),下载“最低波特率”固定,而且没有逻辑分析仪功能
【32楼的电路,11.0592M】
在旧版上改进:自动适应STC-ISP软件中的“最低波特率” 3种波特率,可选“1200bps/2400bps/4800bps”
但也没有逻辑分析仪功能
【49楼的电路,45M】
程序全新修改;
自动适应STC-ISP软件中的“最低波特率” 3种波特率,可选“1200bps/2400bps/4800bps”;
增加简易单路逻辑分析仪。
PS:
STC-ISP软件中选用不同型号的STC时,默认的下载“最低波特率”不同,比如:
STC89系列:默认 最低波特率 1200bps
STC12系列:默认 最低波特率 2400bps
STC15系列:默认 最低波特率 4800bps
懒得每次选择,所以增加自适应3种最低波特率“1200bps/2400bps/4800bps”功能
另:
用简易单路逻辑分析仪捕捉,STC-ISP下载程序前的串口命令流

如果是固定程序中的最低波特率(对应STC-ISP的最低波特率选项,最高波特率选项任意),这个程序就运行很好,
但这样就不方便了,因为STC-ISP不同版本及不同型号默认最低波特率选项不同,懒得每次更换都改下STC-ISP的最低波特率选项。
所以使用新方案解决:
不再用硬件串口/模拟串口捕捉数据,先直接用计时器捕捉TXD上一定数量的连续电平数据,然后分析电平数据(比如:低电平时间相等,0x7F次数,……等等多重验证),
如果符合条件就重启(断电几百ms后上电,隔>1.5S恢复监测);
如果不符合条件则重新监测。
上面这个方案几近完美

同时自动适STC-ISP的最低波特率选项范围更宽1200bps/2400bps/4800bps/9600bps,
完美版的方案就是这样,挺简单的,程序就不传了
评论