51單片機一鍵下載相關(guān)
// 作品:STC免手動燒寫(自適應(yīng)波特率自動冷啟) + 簡易邏輯分析儀
// 芯片:STC15F104E
// 晶振:45MHz
// 編譯:Keil uVision4 V9.00
//
// 說明:自適應(yīng)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】
那個是舊版本,電路圖也有些不妥(應(yīng)該把10Ω電阻去掉),下載“最低波特率”固定,而且沒有邏輯分析儀功能
【32樓的電路,11.0592M】
在舊版上改進(jìn):自動適應(yīng)STC-ISP軟件中的“最低波特率” 3種波特率,可選“1200bps/2400bps/4800bps”
但也沒有邏輯分析儀功能
【49樓的電路,45M】
程序全新修改;
自動適應(yīng)STC-ISP軟件中的“最低波特率” 3種波特率,可選“1200bps/2400bps/4800bps”;
增加簡易單路邏輯分析儀。
PS:
STC-ISP軟件中選用不同型號的STC時,默認(rèn)的下載“最低波特率”不同,比如:
STC89系列:默認(rèn) 最低波特率 1200bps
STC12系列:默認(rèn) 最低波特率 2400bps
STC15系列:默認(rèn) 最低波特率 4800bps
懶得每次選擇,所以增加自適應(yīng)3種最低波特率“1200bps/2400bps/4800bps”功能
另:
用簡易單路邏輯分析儀捕捉,STC-ISP下載程序前的串口命令流
這個程序構(gòu)思不完善,主要是自動適應(yīng)波特率部分有些BUG,
如果是固定程序中的最低波特率(對應(yīng)STC-ISP的最低波特率選項,最高波特率選項任意),這個程序就運行很好,
但這樣就不方便了,因為STC-ISP不同版本及不同型號默認(rèn)最低波特率選項不同,懶得每次更換都改下STC-ISP的最低波特率選項。
所以使用新方案解決:
不再用硬件串口/模擬串口捕捉數(shù)據(jù),先直接用計時器捕捉TXD上一定數(shù)量的連續(xù)電平數(shù)據(jù),然后分析電平數(shù)據(jù)(比如:低電平時間相等,0x7F次數(shù),……等等多重驗證),
如果符合條件就重啟(斷電幾百ms后上電,隔>1.5S恢復(fù)監(jiān)測);
如果不符合條件則重新監(jiān)測。
上面這個方案幾近完美,負(fù)責(zé)監(jiān)控的STC15F104E也不需要超頻到45M了,22.1184M就可以,
同時自動適STC-ISP的最低波特率選項范圍更寬1200bps/2400bps/4800bps/9600bps,
完美版的方案就是這樣,挺簡單的,程序就不傳了
評論