欧美视频综合-欧美视频中文字幕-欧美视频在线观在线看-欧美视频在线观看网站-直接观看黄网站免费视频-正在播放久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
STC89C52串口下載的冷啟動(dòng)法與帶電下載法
STC89C52串口下載的冷啟動(dòng)法與帶電下載法
 更新時(shí)間:2009-12-23 16:36:01  點(diǎn)擊數(shù):0
【字體: 字體顏色

STC89C52RC單片機(jī)可以直接用串口進(jìn)行ISP編程,對(duì)于使用者來說,這就變得很簡(jiǎn)單了.這里要說的是,對(duì)STC89C52RC進(jìn)行串口ISP編程的兩種方法.

第一種   冷啟動(dòng), 即徹底關(guān)斷用戶目標(biāo)板的電源,再上電.這一方法為廠家推薦之方法.宏晶公司在STC89C52RC數(shù)據(jù)手冊(cè)上給出了下面的編程流程.

 

具體做法如下:

1.首先確保有STC89C52RC的目標(biāo)板至少有最小系統(tǒng).

2.到宏晶公司的網(wǎng)站下載一個(gè)軟件,下載地址為:
http://www.mcu-memory.com/datasheet/stc/stc-isp-v2.9-setup/stc-isp-v2.9-setup-beta5.exe

  先在MCU Type下拉列表中選擇正確的單片機(jī)型號(hào),這里就選STC89C52RC啦,然后點(diǎn)擊“Open File”打開待下載的文件,接著選擇正確的COM口以及本機(jī)可用的最高波特率,COM口根據(jù)你接的串口來確定,最高波特率通常不必改動(dòng),接下來就是選擇是否啟用單片機(jī)的倍速特性,根據(jù)自己的需要來定,選擇芯片內(nèi)置振蕩器的增益大小,可以根據(jù)提示,按提示要求去做,可得到較低的EMI特性。
一切選項(xiàng)最好之后,可以開始下載.

     關(guān)斷電源,然后點(diǎn)擊“Download/下載”按鈕,點(diǎn)完后,再接通電源,這里要注意,關(guān)斷電源到接通電源時(shí)間應(yīng)稍微長(zhǎng)一些,保證板子充分放電.只要注意操作順序應(yīng)該沒有什么問題,如果點(diǎn)擊“Download/下載”未及時(shí)插上電源,會(huì)出現(xiàn)如下圖所示畫面,不必?fù)?dān)心,直接將電源插上即可。

第二種  不切斷電源的方法

與冷啟動(dòng)相比,前面的操作都一樣,只是從冷啟動(dòng)需要關(guān)斷電源的操作步驟開始不一樣.當(dāng)冷啟動(dòng)需要關(guān)斷電源時(shí),在本方法下,不需要關(guān)斷電源.此時(shí),請(qǐng)按照下面步驟進(jìn)行:

