国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標題: 基于51單片機仿真485通信,單片機轉發上位機虛擬串口發送字符 [打印本頁]

作者: coolice    時間: 2020-1-29 23:22
標題: 基于51單片機仿真485通信,單片機轉發上位機虛擬串口發送字符
基于51單片機仿真485通信,單片機接收上位機單個字符后,轉發給上位機虛擬串口接收。 485-PC-單片機轉發上位機字符.zip (305.83 KB, 售價: 1 E幣)

  1. #include <reg52.h>

  2. unsigned char T0RH = 0;  //T0重載值的高字節
  3. unsigned char T0RL = 0;  //T0重載值的低字節

  4. void ConfigTimer0(unsigned int ms);
  5. extern void UartDriver();
  6. extern void ConfigUART(unsigned int baud);
  7. extern void UartRxMonitor(unsigned char ms);
  8. extern void UartWrite(unsigned char *buf, unsigned char len);

  9. void main()
  10. {
  11.     EA = 1;            //開總中斷
  12.     ConfigTimer0(1);   //配置T0定時1ms
  13.     ConfigUART(9600);  //配置波特率為9600
  14.    
  15.     while (1)
  16.     {
  17.         UartDriver();  //調用串口驅動
  18.     }
  19. }
  20. /* 串口動作函數,根據接收到的命令幀執行響應的動作
  21.    buf-接收到的命令幀指針,len-命令幀長度 */
  22. void UartAction(unsigned char *buf, unsigned char len)
  23. {
  24.     //在接收到的數據幀后添加換車換行符后發回
  25.     buf[len++] = '\r';
  26.     buf[len++] = '\n';
  27.     UartWrite(buf, len);
  28. }
  29. /* 配置并啟動T0,ms-T0定時時間 */
  30. void ConfigTimer0(unsigned int ms)
  31. {
  32.     unsigned long tmp;  //臨時變量
  33.    
  34.     tmp = 11059200 / 12;      //定時器計數頻率
  35.     tmp = (tmp * ms) / 1000;  //計算所需的計數值
  36.     tmp = 65536 - tmp;        //計算定時器重載值
  37.     tmp = tmp + 33;           //補償中斷響應延時造成的誤差
  38.     T0RH = (unsigned char)(tmp>>8);  //定時器重載值拆分為高低字節
  39.     T0RL = (unsigned char)tmp;
  40.     TMOD &= 0xF0;   //清零T0的控制位
  41.     TMOD |= 0x01;   //配置T0為模式1
  42.     TH0 = T0RH;     //加載T0重載值
  43.     TL0 = T0RL;
  44.     ET0 = 1;        //使能T0中斷
  45.     TR0 = 1;        //啟動T0
  46. }
  47. /* T0中斷服務函數,執行串口接收監控 */
  48. void InterruptTimer0() interrupt 1
  49. {
  50.     TH0 = T0RH;  //重新加載重載值
  51.     TL0 = T0RL;
  52.     UartRxMonitor(1);  //串口接收監控
  53. }
復制代碼



作者: 微鑫科技    時間: 2020-2-6 21:01
這個不是單片機的基礎全程嗎?有什么特殊的嗎?




歡迎光臨 ELEOK (http://m.afoofa.cn/) Powered by Discuz! X5.0