}
//-----------------------------------------------------------
//从数组datas[]的首地址开始发送amount个数据,其中第0个数据是地址帧,其他是数据帧
void usart_out(unsigned char *datas,unsigned char n)
{
unsigned char i=0;
PORTD.4=1; //使MAX485处于发送状态
while(i<n) //一共发送amount个数据
{
if(i==0) UCSRB|=1; else UCSRB&=254;
UDR=*(datas+i); //装载数据开始发送
while((UCSRA&64)==0); //等待发送结束
UCSRA|=64; //清除发送结束标志
i++; //发送次数统计
}
PORTD.4=0; //使MAX485处于接收状态
}
---------------------------------------------------------------------------------
crc8校验程序
---------------------------------------------------------------------------------
unsigned char crc8(unsigned char *ptr, unsigned char len)
{
unsigned char i;
unsigned char crc=0;
while(len--!=0)
{
for(i=1; i!=0; i*=2)
{
if((crc&1)!=0) {crc/=2; crc^=0x8C;}
else crc/=2;
if((*ptr&i)!=0) crc^=0x8C;
}
ptr++;
}
return(crc);
}
上一页 [1] [2] [3]
本文关键字:暂无联系方式AVR单片机,单片机-工控设备 - AVR单片机