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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機單項智能電表的RS485現場總線通信程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:432241 發表于 2020-4-11 22:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1黑幣
我做的是單項智能電表的RS485現場總線通信與監控管理系統,目前需要我的單片機接收一個人的單片機,單片機之間使用串口通信,都stc89c52的,我需要接收他的數據,所以這一塊的程序怎么寫?加到我的程序的主函數么?還是怎么辦?
  1. #include"main.h"
  2. uchar idata uart1_rec_buff[34];
  3. uchar uart1_send_buff[21] = {0x01,0x03,0x10,'v','o','l','t','c','u','r',
  4.                                              'r','p','o','w','e','k','w','.','h','H','L'};
  5. uchar reg1,reg2,reg3,date[11],*time,*balance;
  6. void Init_Uart1() //初始化串口1
  7. {                                                                                                                                                   
  8.     TMOD = (TMOD&0x0F)|0x20; //定時器1工作在方式2,8位自動重裝
  9.     SCON = 0x50; //串口1工作在方式1,10位異步收發,REN=1允許接收
  10.     TH1 = 0xFD;
  11.     TL1 = 0xFD;
  12.     TR1 = 1;
  13.         ET1 = 0;
  14.     EA = 1;
  15.     ES = 1;
  16.         IP = 0x10; //設置串口1中斷為最高優先級

  17.         time = &(uart1_rec_buff[16]); //賦時間地址給指針time
  18.         balance = &(uart1_rec_buff[25]); //賦余額地址給指針balance
  19. }
  20. void Wait_Uart1_Send_Ok() //等待Uart1把這個字節發送完畢
  21. {
  22.         while(TI == 0);
  23.         TI = 0;        
  24. }
  25. void Uart1_Send_RTC_Data() //Uart1把所有實時數據發送給PC
  26. {
  27.         uchar i;
  28.         for(i=0; i<21; i++)
  29.         {
  30.                 SBUF = uart1_send_buff[i];
  31.                 Wait_Uart1_Send_Ok(); //等待Uart2發送完畢               
  32.         }                        
  33. }                          
  34. void Uart1_Processing() interrupt 4 //串口1對接收的數據進行處理
  35. {
  36.         static uchar i;
  37.         if(RI)
  38.         {
  39.                 RI = 0;
  40.                 uart1_rec_buff[i++] = SBUF;
  41.                 if(uart1_rec_buff[0] == 0x01) //檢驗地址
  42.                 {
  43.                         if(i > 1) //接收到地址和功能碼之后,再做檢驗
  44.                         {
  45.                                 if(uart1_rec_buff[1] == 0x03) //讀保持寄存器功能碼
  46.                                 {
  47.                                         if(i == 8) //接收完畢,此處可省略CRC校驗
  48.                                         {
  49.                                                 i = 0;
  50.                                                 Get_Electric_Data(); //獲取電能數據                        
  51.                                                 Uart1_Send_RTC_Data(); //Uart1把所有實時數據發送給PC
  52.                                         }        
  53.                                 }
  54.                                 else if(uart1_rec_buff[1] == 0x10) //寫多個保持寄存器功能碼
  55.                                 {                 
  56.                                         if( (i>25)&&(uart1_rec_buff[i-1]=='\0') ) //接收完畢,此處可省略CRC校驗
  57.                                         {
  58.                                                 reg1 = uart1_rec_buff[2]; //警報信號
  59.                                                 reg2 = uart1_rec_buff[3]; //開關信號
  60.                                                 reg3 = uart1_rec_buff[4]; //清零信號
  61.                                                 for(i=0; i<11; i++)
  62.                                                 {
  63.                                                         date[i] = uart1_rec_buff[i+5];
  64.                                                 }
  65.                                                 i = 0;
  66.                                         }        
  67.                                 }                          
  68.                                 if( (uart1_rec_buff[1]!=0x03)&&(uart1_rec_buff[1]!=0x10) )
  69.                                 {
  70.                                         i = 0;
  71.                                 }
  72.                         }               
  73.                 }
  74.                 else
  75.                 {
  76.                         i = 0;
  77.                 }
  78.         }        
  79. }                                                                                                                                          
復制代碼

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区在线免费观看 | 欧美成人精品一区二区男人看 | 日日操av | 岛国二区| 国产一区2区 | 亚洲激情专区 | 成人亚洲精品久久久久软件 | 国产精品亚洲欧美日韩一区在线 | 久久久久国产一区二区三区 | 黄一区二区三区 | 久久久视 | 久久av一区二区三区 | 日韩在线精品 | 日韩中文字幕一区二区 | 91久久精品国产 | 国产91在线播放 | 国产精品视频导航 | 成年人在线视频 | 国产成人99久久亚洲综合精品 | 国产h视频 | 激情三区| 精品久久久久久久 | 日韩在线免费 | 欧美成人免费在线 | 欧美极品在线 | 欧美成人a | 久久久亚洲一区 | 日韩精品一区中文字幕 | 欧美一区二区三区的 | 99爱在线观看| 国产精品夜夜夜一区二区三区尤 | 亚洲精品 在线播放 | 国产精品久久久久久久久久久免费看 | 一区二区三区免费在线观看 | 99精品国产一区二区三区 | 精品国产乱码一区二区三 | 亚洲看片网站 | 日韩在线视频一区二区三区 | 日韩中文字幕av | 最新中文字幕久久 | 精品久久久久国产免费第一页 |