久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2401|回復: 6
打印 上一主題 下一主題
收起左側

我寫的單片機程序是哪里錯?刷機進單片機的16進制不對

[復制鏈接]
跳轉到指定樓層
樓主
麻煩各位大神幫我看看
stc-isp發布的項目程序后刷機進單片機的16進制不對, 要發送的
0x0E, 0x05, 0x03, 0x05, 0x09, 0x00, 0x03, 0x00, 0x03, 0x5A                                                                                                   0x0E, 0x00, 0x05, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x5A
單片機源程序如下:
  1. //本示例在Keil開發環境下請選擇Intel的8058芯片型號進行編譯
  2. //若無特別說明,工作頻率一般為22118400Hz,串口波特率使用定時器2,波特率115200
  3. #include "STC15W.h"
  4. #include "intrins.h"
  5. typedef unsigned int U16;
  6. typedef unsigned char U8;
  7. //-----------------------------------------------
  8. #define FOSC 22118400L//30000000L//22118400L
  9. /*
  10. FOSC                T        次數        重載值
  11. 22118400        12        1000        63692.8
  12. 22118400        12        100                47104
  13. 22118400        1        1000        43417.6
  14. 22118400        1        100                -155648
  15. 22118400        1        400                10240
  16. 22118400        1        500                21299.2
  17. 22118400        1        3000        58163.2
  18. 22118400        1        5000        61112.32
  19. 22118400        1        6000        61849.6
  20. */
  21. #define T1MS_12T         (65536-FOSC/12/1000)      //12T模式
  22. #define T1MS_1T         (65536-FOSC/1000)                //1T模式
  23. #define T10MS_12T         (65536-FOSC/12/100)                  //1T模式
  24. #define T2MS_1T         (65536-FOSC/500)                  //1T模式
  25. U8 gucTask10msFlg = 0;
  26. U8 gucTask10msCount = 0;
  27. U8 gucTask1000msFlg = 0;
  28. U16 gucTask1000msCount = 0;

  29. #define KEY  P32
  30. #define LED  P37

  31. /* Timer0 interrupt routine */
  32. void tm0_isr() interrupt 1
  33. {
  34.         TL0 = T1MS_1T;                     //初始化計時值
  35.     TH0 = T1MS_1T >> 8;
  36.     gucTask10msCount++;
  37.     if(gucTask10msCount >= 10)
  38.     {
  39.         gucTask10msCount = 0;
  40.         gucTask10msFlg = 1;
  41.     }
  42.     gucTask1000msCount++;
  43.     if(gucTask1000msCount >= 1000)
  44.     {
  45.         gucTask1000msCount = 0;
  46.         gucTask1000msFlg = 1;
  47.     }
  48. }

  49. #define DEBUG
  50. #ifdef DEBUG
  51. //#define BRT             (65536 - FOSC / 115200 / 4)
  52. #define BRT             (65536 - FOSC / 9600 / 4)
  53. bit busy;
  54. U8 digits[17] = "0123456789ABCDEF";
  55. void UartIsr() interrupt 4
  56. {
  57.         U8 u8Data = 0;
  58.     if (TI)
  59.     {
  60.         TI = 0;
  61.         busy = 0;
  62.     }
  63.     if (RI)
  64.     {
  65.         RI = 0;
  66.                 u8Data = SBUF;
  67.     }
  68. }

  69. void UartInit()
  70. {
  71.         #if 1
  72.         SCON |= 0x50;
  73.     T2L = BRT;
  74.     T2H = BRT >> 8;
  75.     AUXR |= 0x15;
  76.     busy = 0;
  77.         #else
  78.     SCON = 0x50;
  79.     TMOD = 0x00;
  80.     TL1 = BRT;
  81.     TH1 = BRT >> 8;
  82.     TR1 = 1;
  83.     AUXR = 0x40;
  84.     busy = 0;
  85.         #endif
  86. }

  87. void UartSend(char dat)
  88. {
  89.     while (busy);
  90.     busy = 1;
  91.     SBUF = dat;
  92. }

  93. void UartSendStr(char *p)
  94. {
  95.     while (*p)
  96.     {
  97.         UartSend(*p++);
  98.     }
  99. }

  100. void PutHEX(U8 c)
  101. {
  102.     UartSend(digits[(c>>4)&0x0f]);
  103.     UartSend(digits[c&0x0f]);

  104. }
  105. #endif

  106. //-----------------------------------------------
  107. #define N_KEY       0
  108. #define S_KEY_DOWN  1
  109. #define D_KEY       0x20//
  110. #define L_KEY_DOWN  0x40//
  111. #define L_KEY_UP    0x80//

  112. #define KEY_VALUE                0x01

  113. #define KEY_STATE_0 0
  114. #define KEY_STATE_1 1
  115. #define KEY_STATE_2 2
  116. #define KEY_STATE_3 3
  117. #define RESET        0
  118. #define SET                1

  119. U8 KEY_LOCK1(void)
  120. {
  121.         static U8 ucKeyState = KEY_STATE_0;
  122.         static U8 ucKeyTime = 0;
  123.         U8 ucKeyPress;
  124.         U8 ucKeyValue = N_KEY;
  125.         
  126.         if(KEY == RESET)
  127.         {
  128.                 ucKeyPress = 0;
  129.         }
  130.         else
  131.         {
  132.                 ucKeyPress = 1;
  133.         }
  134.         
  135.         switch (ucKeyState)
  136.         {
  137.                 case KEY_STATE_0:
  138.                 if (!ucKeyPress)
  139.                 {
  140.                         ucKeyState = KEY_STATE_1;
  141.                 }
  142.                 break;

  143.                 case KEY_STATE_1:
  144.                 if (!ucKeyPress)
  145.                 {
  146.                         ucKeyTime = 0;
  147.                         ucKeyState = KEY_STATE_2;
  148.                 }
  149.                 else
  150.                 {
  151.                         ucKeyState = KEY_STATE_0;
  152.                 }
  153.                 break;

  154.                 case KEY_STATE_2:
  155.                 if(ucKeyPress)
  156.                 {
  157.                         //ucKeyValue = KEY_VALUE_11;
  158.                         ucKeyState = KEY_STATE_0;
  159.                 }
  160.                 else if (++ucKeyTime >= 2)
  161.                 {
  162.                         ucKeyValue = KEY_VALUE;//ucKeyValue = KEY_VALUE_11|L_KEY_DOWN;
  163.                         ucKeyState = KEY_STATE_3;//ucKeyState = KEY_STATE_3;
  164.                 }
  165.                 break;

  166.                 case KEY_STATE_3:
  167.                 if (ucKeyPress)
  168.                 {
  169.                         //ucKeyValue = KEY_VALUE_11|L_KEY_UP;
  170.             ucKeyTime = 0;
  171.                         ucKeyState = KEY_STATE_0;
  172.                 }
  173.                 break;
  174.         }
  175.         
  176.         return ucKeyValue;
  177. }

  178. U8 KeyStatus1Tab[10] = {0x0E, 0x05, 0x03, 0x05, 0x09, 0x00, 0x03, 0x00, 0x03, 0x5A};
  179. U8 KeyStatus2Tab[10] = {0x0E, 0x00, 0x05, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x5A};
  180. U8 KeyStatus = 0;

  181. /* main program */
  182. void main()
  183. {
  184.     U8 i = 0;
  185.     U8 KeyValue = N_KEY;
  186.     P0M0 = 0x00;
  187.     P0M1 = 0x00;
  188.     P1M0 = 0x00;
  189.     P1M1 = 0x00;
  190.     P2M0 = 0x00;
  191.     P2M1 = 0x00;
  192.     P3M0 = 0x00;
  193.     P3M1 = 0x00;
  194.     P4M0 = 0x00;
  195.     P4M1 = 0x00;
  196.     P5M0 = 0x00;
  197.     P5M1 = 0x00;
  198.     P6M0 = 0x00;
  199.     P6M1 = 0x00;
  200.     P7M0 = 0x00;
  201.     P7M1 = 0x00;

  202.     AUXR |= 0x84;                   //定時器0為1T模式
  203.         //AUXR &= 0x7f;                   //定時器0為12T模式
  204.     TMOD = 0x00;                    //設置定時器為模式0(16位n自動重裝載)
  205.     TL0 = T2MS_1T;                     //初始化計時值
  206.     TH0 = T2MS_1T >> 8;
  207.     TR0 = 1;                        //定時器0開始計時
  208.     ET0 = 1;                        //使能定時器0中斷
  209.     #ifdef DEBUG
  210.         UartInit();
  211.         EA = 1;
  212.         ES = 1;
  213.     //UartSendStr("\r\n = = = = = = = = = = Date: 2021/05/03= = = = == = = = = ");
  214.     //UartSendStr("\r\n This Version is Support xx");
  215.         //PutHEX(0);
  216.         #else
  217.         EA = 1;
  218.         #endif

  219.     while (1)
  220.         {
  221.                 if(gucTask10msFlg)//10ms掃描一次按鍵
  222.         {
  223.             gucTask10msFlg = 0;
  224.             KeyValue = KEY_LOCK1();//按鍵掃描
  225.             if(KeyValue == KEY_VALUE)//獲取到按鍵按下
  226.             {
  227.                 //UartSendStr("\r\n KEY DOWN");
  228.                 if(KeyStatus == 0)//發送鍵值1
  229.                 {
  230.                     for(i = 0; i < 10; i++)
  231.                     {
  232.                         UartSend(KeyStatus1Tab[i]);
  233.                     }
  234.                     KeyStatus = 1;
  235.                 }
  236.                 else                //發送鍵值2
  237.                 {
  238.                     for(i = 0; i < 10; i++)
  239.                     {
  240.                         UartSend(KeyStatus2Tab[i]);
  241.                     }
  242.                     KeyStatus = 0;
  243.                 }
  244.             }
  245.         }
  246.         if(gucTask1000msFlg)//1000ms輪詢一次
  247.         {
  248.             gucTask1000msFlg = 0;
  249.         }
  250.         }
  251. }
