亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 關于51單片機485通訊數組數據發送不成功的問題 [打印本頁]

作者: yuyong    時間: 2018-11-20 15:06
標題: 關于51單片機485通訊數組數據發送不成功的問題
我在電腦上用串口助手發送了下圖的這樣一組數據
55AA00 000101 00D900 000000 000000 000000 000025 646973 70 32 3a 30 32383435 00000d0a


現在需要用51單片機發送該組數據,希望也能達到串口助手里的設置的參數效果
波特率9600 ,校驗位 無   數據位8  停止位1
16進制發送

單片機是51的,晶振11.0592

我想把這些數據存放在一個數組,然后通過485把數組發送出去,編了個程序如下:


#include"reg52.h"
typedef unsigned int u16;   //對數據類型進行聲明定義
typedef unsigned char u8;

u8 jieshou[]={0x55,0xAA,0x00,0x00,0x01,0x01,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x64,0x69,0x73,0x70,
    0x32,0x3A,0x30,0x32,0x38,0x34,0x35,0x00,0x00,0x0D,0x0A};

void main()
{
      u8 i;      //定義循環序號
      u16 t;      //定義延時參數
     TMOD=0X20;     //置T1定時器工作方式2
     TH1=0xfd;TL1=0xfd;   //置T1計數初值(波特率9600b/s)
     SCON=0x40;     //置串行方式1,禁止接收
     PCON=0;      //置SMOD=0
     ET1=0;      //禁止T1中斷
     ES=0;      //禁止串行中斷
     TR1=1;      //T1啟動



while(1)
{
  
       for(i=0;i<36;i++)
       {
             SBUF=jieshou[ i];   //串行發送一幀數據
              while(TI==0);    //等待一幀數據發送完成
              TI=0;      //清發送中斷標志
   
             for(t=0;t<11000;t++);    //延時500ms

         
            }

}


問題是:1)能否這樣寫在數組里??

              2)為什么程序發送不成功?

請高人指點,如果這樣不對程序應該怎么寫?



作者: wulin    時間: 2018-11-20 21:45
用這個程序驗證串口通訊沒有什么問題,就是會無限循環發送36個16進制數。你在串口助手里看不到發送的數據可能是沒有操作好串口助手。





作者: 小貓貓愛吃魚    時間: 2018-11-20 22:56
把每一位的16進制數,用空格分開
作者: dzbj    時間: 2018-11-20 23:58
你沒操作485片子 發送時要把485片子的管腳置1 具體哪個管腳你看一下手冊
作者: 小小樣    時間: 2018-11-21 00:10
程序應該沒問題
作者: yuyong    時間: 2018-11-21 16:06
謝謝大家,搞了半天,串口助手里忘了把16進制顯示勾上




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1