STC單片機的自動(dòng)程序下載--Auto ISP
第一步:編寫(xiě)串口操作程序。這種自動(dòng)下載方法需要用到串口中斷。所謂自動(dòng)下載,就是說(shuō)當前單片機已經(jīng)在運行程序了,但這個(gè)程序必須具備串口中斷功能,通過(guò)串口接收特定字符標志,使得單片機知道應該從運行用戶(hù)程序狀態(tài)退出,復位后進(jìn)入監控狀態(tài)(即ISP狀態(tài)),為下載新的用戶(hù)程序做好準備。所以,如果你總想不通過(guò)冷啟動(dòng)的辦法來(lái)自動(dòng)下載程序,就要求當前單片機運行的程序以及你將要下載的程序都具備串口中斷及識別特定字符標志的功能,這就需要編寫(xiě)串口操作程序。首先利用定時(shí)器產(chǎn)生波特率信號,設置串口。建立頭文件timer1.h:
本文引用地址:http://dyxdggzs.com/article/201611/321400.htm#ifndef _timer1_h_
#define _timer1_h_
//定時(shí)器1初始化,串口波特率初始化
//自動(dòng)ISP功能模塊
void timer1_init(void)
{
}
void delay(unsigned int time)
{
}
//自動(dòng)ISP功能函數
void ISP_Check(unsigned char tmp)
{
}
//串行接收中斷
void Serial_int(void) interrupt 4 using 1
{
}
#endif
把上面的timer1.h文件包含進(jìn)工程文檔,并在主程序中調用timer1.h內的初始化函數,如下所示:
#include "STC89C51RC.H"
#include "timer1.h"
sbit beep=P1^7;//P1^7接揚聲器驅動(dòng)電路
void delay_ms(const unsigned int DELAY)
{
}
main()
{
}
第二步:編譯工程得到HEX文件,運行STC-ISP.exe。如下圖:
注意紅線(xiàn)框內的自定義下載的參數設置,即串口和標志字符的設置,一定要與上面第一步在timer1.h文件中設置的一致。在Step1中,選定單片機型號;在Step2中,選定要下載的HEX文件;在Step3中,設置串口;在Step4中,通常使用默認設置。假設單片機正在運行程序(此程序的串口設置、標志字符和自定義下載的參數一致),點(diǎn)擊自定義下載選項頁(yè)的發(fā)送按鈕,即可完成新的用戶(hù)程序下載并運行之。
需要特別注意的是:(1)自定義下載選項頁(yè)中的波特率設置很重要,不能有錯;(2)主程序開(kāi)始最好插入延時(shí)語(yǔ)句,避免串口通訊出現問(wèn)題。(3)這種Auto ISP方式占用了串口和一個(gè)定時(shí)器,有一定局限性。
評論