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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請教哪位大神能從單片機程序里面看出初始波特率是多少?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1044540 發表于 2022-9-12 14:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "UART.h"
  2. #include "Key.h"
  3. #include "Record.h"

  4. uint8_t Rcv_Buf[RCV_LENGTH];
  5. uint8_t Snd_Buf[SND_LENGTH];

  6. volatile uint8_t        recvbyte=0;
  7. uint8_t RcvFlag = 0;

  8. volatile uint16_t         ScanTimeMs;
  9. volatile uint16_t SysOverTime;
  10. uint8_t InitStartEnable;

  11. uint8_t SendAdd;

  12. uint16_t SysCallStatus1=0;
  13. uint16_t SysCallStatus2=0;

  14. uint16_t SysCallStatus1Bak=0;
  15. uint16_t SysCallStatus2Bak=0;
  16. uint16_t alarm = 0;

  17. bit MyAddStart;
  18. bit Over1min;

  19. bit OverTimeFlag;

  20. bit OtherMaster;
  21. bit OtherMasterChecked;

  22. volatile uint16_t DisableSendTimeMs;

  23. volatile uint16_t u16_OverTimeMs;

  24. void UART1_ISR() interrupt 4 using 1
  25. {
  26.         if(RI)
  27.         {
  28.                 RI = 0;
  29.                 SysOverTime = 0;
  30.                 UartErr = 0;
  31.                 Rcv_Buf[recvbyte] = SBUF;                        //接收數據
  32.                 if(Rcv_Buf[0] == 0x53)
  33.                 {
  34.                         recvbyte++;
  35.                 }
  36.                
  37.                 if((Rcv_Buf[recvbyte-1]==0x0a) && (Rcv_Buf[recvbyte-2]==0x0d))                 //接收到幀尾
  38.                 {
  39.                         RcvFlag = 1;                        //置位接收標志
  40.                         recvbyte = 0;                        //接收下標清零
  41.                 }
  42.         }
  43. }

  44. void Uart1_Init(void)
  45. {
  46. //        SCON = 0x50;
  47. //        TMOD &= 0x0f;
  48. //        
  49. //        TH1 = BAUD>>8;
  50. //        TL1 = BAUD;
  51. //        
  52. //        TR1 = 1;
  53. //        AUXR |= 0x40;
  54. //         ES = 1;
  55. //        EA = 1;
  56. //        
  57. //        
  58. //        RS485_RcevEnable();
  59.                         TR1 = 0;
  60.                 AUXR &= ~0x01;                //S1 BRT Use Timer1;
  61.                 AUXR |=  (1<<6);        //Timer1 set as 1T mode
  62.                 TMOD &= ~(1<<6);        //Timer1 set As Timer
  63.                 TMOD &= ~0x30;                //Timer1_16bitAutoReload;
  64.                 TH1 = (uint8_t)(BAUD >> 8);
  65.                 TL1 = (uint8_t)BAUD;
  66.                 ET1 = 0;                                                // 禁止Timer1中斷
  67. //                INT_CLKO &= ~0x02;        // Timer1不輸出高速時鐘
  68.         //        INT_CLKO |=  0x02;        // Timer1輸出高速時鐘
  69.                 TR1  = 1;                        // 運行Timer1
  70.         
  71.         SCON = (SCON & 0x3f) | (1<<6);        // 8位數據, 1位起始位, 1位停止位, 無校驗
  72. //        PS  = 1;        //高優先級中斷
  73.         ES  = 1;        //允許中斷
  74.         REN = 1;        //允許接收        
  75.         
  76. //        if(MasterAdd !=0)
  77. //        {
  78. //                        MyAddStart = 0;
  79. //        }
  80.         
  81.         
  82.         
  83.         OtherMaster = 1;
  84.         OtherMasterChecked = 0;
  85.         DisableSendTimeMs = 0;
  86.         
  87.         SysOverTime = 0;
  88.         Over1min = 0;
  89.         
  90.         RS485_RcevEnable();
  91. }
  92. void UART1_Send_Char(unsigned char c)
  93. {
  94.         RS485_SendEnable();
  95.         _nop_();
  96.         _nop_();
  97.         _nop_();
  98.         SBUF = c;
  99.         while(!TI);        
  100.         TI = 0;
  101.         
  102.         _nop_();
  103.         _nop_();
  104.         _nop_();
  105.         RS485_RcevEnable();
  106. }
  107. void UART1_Send_String(unsigned char *s)
  108. {
  109.         while(*s)
  110.         {
  111.                 UART1_Send_Char(*s++);
  112.         }
  113. }
  114. void UART1_Send_Int(unsigned int c)
  115. {
  116.         UART1_Send_Char(c/10000+0x30);
  117.         UART1_Send_Char(c%10000/1000+0x30);
  118.         UART1_Send_Char(c%1000/100+0x30);
  119.         UART1_Send_Char(c%100/10+0x30);
  120.         UART1_Send_Char(c%10+0x30);
  121.         UART1_Send_Char(0x0d);
  122.         UART1_Send_Char(0x0a);
  123. }
  124. void UART1_Send_Buf(unsigned char *s,unsigned char len)
  125. {
  126.         unsigned char i;
  127.         
  128.         for(i=0;i<len;i++)
  129.         {
  130.                 UART1_Send_Char(s[i]);
  131.         }
  132. }

  133. void UART_Timer_Ms(void)
  134. {
  135.         SysOverTime++;
  136.         if(SysOverTime > 10000)
  137.         {
  138.                 UartErr = 1;
  139.                 MyAddStart = InitStartEnable;
  140.                 ScanTimeMs = 0;
  141.         }
  142.         if(MyAddStart)
  143.         {
  144.                 ScanTimeMs++;

復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1042116 發表于 2022-9-12 18:31 | 只看該作者
你這個看不出來的,BAUD(波特率)沒有初始化,你得自己初始化就是你自己賦值
回復

使用道具 舉報

板凳
ID:60656 發表于 2022-9-12 18:35 | 只看該作者
要先知道時鐘頻率才能推算
回復

使用道具 舉報

地板
ID:149144 發表于 2022-9-12 20:37 | 只看該作者
全局搜索一下 “BAUD ”,看看定義的是啥
回復

使用道具 舉報

5#
ID:624769 發表于 2022-9-12 20:43 | 只看該作者
有獎競猜么?
自己到
UART.h 里面去找
BAUD 的設定.
回復

使用道具 舉報

6#
ID:123289 發表于 2022-9-13 11:22 | 只看該作者
重要嗎?自己懂得如何算就可以了。可以借鑒代數的方式,設置一個參量代表時鐘值,改變值的大小,可以估計一下。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看中文字幕视频 | 国产精品爱久久久久久久 | 黄色国产区 | 久久中文网 | 在线成人免费观看 | 日本一区二区高清不卡 | 国产高清视频在线观看 | 黄色片网此 | 成年人在线观看 | 国产免费看 | 国内精品视频在线观看 | 久久久精品久 | 日韩欧美一区二区三区 | 在线视频91 | 久久久久久久久久久国产 | 成人国产精品久久久 | 美女一级a毛片免费观看97 | 日韩成人免费视频 | 91精品久久久久久久久久 | 综合国产 | 福利在线观看 | 亚洲精品一区二区三区在线 | 欧美一级久久 | 欧美午夜精品 | 亚洲成人99 | 久草色视频 | 成人在线精品视频 | 久久久亚洲精品视频 | 亚洲色图插插插 | 中文字幕一二三区 | 国产成人综合在线 | 欧美一级淫片免费视频黄 | www.4虎影院| 久草免费在线 | wwwxxx国产| 日韩在线看片 | 久久久国产精品 | 欧洲一区二区视频 | 日韩快播电影网 | 91视频进入 | 日韩在线播放av |