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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2882|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

記錄一下,方便找到單片機(jī)串口發(fā)送字符串?dāng)?shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:636538 發(fā)表于 2019-11-27 15:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)的串口接收和發(fā)送數(shù)據(jù)的程序編寫來(lái)源:https://www.cnblogs.com/weiwenjietop/p/9343499.html

  1. #include "config.h"
  2. /******************************串口1的波特率********************************/
  3. //T1作波特率發(fā)生器
  4. //在波特率加倍情況下
  5. #define BAUD_57600                            256 - (OSC_FREQ/192L)/57600L    // 254 FF
  6. #define BAUD_28800                            256 - (OSC_FREQ/192L)/28800L    // 254 FE
  7. #define BAUD_19200                            256 - (OSC_FREQ/192L)/19200L    // 253 FD
  8. #define BAUD_14400                            256 - (OSC_FREQ/192L)/14400L    // 252 FC
  9. #define BAUD_9600                             256 - (OSC_FREQ/192L)/9600L     // 250 FA

  10. #define SYS_Fosc        11059200L  //晶振頻率                           
  11. uint32_t COMM_BAUD_RATE=9600  ;    //串口波特率
  12. #define OSC_FREQ        11059200  //11059200  
  13. static INT8U Send_buf[10] = {0} ;
  14. static INT8U Recv_buf[10] = {0} ;

  15. static INT8U SendDataLen = 0 ;
  16. static INT8U ResendDataLen = 0 ;
  17. /************************************************************************
  18. 函 數(shù) 名: 串口初始化
  19. 功能描述: STC10L08XE 單片機(jī)串口初始化函數(shù)
  20. 返回函數(shù): none
  21. 其他說(shuō)明: none
  22. **************************************************************************/
  23. void UartIni(void)
  24. {
  25.         TMOD = 0x20;                // 設(shè)置 T1 為波特率發(fā)生器
  26.         SCON = 0x50;                // 0101,0000 8位數(shù)據(jù)位, 無(wú)奇偶校驗(yàn)
  27.                                                    
  28.         PCON = 0x00;                //PCON=0;
  29.         TH1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);//設(shè)置為9600波特率
  30.         TL1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);
  31.     TR1     = 1;                            //定時(shí)器1打開
  32.     REN     = 1;                           //串口1接收使能
  33.     ES      = 1;                           //串口1中斷使能
  34.           EA = 1;   
  35. }
  36. //串口接受函數(shù)初始化1
  37. void UartIni1(void)
  38. {
  39.     SCON = 0x50;            //8-bit variable UART
  40.     TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode
  41.     TH1 = TL1 = -(SYS_Fosc/12/32/COMM_BAUD_RATE); //Set auto-reload vaule
  42.     TR1 = 1;                //Timer1 start run
  43.     ES = 1;                 //Enable UART interrupt
  44.     EA = 1;                 //Open master interrupt switch
  45. }
  46. /***********************************************************
  47. * 名    稱:
  48. * 功    能:
  49. * 入口參數(shù): 無(wú)
  50. * 出口參數(shù):無(wú)
  51. * 說(shuō)    明:                                          
  52. **********************************************************/
  53. void Uart_Isr() interrupt 4 using 1
  54. {        
  55.         if(RI)
  56.         {        
  57.                   
  58.         }
  59. }
  60. /************************************************************************
  61. 功能描述:         串口發(fā)送一字節(jié)數(shù)據(jù)  sbuf=data  
  62.                 接受     data=sbuf
  63. 入口參數(shù):        DAT:帶發(fā)送的數(shù)據(jù)
  64. 返 回 值:         none
  65. 其他說(shuō)明:        none
  66. **************************************************************************/
  67. void Uart_PutByte(uint8_t DAT)
  68. {
  69.         ES  =  0;
  70.         TI=0;
  71.         DAT=SBUF  ;
  72.         while(TI==0);
  73.         TI=0;
  74.         ES = 1;
  75. }
  76. ///*****************************************************************************************************
  77. // - 功能描述: 串口接受一幀數(shù)據(jù)
  78. // - 隸屬模塊: 內(nèi)部
  79. // - 參數(shù)說(shuō)明:
  80. // - 返回說(shuō)明:
  81. // - 注:無(wú)     
  82. //*****************************************************************************************************/
  83. void SendCmd(INT8U len )
  84. {
  85.     INT8U i = 0 ;
  86.     for(i=0; i<len; i++)//數(shù)據(jù)
  87.     {
  88.                 Uart_PutByte(Send_buf[i]) ;
  89.     }
  90. }
  91. ///********************************************************************************************
  92. // - 功能描述:求和校驗(yàn)
  93. // - 隸屬模塊:
  94. // - 參數(shù)說(shuō)明:
  95. // - 返回說(shuō)明:
  96. // - 注:      和校驗(yàn)的思路如下
  97. //             發(fā)送的指令,去掉起始和結(jié)束。將中間的6個(gè)字節(jié)進(jìn)行累加,最后取反碼
  98. //             接收端就將接收到的一幀數(shù)據(jù),去掉起始和結(jié)束。將中間的數(shù)據(jù)累加,再加上接收到的校驗(yàn)
  99. //             字節(jié)。剛好為0.這樣就代表接收到的數(shù)據(jù)完全正確。
  100. //********************************************************************************************/
  101. void DoSum( INT8U *Str, INT8U len)
  102. {
  103.     INT16U xorsum = 0;
  104.     INT8U i;
  105.     for(i=0; i<len; i++)
  106.     {
  107.         xorsum  = xorsum + Str[i];
  108.     }
  109.         xorsum     = 0 -xorsum;
  110.         *(Str+i)   = (INT8U)(xorsum >>8);
  111.         *(Str+i+1) = (INT8U)(xorsum & 0x00ff);
  112. }

  113. ///********************************************************************************************
  114. // - 功能描述: 串口向外發(fā)送命令[包括控制和查詢]
  115. // - 隸屬模塊: 外部
  116. // - 參數(shù)說(shuō)明: CMD:表示控制指令,請(qǐng)查閱指令表,還包括查詢的相關(guān)指令
  117. //              feedback:是否需要應(yīng)答[0:不需要應(yīng)答,1:需要應(yīng)答]
  118. //              data:傳送的參數(shù)
  119. // - 返回說(shuō)明:
  120. // - 注:      
  121. //********************************************************************************************/
  122. void Uart_SendCMD(INT8U CMD ,INT8U feedback , INT16U dat)
  123. {
  124.     Send_buf[0] = 0xff;    //保留字節(jié)
  125.     Send_buf[1] = 0x06;    //長(zhǎng)度
  126.     Send_buf[2] = CMD;     //控制指令
  127.     Send_buf[3] = feedback;//是否需要反饋
  128.     Send_buf[4] = (INT8U)(dat >> 8);//datah
  129.     Send_buf[5] = (INT8U)(dat);     //datal
  130.     DoSum(&Send_buf[0],6);        //校驗(yàn)
  131.     SendCmd(8);       //發(fā)送此幀數(shù)據(jù)
  132. }

  133. /************************************************************************
  134. 功能描述: 串口發(fā)送字符串?dāng)?shù)據(jù)
  135. 入口參數(shù):         *DAT:字符串指針
  136. 返 回 值: none
  137. 其他說(shuō)明: API 供外部使用,直觀!
  138. **************************************************************************/
  139. void PrintCom(uint8_t *DAT)
  140. {
  141.         while(*DAT)
  142.         {
  143.                  Uart_PutByte(*DAT++);
  144.         }        
  145. }
  146. /************************************************************************
  147. 功能描述: 串口發(fā)送字符串?dāng)?shù)據(jù)  直接發(fā)送 hex 文件 0x0f
  148.                                                等價(jià)于 0f
  149. 入口參數(shù):         *DAT:字符串指針
  150. 返 回 值: none
  151. 其他說(shuō)明: API 供外部使用,直觀!
  152. **************************************************************************/
  153. void PrintCom1(uint8_t *DAT)
  154. {
  155.         
  156.         int i;
  157. for(i=0;i<12;i++)
  158.         {
  159.                  Uart_PutByte(*DAT++);  //Uart_PutByte   串口發(fā)送一字節(jié)數(shù)據(jù)  sbuf=data  
  160.         }        
  161. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 青娱乐av | 午夜爽爽爽男女免费观看 | 91av视频在线观看 | 亚洲成人av| 亚洲97 | 一区二区小视频 | 男人天堂久久 | 精品成人佐山爱一区二区 | 日韩精品一区二区三区视频播放 | 成人1区2区| 精品欧美一区二区在线观看视频 | 91九色婷婷 | 91视频导航 | 久久久激情视频 | 自拍偷拍中文字幕 | 免费在线观看av网址 | 国产美女在线免费观看 | 日韩三级 | 男人天堂网址 | 久久一区二区av | 国产91色在线 | 亚洲 | 国产精品夜夜春夜夜爽久久电影 | 国产成人精品一区二区三 | 男女网站免费 | 毛片一区| 亚洲精品一二区 | 一区二区三区在线 | 国产日韩精品一区二区三区 | 午夜在线视频一区二区三区 | 成人免费看黄网站在线观看 | 欧美日韩在线观看一区 | 国产精品久久久久久久久久久免费看 | 人成在线视频 | 欧美久久视频 | 在线中文字幕av | 欧美一区二区三区在线观看视频 | 性生活毛片 | 婷婷综合色 | 日韩精品一| 91观看| 999久久久久久久久6666 |