久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
51單片機(jī)帶CRC校驗(yàn)的串口通信程序
[打印本頁(yè)]
作者:
hg1234
時(shí)間:
2018-8-23 14:14
標(biāo)題:
51單片機(jī)帶CRC校驗(yàn)的串口通信程序
51單片機(jī)串口通信程序,帶CRC校驗(yàn)
單片機(jī)源碼:
/**********模擬測(cè)試軟件指令*******************/
/**********驗(yàn)證Agilent設(shè)備通信端口************/
/**********下位機(jī)間的信號(hào)交流*****************/
/**********驗(yàn)證OK----hg***********************/
#include "stc12c5a60s2.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
#define UCHAR unsigned char
#define USHORT unsigned int
#define u16 unsigned int
#define UINT16 unsigned int
#define UINT32 long unsigned int
#define UINT unsigned int
uchar dat11[33]={0};
uchar Rec_number=0;
uchar Rec_data=0;
sbit KEY=P1^7;
sbit LED=P3^2;
sbit MAX485_T_R=P1^6;
uchar flag=0;
uchar crc_data[10]={0xa1,0xa2,0x03,0x44,0x55,0x66,0x98,0x14,0x55,0x62};
void init_io(void)
{
P4M0=0;
P4M1=0;
P4SW=0XFF;
P4=0XFF;
}
/****************/
void init_usart(void)
{
// AUXR=0X40;
TMOD=0X20;
SCON=0X50;
TH1=TL1=0XFD;
TR1=1;
REN=1;
}
/******************/
void send_data(uchar ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
/******************/
void printf_string(uchar *s)
{
while(*s!='\0')
{
send_data(*s++);
}
}
/*******************/
/******************************/
bit receive_data(uint times)
{
uint temp=0,temp1=0;
while(RI==0)
{
temp++;
if(temp>=2000)
{
temp=0;
temp1++;
if(temp1>times)
{
return 0;
}
}
}
RI=0;
Rec_data=SBUF;
return 1;
}
/******************/
void delay_ms(uint kk)
{
uint jj;
while(kk--)
{
for(jj=0;jj<510;jj++);
}
}
/***********************/
/******************************************************
*函數(shù)名稱:CRC16RTU
*輸 入:pszBuf 要校驗(yàn)的數(shù)據(jù)
unLength 校驗(yàn)數(shù)據(jù)的長(zhǎng)
*輸 出:校驗(yàn)值
*功 能:循環(huán)冗余校驗(yàn)-16
(RTU標(biāo)準(zhǔn)-0xA001)
*******************************************************/
UINT16 CRC16RTU( UCHAR * pszBuf, UINT unLength)
{
UINT16 CRC=0XFFFF;
UINT32 CRC_count;
for(CRC_count=0;CRC_count<unLength;CRC_count++)
{
int i;
CRC=CRC^*(pszBuf+CRC_count);
for(i=0;i<8;i++)
{
if(CRC&1)
{
CRC>>=1;
CRC^=0xA001;
}
else
{
CRC>>=1;
}
}
}
return CRC;
}
/******************/
void PC_COMMAND(void)
{
uchar *a;
// uchar i;
a=dat11;
{
if(receive_data(1))
{
dat11[Rec_number++]=Rec_data;
/* if(Rec_number==7)
{
if((dat11[0]=='*')&&(dat11[1]=='I')&&(dat11[2]=='D')&&
(dat11[3]=='N')&&(dat11[4]=='?')&&(dat11[5]==0x0D)&&(dat11[6]==0x0A))
{
LED=0;
delay_ms(50);
// printf_string("HEWLETT-PACKARD,34401A,0,11-5-3\r\n");//模擬
// delay_ms(1000);
LED=1;
// printf_string("通信完畢\r\n");
delay_ms(10);
}
else if((dat11[0]=='R')&&(dat11[1]=='E')&&(dat11[2]=='A'))
{
if((dat11[3]=='D')&&(dat11[4]=='?')&&(dat11[5]==0X0D)&&(dat11[6]==0X0A))
{
LED=0;
// printf_string("+8.00000000E-03\r\n");
delay_ms(10);
LED=1;
}
}
}
else if(Rec_number==6)
{
if((dat11[0]=='*')&&(dat11[1]=='R')&&(dat11[2]=='S'))
{
if((dat11[3]=='T')&&(dat11[4]==0x0d)&&(dat11[5]==0x0a))
{
LED=0;
delay_ms(10);
// printf_string("設(shè)備已經(jīng)復(fù)位\r\n");
LED=1;
delay_ms(10);
}
}
}
else if(Rec_number==15)
{
if((dat11[0]=='S')&&(dat11[1]=='Y')&&(dat11[2]=='S'))
{
if((dat11[3]=='t')&&(dat11[4]=='e')&&(dat11[5]=='m'))
{
if((dat11[6]==':')&&(dat11[7]=='R')&&(dat11[8]=='E'))
{
if((dat11[9]=='M')&&(dat11[10]=='o')&&(dat11[11]=='t'))
{
if((dat11[12]=='e')&&(dat11[13]==0x0d)&&(dat11[14]==0x0a))
{
LED=0;
delay_ms(10);
// printf_string("設(shè)備進(jìn)入遠(yuǎn)程模式\r\n");
LED=1;
delay_ms(10);
}
}
}
}
}
} */
if(Rec_number==33)
{
if((dat11[0]=='H')&&(dat11[1]=='E')&&(dat11[2]=='W'))
{
if((dat11[3]=='L')&&(dat11[4]=='E')&&(dat11[5]=='T'))
{
if((dat11[6]=='T')&&(dat11[7]=='-')&&(dat11[8]=='P'))
{
if((dat11[9]=='A')&&(dat11[10]=='C')&&(dat11[11]=='K')&&(dat11[12]=='A'))
{
if((dat11[13]=='R')&&(dat11[14]=='D')&&(dat11[15]==','))
{
if((dat11[16]=='3')&&(dat11[17]=='4')&&(dat11[18]=='4'))
{
if((dat11[19]=='0')&&(dat11[20]=='1')&&(dat11[21]=='A'))
{
if((dat11[22]==',')&&(dat11[23]=='0')&&(dat11[24]==','))
{
if((dat11[25]=='1')&&(dat11[26]=='1')&&(dat11[27]=='-'))
{
if((dat11[28]=='5')&&(dat11[29]=='-')&&(dat11[30]=='3'))
{
if((dat11[31]==0X0D)&&(dat11[32]==0X0A))
{
LED=0;
delay_ms(10);
// printf_string("設(shè)備進(jìn)入100MA測(cè)試模式\r\n");
LED=1;
delay_ms(10);
flag=0;
}
}
}
}
}
}
}
}
}
}
}
}
/* if(Rec_number==17&&REN==1)
{
LED=0;
delay_ms(800);
LED=1;
for(i=0;i<17;i++)
{
send_data(dat11[i]);
}
}*/
}
else
Rec_number=0;
}
}
/*****************/
void main(void)
{
uchar i=0;
UINT16 crc=0;
uchar crc_h=0;
uchar crc_l=0;
init_io();
init_usart();
MAX485_T_R=1;
while(1)
{
// PC_COMMAND();
// if(KEY==0)
{
// delay_ms(10);
// if(KEY==0)
{
// while(KEY==0);
// delay_ms(10);
// while(KEY==0);
delay_ms(30);
crc=CRC16RTU(crc_data,8);
crc_h=crc/0x100;
crc_l=crc%0x100;
for(i=0;i<8;i++)
{
send_data(crc_data[i]) ;
}
send_data(crc_h);
send_data(crc_l);
delay_ms(30);
/* printf_string("*RST\r\n");
delay_ms(100);
printf_string("*IDN?\r\n");
REN=1;
flag=1;
MAX485_T_R=0;
while(flag==1)
{
PC_COMMAND();
}
MAX485_T_R=1;
if(flag==0)
{
delay_ms(300);
printf_string("SYStem:REMote\r\n");
delay_ms(100);
printf_string("CONFigure:CURRent:DC 100MA,DEF\r\n");
} */
}
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
51定時(shí)器模擬.rar
(33.43 KB, 下載次數(shù): 86)
2018-8-23 14:13 上傳
點(diǎn)擊文件名下載附件
51定時(shí)器模擬
下載積分: 黑幣 -5
作者:
wdliming
時(shí)間:
2019-8-11 20:22
謝謝分享~~~
作者:
13631784213
時(shí)間:
2019-8-12 13:28
這個(gè)是適合那些型號(hào)的單片機(jī)
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品一区二区三区在线
|
日韩视频一区二区三区
|
亚洲精品1区
|
91国产视频在线观看
|
九九伊人sl水蜜桃色推荐
|
国产乱码精品一区二区三区五月婷
|
一区在线播放
|
亚洲h色
|
国产精品视频入口
|
天天综合网91
|
美国一级毛片a
|
亚洲成av片人久久久
|
国产综合一区二区
|
国产性网
|
羞羞视频在线观看免费观看
|
日韩一区精品
|
欧美成人二区
|
午夜一级大片
|
国产精品性做久久久久久
|
一级在线视频
|
欧洲一区在线观看
|
亚洲一区二区三区在线
|
夜夜爽99久久国产综合精品女不卡
|
91久久精品国产91久久性色tv
|
97视频久久
|
久久久久久久久91
|
日韩有码一区
|
亚洲免费在线
|
中文日韩在线视频
|
91视频在线
|
中文字幕一区二区三区在线观看
|
99久久99久久精品国产片果冰
|
色综合色综合网色综合
|
91文字幕巨乱亚洲香蕉
|
激情一区二区三区
|
国产欧美视频一区二区
|
国产丝袜人妖cd露出
|
久在线观看
|
日本一二三区在线观看
|
精品国产乱码久久久久久影片
|
日本精品国产
|