復制代碼

3.png (18.17 KB, 下載次數: 147)

3.png

51hei圖片20210906102802.png (44.19 KB, 下載次數: 128)

51hei圖片20210906102802.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 3#
ID:161164 發表于 2021-9-6 13:35 | 只看該作者
這里會出警告,根本不能發送F8 80 XX XX51hei圖片20210906102802.png






代碼寫著系統頻率是22.1184MHz, 實際上用的是11.0592MHz 3.png
                       
       
                                                        
回復

使用道具 舉報

沙發
ID:827243 發表于 2021-9-6 12:11 | 只看該作者
程序說明里波特率是115200,你串口助手怎么是9600呢?
回復

使用道具 舉報

地板
ID:94031 發表于 2021-9-6 15:53 | 只看該作者
用4800波特率試試。
回復

使用道具 舉報

5#
ID:845166 發表于 2021-9-6 19:17 | 只看該作者
lkc8210 發表于 2021-9-6 13:35
這里會出警告,根本不能發送F8 80 XX XX51hei圖片20210906102802.png

嗯。是沒有調頻率,謝謝
回復

使用道具 舉報

6#
ID:958455 發表于 2021-9-6 19:47 | 只看該作者
波特率沒調,修改下波特率試試
回復

使用道具 舉報

7#
ID:94031 發表于 2021-9-7 10:23 | 只看該作者
下載前要設置好 用戶運行頻率


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 性色的免费视频 | 98成人网 | 伊人青青久久 | 99久久婷婷国产综合精品电影 | 久久高潮 | 中文字幕乱码视频32 | 韩日在线观看视频 | 国产1区2区在线观看 | 免费在线观看一区二区三区 | 国产精品久久久久久久一区二区 | 国产成人一区二 | 久久久久一区 | 在线国产一区 | 91精品观看 | 免费在线观看毛片 | 欧美综合在线观看 | 欧美一区二区三区在线观看 | 凹凸日日摸日日碰夜夜 | 欧美久久视频 | 欧洲高清转码区一二区 | 羞羞的视频在线观看 | 亚洲 自拍 另类 欧美 丝袜 | 久久久久国产一级毛片高清网站 | 精品国产欧美 | 久久久精品视 | 黄色片亚洲 | aaaaaa大片免费看最大的 | 在线看h | 天天操网 | 国产精品一区二区三区在线 | 亚洲免费视频一区二区 | 国产精品第2页 | 91精品www | 中文字幕国产视频 | 成人片网址 | 91免费高清 | 中文字幕日韩一区 | 情侣酒店偷拍一区二区在线播放 | 成年人在线观看视频 | 污污的网站在线观看 | 国产一区欧美 |