欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4553|回復: 3
收起左側

STC單片機不斷電下載程序方法

  [復制鏈接]
ID:645485 發表于 2022-5-27 15:29 | 顯示全部樓層 |閱讀模式
背景:剛開始接觸STC單片機,在給單片機下載程序的時候,總是要冷啟動。一般情況都是加載相應的程序文件,然后點擊“下載/編程”按鈕,然后再重新斷電上電,直到程序寫進單片機里。那么有沒有其它更方便的方法呢?肯定是有的。
目的:
通過自定義的下載命令,在不需要冷啟動的情況下,就可以對STC單片機進行程序的下載,甚至通過進一步的設置,在keil中程序編輯、編譯完成后,STC-ISP會自動將程序下載到單片機里。
  1. #include <reg52.h>    //包含單片機寄存器的頭文件

  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4.         
  5. #define Self_Define_ISP_Download_Command 0x3D// 與不斷電下載有關,與本程序無關,直接復制到自己的程序中
  6. sfr IAP_CONTR = 0xE7;                                             // 與不斷電下載有關,與本程序無關,直接復制到自己的程序中


  7. /****************************函數聲明****************************************/
  8. void delay(uint z);
  9. void Init_Com(void);// 與不斷電下載有關,與本程序無關,直接復制到自己的程序中


  10. /*******************************************************************************
  11. ** 函數名稱 : main(void)
  12. ** 函數功能 : 主函數
  13. *******************************************************************************/
  14. void main()
  15. {
  16.         uchar  num,dat1,dat2;          // 相關變量定義
  17.         Init_Com();                          // 與不斷電下載有關,與本程序無關,直接復制到自己的程序中
  18.         while(1)
  19.         {
  20.                 dat1 = 0xfe;
  21.                 dat2 = 0x7f;
  22.                 for(num=0; num<7; num++)         // led燈從上往下依次點亮
  23.                 {
  24.                         P1 = dat1;          //初始化賦值
  25.                         dat1 = dat1<<1; //左移一位
  26.                         delay(500);   //延時        
  27.                 }
  28.                 for(num=0; num<7; num++)         // led燈從下往上依次點亮
  29.                 {
  30.                         P1 = dat2;          //初始化賦值
  31.                         dat2 = dat2>>1; //右移一位
  32.                         delay(500);   //延時        
  33.                 }
  34.         }
  35. }

  36. /*******************************************************************************
  37. ** 函數名稱 : delay(uint z)
  38. ** 函數功能 : 延時函數
  39. *******************************************************************************/
  40. void delay(uint z)
  41. {
  42.     uchar j;
  43.     for(z;     z>0; z--)
  44.           for(j=200; j>0; j--);
  45. }

  46. /*******************************************************************************
  47. ** 函數名稱 : Init_Com(void)        
  48. ** 函數功能 : 串口初始化,晶振11.0592KHz,波特率9600,
  49. *******************************************************************************/
  50. void Init_Com(void)   //與不斷電下載有關,與本程序無關,直接復制到自己的程序中
  51. {
  52.      TMOD = 0x20;
  53.      SM0   = 0;
  54.      SM1   = 1;
  55.       REN  = 1;
  56.      TH1   = 0xFd;
  57.      TL1    = 0xFd;
  58.      TR1   = 1;
  59.       EA    = 1;
  60.       ES    = 1;
  61. }

  62. /*******************************************************************************
  63. ** 函數名稱 : UART_Interrupt_Receive(void)
  64. ** 函數功能 : 串口中斷處理函數
  65. *******************************************************************************/
  66. void UART_Interrupt_Receive(void) interrupt 4  //與不斷電下載有關,與本程序無關,直接復制到自己的程序中
  67. {
  68.         unsigned char k = 0;
  69.         unsigned int a,b;
  70.         if(RI == 1)
  71.         {
  72.                 RI = 0;
  73.                 k  = SBUF;
  74.                 if(k == Self_Define_ISP_Download_Command)
  75.                 {
  76.                         for(a=1000; a>0; a--)
  77.                         for(b=100;  b>0; b--);
  78.                         IAP_CONTR = 0x60;
  79.                 }
  80.         }
  81.         else
  82.         {
  83.                 TI = 0;
  84.         }
  85. }
復制代碼
無標題.png

51hei.png

Keil代碼下載: 不斷電程序 流水燈.zip (36.32 KB, 下載次數: 32)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:645485 發表于 2022-5-27 15:59 | 顯示全部樓層
      第一次發帖,有許多地方不盡人意,尤其是添加代碼文字的時候,我以為把編輯好的程序復制粘貼進去就可以了,但看到發帖后的效果,有些地方還是可以再調整調整的,后面會改善的。好在代碼本身是沒有問題的,是經過驗證的,大家可以放心參考。這種STC單片機不斷電下載程序的方法,我也是參考別人的,我這里還有視頻講解資料,有需要的請留言。
希望可以和大家共同討論、共同學習、共同進步! 無標題.png



回復

使用道具 舉報

ID:645485 發表于 2022-5-27 16:12 | 顯示全部樓層
還有一點需要補充一下,注意串口初始化函數,晶振11.0592KHz,波特率9600,如果是12MHz晶振,則需要調整TH1,TL1的初值,不然下載基本不會成功的,不相信可以試試!
回復

使用道具 舉報

ID:390416 發表于 2022-5-31 09:12 | 顯示全部樓層
STC單片機下載器2.png
這就是自動斷電下載。不需要手按,也不需要串口預先復制代碼
回復

使用道具 舉報

ID:645485 發表于 2022-5-31 11:39 | 顯示全部樓層
本帖最后由 tongguan123 于 2022-5-31 15:47 編輯
人人學會單片機 發表于 2022-5-31 09:12
這就是自動斷電下載。不需要手按,也不需要串口預先復制代碼

首先非常感謝老大的分享!你提供的這個應該是一個完整的硬件電路,下載程序的時候,由硬件控制給單片機斷電和供電,來達到冷啟動的目的,應該是這樣子吧?而我分享的這個是通過對ISP/IAP命令寄存器ISP_CONTR的操作,ISP_CONTR=0X60,來達到在應用編程。方法和思路不同,但殊途同歸,最終的目的都是方便我們操作。本人學習單片機時間不長,如果有哪些地方講的不對,請指正!

無標題.png




回復

使用道具 舉報

6#
無效樓層,該帖已經被刪除
7#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表