網上下了幾個STC不斷電下載程序,驗證通不過,于是反復調試,在普中開發板上驗證通過。做成了頭文件,方便使用。
普中開發板用普中自動下載軟件,會自動斷電然后上電,下載也很方便。為了學習STC不斷電下載,從網上下了很多程序,在普中開發板上STC_ISP驗證通不過,于是將網上的程序進行組合,形成了一的頭文件,編譯后代碼大小90B原理:stcisp電腦端啟動時,連續發送0x7f.串口檢查下載命令到10次,單片機通過軟件復位到引導區。使用普中開發板,STC90C516RD 11.059M晶體,程序加入包含頭文件,主程序調用串口初始化函數。主程序中串口功能仍然可用。第一次使用要用普中自動下載軟件下載,或STC_ISP_V483斷電下載。以后用STC_ISP_V483最高最低都用4800波特率,可不斷電下載
網上程序不可用的原因:可能ISP_contro=0Xe0;數值不是這個。 或者波特率不是4800,STC_ISP版本不對,歡迎大家實驗。
單片機源程序如下:
- #ifndef _STCISP_
- #define __STCISP_H__
- sfr ISP_contro = 0xE7;
- unsigned char receiveData,n;
- void UsartConfiguration()
- {
- TMOD&=0x0F; //把TMOD高4位清0
- TMOD|=0x20; //將TMOD的M1位置1,設置成自動裝入的8位定時器
- PCON=0X80; //波特率加倍
- TH1=0XF3; //計數器初始值設置,注意波特率是4800的
- TL1=0XF3;
- TR1=1; //打開計數器
- SCON=0x50; //10位異步收發,波特率由定時器控制,允許串口接收
- ES=1; //允許串口中斷
- //**************************
- //***開全局中斷設置****
- //串口接口UART設置了中斷允許,此處要開全局中斷
- EA=1; //開全局中斷
- }
- void UART_SER (void) interrupt 4
-
- {
-
- if(RI == 1) //查看是否接收到數據
- {
- receiveData = SBUF; //讀取數據
- RI = 0; //清除標志位
- if(receiveData == 0x7f)
- {
- if(n++>=10)
- {
- ISP_contro=0Xe0;
- //NOP(5);
- }
- }
-
- }
- }
- #endif
復制代碼
- * 實 驗 名 : STC不斷電下載
- * 實驗說明 : STC不斷電下載,串口檢查下載命令10次,單片機通過軟件復位到引導區。
- * 連接方式 :
- * 注 意 : STC90C516RD 11.059M晶體,STC_ISP_V483下載最高最低都用4800波特率
- 使用時包含頭文件,主程序調用串口初始化函數。
- *******************************************************************************/
- #include<reg51.h>
- #include"stc-isp.h"
- /*******************************************************************************
- * 函 數 名 : main
- * 函數功能 : 主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void main()
- {
- UsartConfiguration();
- while(1)
- {
- //你的代碼
- }
- }
復制代碼
上圖Keil代碼工程下載:
OK-STC不斷電下載頭文件.7z
(8.45 KB, 下載次數: 9)
2021-12-18 21:09 上傳
點擊文件名下載附件
|