700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > keil c语言字符串赋值 keil c指针变量赋值 请指点下迷津

keil c语言字符串赋值 keil c指针变量赋值 请指点下迷津

时间:2022-04-22 17:30:40

相关推荐

keil c语言字符串赋值 keil c指针变量赋值  请指点下迷津

这个是我在多路温湿度控制系统中用到的接收方法,Rs485方式的

如果想采用Rs485的朋友也可以参考一下

#define FRAME_HEAD 0x24

uchar RxBuf[7];

volatile bit DataOK=0;

// RxBuf0 1 2 3 4 5

// |HEAD|ID|CMD|TEMP|HUMI|CKSUM1|

//static uchar *PRecCheckSum=(uchar *)&RxBuf[5];

static volatile uchar RxWrIdx=0;

//串口接收中断函数

void serial () interrupt 4 using 3

{

if(RI && !DataOK)

{ uchar ch;

RI = 0;

ch=SBUF;

if(RxWrIdx==0 && ch!= FRAME_HEAD) return; // 这里保证收到帧头

RxBuf[RxWrIdx]=ch;

RxWrIdx++;

if(RxWrIdx>=6) // 这里是收完

{

RxWrIdx =0;

if(RxBuf[5]==(RxBuf[1]+RxBuf[2]+RxBuf[3]+RxBuf[4])&& RxBuf[1]==myID)

DataOK=1;

}

}

}

在主循环中

while(1)

{

if(DataOK)

{

RxCMD = RxBuf[2];

TempWant = RxBuf[3];

HumiWant = RxBuf[4];

if(!(TempWant||HumiWant)) GetTempHumi();

SendData(0);

DataOK =0;

}

...

...

}

void SendData(uchar TxCMD)

{

TxBuf[2] = TxCMD;

TxBuf[3] =Temp;

//TxBuf[3] = TempWant+2;

TxBuf[4] =Humi;

//TxBuf[4] = HumiWant+2;

TxBuf[5]=TxBuf[1]+TxBuf[2]+TxBuf[3]+TxBuf[4];

RS485 = Tx;

del_1ms(10);

SendBytes(TxBuf,6);

del_1ms(10);

RS485 =Rx;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。