我在電腦上用串口助手發(fā)送了下圖的這樣一組數(shù)據(jù)。
55AA00 000101 00D900 000000 000000 000000 000025 646973 70 32 3a 30 32383435 00000d0a
串口調(diào)試.jpg (78.36 KB, 下載次數(shù): 45)
下載附件
2018-11-20 15:01 上傳
現(xiàn)在需要用51單片機(jī)發(fā)送該組數(shù)據(jù),希望也能達(dá)到串口助手里的設(shè)置的參數(shù)效果
波特率9600 ,校驗(yàn)位 無 數(shù)據(jù)位8 停止位1
16進(jìn)制發(fā)送
單片機(jī)是51的,晶振11.0592
我想把這些數(shù)據(jù)存放在一個(gè)數(shù)組,然后通過485把數(shù)組發(fā)送出去,編了個(gè)程序如下:
#include"reg52.h"
typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
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; //定義循環(huán)序號(hào)
u16 t; //定義延時(shí)參數(shù)
TMOD=0X20; //置T1定時(shí)器工作方式2
TH1=0xfd;TL1=0xfd; //置T1計(jì)數(shù)初值(波特率9600b/s)
SCON=0x40; //置串行方式1,禁止接收
PCON=0; //置SMOD=0
ET1=0; //禁止T1中斷
ES=0; //禁止串行中斷
TR1=1; //T1啟動(dòng)
while(1)
{
for(i=0;i<36;i++)
{
SBUF=jieshou[ i]; //串行發(fā)送一幀數(shù)據(jù)
while(TI==0); //等待一幀數(shù)據(jù)發(fā)送完成
TI=0; //清發(fā)送中斷標(biāo)志
for(t=0;t<11000;t++); //延時(shí)500ms
}
}
問題是:1)能否這樣寫在數(shù)組里??
2)為什么程序發(fā)送不成功?
請(qǐng)高人指點(diǎn),如果這樣不對(duì)程序應(yīng)該怎么寫?
|