需要用到串口,因此要占用單片機(jī)串行口和定時(shí)器T1或者T2作為波特率發(fā)生器,因此,定時(shí)器T1或者T2你就不能用了(在調(diào)試階段)。下面,我們要在程序里加上一段串口初始化的程序:
serial_init ()  {
  SCON  = 0x50;       /* mode 1: 8-bit UART, enable receiver   */
  C_T2=0; /*Timer2 runing in Timer mode*/
    RCLK=1;
    TCLK=1;
   RCAP2H=0xff;
   RCAP2L=0xee;
  TR2=1; /*enable Timer2 run  */
   ES   = 1; REN=1; EA=1; SM2=1;     /*SM2=1時(shí)收到的第9位為1才置位RI標(biāo)志*/
}
  這段程序加在主程序初始化那里,特別要提示的是,在初始化之前要有一段延時(shí),時(shí)間約為0.1s即可,也就是主程序應(yīng)該是這樣的:
  void main()
  { …..      變量的定義,其他初始化語(yǔ)句
  mDelay(100); //延時(shí)100ms
  serial_init();
  ……
  其他語(yǔ)句
  為什么一定要在初始化串口之前加一段延時(shí)呢?這在后面交待。
  然后要加一段串口收數(shù)的程序,直接復(fù)制下面這一段就可以,了解清楚原理后自己寫也行:
  uchar bitset(uchar num,uchar cbit) /*設(shè)置某一位*/ 
{  uchar bit_value[]={1,2,4,8,16,32,64,128}; 
return num|bit_value[cbit]; 

////////////////////////////////////////////////////////
void Ser() interrupt 4
{
static uchar Count=0;
GetCharBuf[Count]=SBUF;
if(GetCharBuf[Count]==(Count+0x10)) 
//要求stc下載軟件發(fā)送的數(shù)是10 11 12 13 14 15 16 17
{ sMark="bitset"(sMark,Count);
//如果收到的數(shù)符合要求,則將sMark這個(gè)相應(yīng)位置1
}
Count++;
if(Count>=8)
{ Count="0";
mGet=1; //置位標(biāo)志
}
RI=0;
}
  看懂了沒有呢?這里定義了8個(gè)字節(jié)的命令字,如果從主機(jī)傳來連續(xù)的8個(gè)數(shù)正好與所定義的8個(gè)數(shù)相符合,那么就說明主機(jī)有要求重新下載的指令了。定義哪8個(gè)數(shù),如何判定,這都可以發(fā)揮你自己的聰明才智來寫,這里就簡(jiǎn)單地要求主機(jī)發(fā)送0x10 0x11 0x12 0x13 0x14 0x15 0x16和0x17這8個(gè)數(shù),看程序中的這一行:
if(GetCharBuf[Count]==(Count+0x10)) 
  由于每次收到數(shù)Count會(huì)加1,從開始的0計(jì)到7為止,因此,接收到的數(shù)如果是Count加上0x10,就認(rèn)為是相符的。
  相符之后就要做個(gè)記號(hào),這里用了一個(gè)字節(jié)sMark,開機(jī)時(shí),該字節(jié)為0,相符一次,則將相應(yīng)位置1,如果收到的8個(gè)數(shù)均相符,那么sMark=0xff,如果收到的數(shù)中有一個(gè)不符,那么sMark不等于0xff。利用sMark即可判斷是否接收到了正確的8個(gè)數(shù)。
  一旦收到8個(gè)數(shù)之后,即置位標(biāo)志位mGet,然后在main函數(shù)里面做個(gè)判斷,如果mGet=1且sMark=0xff,說明要求重新下載,下面即延時(shí)1s,然后將數(shù)0x60寫入特殊功能寄存器:ISP_CONTR即可,main函數(shù)中的這一部份程序如下:
if(mGet)
{ if(sMark==0xff) //收到數(shù)符合要求
{ sMark="0"; //復(fù)位
mDelay(2000);
ISP_CONTR=0x60;//復(fù)位到isp下載區(qū)
}
else
{ sMark="0";
}
}
  你可以把這一段放在main函數(shù)的for(;;)循環(huán)當(dāng)中。
  ISP_CONTR是STC89C52RC的一個(gè)特殊功能寄存器,其地址為0xE7,可以在程序的開頭用sfr關(guān)鍵字來定義:
  sfr ISP_CONTR=0xe7;
  接下來看一看PC機(jī)程序端應(yīng)該怎么做。
點(diǎn)擊界面右側(cè)的“自定義下載”,先選定特率,按上面的程序,如果選用stc89C52rc的倍速特性的話,波特率就是38400,否則就是19200,其他按圖4設(shè)置即可。接著到自定義下載文本框中輸入自定義下載指令為10 11 12 13 14 15 16 17 輸入好了以后,點(diǎn)擊發(fā)送,即可在不斷電的情況下進(jìn)行程序的下載了。
  那么為什么一開始初始化的時(shí)候一定要延時(shí)呢?這是我們?cè)趯?shí)際使用中發(fā)現(xiàn),在下載完成后,軟件似乎會(huì)多發(fā)送一些數(shù)據(jù),由于我們的程序中沒有設(shè)置超時(shí)等處理,所以就會(huì)干擾數(shù)據(jù)的正確接收,為此采取了一個(gè)簡(jiǎn)的方法就是延時(shí)一段時(shí)間再開啟串口。當(dāng)然你也可以采用其他的方法來解決這個(gè)問題,不過我們認(rèn)為這種方法簡(jiǎn)單有效。
  為了更有效地進(jìn)行程序的開發(fā),建議你將“選項(xiàng)”下方的“每次下載前自動(dòng)刷新已打開在緩沖區(qū)的文件,以方便調(diào)試”前面打上勾。

  • 上一篇: HT6221/2解碼成標(biāo)準(zhǔn)的鍵值
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1