x寶上有很多買51單片機(jī)一鍵下載器的,就是U轉(zhuǎn)串又配了一個(gè)stc15的單片機(jī)檢測(cè)下載碼,檢測(cè)到了就斷電再啟動(dòng)。挺巧妙的,就去找了一下原理。
STC免手動(dòng)下載程序電路圖(自動(dòng)斷電冷啟動(dòng)) + 程序http://www.amobbs.com/forum.php?mod=viewthread&tid=5279682
折中版的STC免手動(dòng)免斷電下載程序方案, 只需加一行代碼, 不占用其他任何資源http://www.amobbs.com/thread-5287022-1-1.html
電路圖如下:
(原文件名:STC免手動(dòng)燒寫電路圖(最佳版).jpg)
實(shí)物圖:
(原文件名:實(shí)物圖1.jpg)
(原文件名:實(shí)物圖2.jpg)
注意事項(xiàng):
(原文件名:注意事項(xiàng).jpg)
源程序:
#define uint8 unsigned char #include "STC15F104E.H"
//#define BAUD0xF400// 1200bps @ 11.0592MHz //#define BAUD0xFA00// 2400bps @ 11.0592MHz #define BAUD0xFD00// 4800bps @ 11.0592MHz
sbit RXB= P3^4; sbit Key= P3^1; //自動(dòng)/手動(dòng)開(kāi)關(guān)(根據(jù)需要使用) sbit Relay = P3^3; sbit LED= P3^0;
uint8 RBUF;//接收緩存 uint8 RDAT;//接收數(shù)據(jù)暫存 uint8 RCNT;//接收計(jì)數(shù)器 uint8 RBIT;//接收比特?cái)?shù) bitRING;//開(kāi)始接收標(biāo)志 bitREND;//接收完成標(biāo)志
uint8 cnt;//重啟計(jì)數(shù)器 bitSTART;//重啟標(biāo)志
void YS100ms(uint8 n) { uint8 i,a,b,c; for(i=n;i>0;i--) for(c=89;c>0;c--) for(b=230;b>0;b--) for(a=12;a>0;a--); }
void UART_INIT() { RING = 0; REND = 0; RCNT = 0; }
void main() { P3M1 = 0x00; P3M0 = 0x09;//P3.0、P3.3推挽輸出 Relay = 0;//斷開(kāi)繼電器 LED= 0;//關(guān)LED
TMOD = 0x00;//T0處于16位自動(dòng)重裝模式 AUXR = 0x80;//T0工作在1T模式 TL0 = BAUD; TH0 = BAUD>>8;//初始化Timer0和設(shè)定重載值 TR0 = 1; ET0 = 1; PT0 = 1;//提高Timer0的中斷優(yōu)先級(jí) EA= 1;
UART_INIT();
while(1) { if(START) { START = 0; if(Key) { ET0 = 0; Relay = 1;//繼電器吸合 LED = 1; YS100ms(50);//從『加載HEX』到『提示上電』有5秒 Relay = 0; LED = 0; YS100ms(15); ET0 = 1; UART_INIT(); } } } }
技術(shù)專區(qū)
|
|
評(píng)論