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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2189|回復: 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++;

復制代碼
回復

使用道具 舉報

ID:1042116 發表于 2022-9-12 18:31 | 顯示全部樓層
你這個看不出來的,BAUD(波特率)沒有初始化,你得自己初始化就是你自己賦值
回復

使用道具 舉報

ID:60656 發表于 2022-9-12 18:35 | 顯示全部樓層
要先知道時鐘頻率才能推算
回復

使用道具 舉報

ID:149144 發表于 2022-9-12 20:37 | 顯示全部樓層
全局搜索一下 “BAUD ”,看看定義的是啥
回復

使用道具 舉報

ID:624769 發表于 2022-9-12 20:43 | 顯示全部樓層
有獎競猜么?
自己到
UART.h 里面去找
BAUD 的設定.
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久69精品久久久久久久电影好 | 国产日韩一区二区 | 国产一区二区三区高清 | 国内精品久久久久久 | 精品成人av| 久久久久久亚洲精品 | 99av成人精品国语自产拍 | 伊人网在线看 | 国产一区二区三区在线视频 | 91亚洲精华国产 | 久久最新精品 | 亚洲激情一区二区 | 久久99精品国产99久久6男男 | 999久久久 | 亚洲aⅴ精品 | 国产精品一区二区三区在线 | 久久久性色精品国产免费观看 | 亚洲精品免费视频 | 精品欧美一区二区精品久久久 | 男人电影天堂 | 日韩精品在线免费观看 | www.成人久久 | 九九九久久国产免费 | 久久久久久亚洲精品 | 中文字幕国产精品 | 欧美中文一区 | 婷婷色婷婷 | 亚洲成人国产综合 | 亚洲高清在线观看 | 日韩一级免费大片 | 国产精品二区三区在线观看 | 亚洲日韩中文字幕一区 | 国产高清在线精品 | 亚洲精品白浆高清久久久久久 | 日本淫视频| 成人福利在线视频 | 亚洲韩国精品 | 国产日韩欧美 | 国产激情视频网 | 欧美一级二级视频 | 国产一区二区三区在线 |