標(biāo)題: STC單片機(jī)不斷電下載程序方法 [打印本頁(yè)]
作者: tongguan123 時(shí)間: 2022-5-27 15:29
標(biāo)題: STC單片機(jī)不斷電下載程序方法
背景:剛開始接觸STC單片機(jī),在給單片機(jī)下載程序的時(shí)候,總是要冷啟動(dòng)。一般情況都是加載相應(yīng)的程序文件,然后點(diǎn)擊“下載/編程”按鈕,然后再重新斷電上電,直到程序?qū)戇M(jìn)單片機(jī)里。那么有沒有其它更方便的方法呢?肯定是有的。
目的:通過(guò)自定義的下載命令,在不需要冷啟動(dòng)的情況下,就可以對(duì)STC單片機(jī)進(jìn)行程序的下載,甚至通過(guò)進(jìn)一步的設(shè)置,在keil中程序編輯、編譯完成后,STC-ISP會(huì)自動(dòng)將程序下載到單片機(jī)里。
- #include <reg52.h> //包含單片機(jī)寄存器的頭文件
- #define uchar unsigned char
- #define uint unsigned int
-
- #define Self_Define_ISP_Download_Command 0x3D// 與不斷電下載有關(guān),與本程序無(wú)關(guān),直接復(fù)制到自己的程序中
- sfr IAP_CONTR = 0xE7; // 與不斷電下載有關(guān),與本程序無(wú)關(guān),直接復(fù)制到自己的程序中
- /****************************函數(shù)聲明****************************************/
- void delay(uint z);
- void Init_Com(void);// 與不斷電下載有關(guān),與本程序無(wú)關(guān),直接復(fù)制到自己的程序中
- /*******************************************************************************
- ** 函數(shù)名稱 : main(void)
- ** 函數(shù)功能 : 主函數(shù)
- *******************************************************************************/
- void main()
- {
- uchar num,dat1,dat2; // 相關(guān)變量定義
- Init_Com(); // 與不斷電下載有關(guān),與本程序無(wú)關(guān),直接復(fù)制到自己的程序中
- while(1)
- {
- dat1 = 0xfe;
- dat2 = 0x7f;
- for(num=0; num<7; num++) // led燈從上往下依次點(diǎn)亮
- {
- P1 = dat1; //初始化賦值
- dat1 = dat1<<1; //左移一位
- delay(500); //延時(shí)
- }
- for(num=0; num<7; num++) // led燈從下往上依次點(diǎn)亮
- {
- P1 = dat2; //初始化賦值
- dat2 = dat2>>1; //右移一位
- delay(500); //延時(shí)
- }
- }
- }
- /*******************************************************************************
- ** 函數(shù)名稱 : delay(uint z)
- ** 函數(shù)功能 : 延時(shí)函數(shù)
- *******************************************************************************/
- void delay(uint z)
- {
- uchar j;
- for(z; z>0; z--)
- for(j=200; j>0; j--);
- }
- /*******************************************************************************
- ** 函數(shù)名稱 : Init_Com(void)
- ** 函數(shù)功能 : 串口初始化,晶振11.0592KHz,波特率9600,
- *******************************************************************************/
- void Init_Com(void) //與不斷電下載有關(guān),與本程序無(wú)關(guān),直接復(fù)制到自己的程序中
- {
- TMOD = 0x20;
- SM0 = 0;
- SM1 = 1;
- REN = 1;
- TH1 = 0xFd;
- TL1 = 0xFd;
- TR1 = 1;
- EA = 1;
- ES = 1;
- }
- /*******************************************************************************
- ** 函數(shù)名稱 : UART_Interrupt_Receive(void)
- ** 函數(shù)功能 : 串口中斷處理函數(shù)
- *******************************************************************************/
- void UART_Interrupt_Receive(void) interrupt 4 //與不斷電下載有關(guān),與本程序無(wú)關(guān),直接復(fù)制到自己的程序中
- {
- unsigned char k = 0;
- unsigned int a,b;
- if(RI == 1)
- {
- RI = 0;
- k = SBUF;
- if(k == Self_Define_ISP_Download_Command)
- {
- for(a=1000; a>0; a--)
- for(b=100; b>0; b--);
- IAP_CONTR = 0x60;
- }
- }
- else
- {
- TI = 0;
- }
- }
復(fù)制代碼
無(wú)標(biāo)題.png (71.45 KB, 下載次數(shù): 36)
下載附件
2022-5-27 15:22 上傳
51hei.png (6.56 KB, 下載次數(shù): 39)
下載附件
2022-5-27 16:44 上傳
Keil代碼下載:
不斷電程序 流水燈.zip
(36.32 KB, 下載次數(shù): 32)
2022-5-27 15:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: tongguan123 時(shí)間: 2022-5-27 15:59
第一次發(fā)帖,有許多地方不盡人意,尤其是添加代碼文字的時(shí)候,我以為把編輯好的程序復(fù)制粘貼進(jìn)去就可以了,但看到發(fā)帖后的效果,有些地方還是可以再調(diào)整調(diào)整的,后面會(huì)改善的。好在代碼本身是沒有問(wèn)題的,是經(jīng)過(guò)驗(yàn)證的,大家可以放心參考。這種STC單片機(jī)不斷電下載程序的方法,我也是參考別人的,我這里還有視頻講解資料,有需要的請(qǐng)留言。
希望可以和大家共同討論、共同學(xué)習(xí)、共同進(jìn)步!
無(wú)標(biāo)題.png (9.42 KB, 下載次數(shù): 42)
下載附件
2022-5-27 22:10 上傳
作者: tongguan123 時(shí)間: 2022-5-27 16:12
還有一點(diǎn)需要補(bǔ)充一下,注意串口初始化函數(shù),晶振11.0592KHz,波特率9600,如果是12MHz晶振,則需要調(diào)整TH1,TL1的初值,不然下載基本不會(huì)成功的,不相信可以試試!
作者: 人人學(xué)會(huì)單片機(jī) 時(shí)間: 2022-5-31 09:12
STC單片機(jī)下載器2.png (358.98 KB, 下載次數(shù): 35)
下載附件
2022-5-31 09:12 上傳
這就是自動(dòng)斷電下載。不需要手按,也不需要串口預(yù)先復(fù)制代碼
作者: tongguan123 時(shí)間: 2022-5-31 11:39
本帖最后由 tongguan123 于 2022-5-31 15:47 編輯
首先非常感謝老大的分享!你提供的這個(gè)應(yīng)該是一個(gè)完整的硬件電路,下載程序的時(shí)候,由硬件控制給單片機(jī)斷電和供電,來(lái)達(dá)到冷啟動(dòng)的目的,應(yīng)該是這樣子吧?而我分享的這個(gè)是通過(guò)對(duì)ISP/IAP命令寄存器ISP_CONTR的操作,ISP_CONTR=0X60,來(lái)達(dá)到在應(yīng)用編程。方法和思路不同,但殊途同歸,最終的目的都是方便我們操作。本人學(xué)習(xí)單片機(jī)時(shí)間不長(zhǎng),如果有哪些地方講的不對(duì),請(qǐng)指正!
無(wú)標(biāo)題.png (199.56 KB, 下載次數(shù): 35)
下載附件
2022-5-31 11:41 上傳
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |