⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sum.c

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 C
字号:
#include "comm.h"

//***********************************************************************
//功能:ASCII码转换函数												
//参数:
	a	--		需要转换的数据
//返回值:无										
//************************************************************************
unsigned int ASCII(a)
{
	unsigned int m,z;
	m=a;
	if(m<10)
		z=m+0x30;
	else
		z=m+0x41-0xa;
	return z;
}
//***********************************************************************
//功能		:接收发送处理程序												
//作者		:LIHJ															
//创建日期		:04-7-2															
//版本		:V1.0															
//修改日期		:											
//************************************************************************
unsigned int SendData(unsigned int addr,unsigned int num,unsigned char *readdata)
{	
	unsigned char send[] = { 02,0x30,0x30,0x30,0x30,0x30,0x30,0x30,03,0x30,0x30};
	
	unsigned char Rxdbuf[20];
	unsigned char Txdbuf[11];
	unsigned int sum[3];
	unsigned int uSum,i,j,uTmp1;
	int Reclength,number;

	addr = addr/10 + 0x80;	
	uTmp1 = addr & 0x0f;
	send[5] = ASCII(uTmp1);
	uTmp1 = (addr>>4)& 0x0f;
	send[4] = ASCII(uTmp1);
	uTmp1 = (addr>>8)& 0x0f;
	send[3] = ASCII(uTmp1);
	uTmp1 = (addr>>12)& 0x0f;
	send[2] = ASCII(uTmp1);

	if(num%8==0)
	{
		number = num/8;
	}
	else
	{
		number=  num/8 + 1;
	}
	uTmp1 = number & 0x0f;
	send[7] = ASCII(uTmp1);
	uTmp1 = (number>>4)& 0x0f;
	send[6] = ASCII(uTmp1);

	uSum=0;
	for(i=1;i<9;i++)
	{
		uSum+=send[i];
	}
	uTmp1=uSum&0x0f;
	send[10] = ASCII(uTmp1);
	uTmp1=(uSum>>4)&0x0f;
	send[9] = ASCII(uTmp1);

	for(i=0;i<11;i++)
{
Txdbuf[i]=send[i];
}
SendProcess(Txbuffer,11);		//调用发送过程函数,发送长度为11个字节
}

//***********************************************************************
//功能		:接收数据处理程序												
//作者		:LIHJ															
//创建日期		:04-7-2															
//版本		:V1.0															
//修改日期		:											
//************************************************************************
void ReceDataProcess()
{
	sum[0] = 0;
	sum[1] = 0;
	sum[2] = 0;
		
	for(i=1;i<8;i++)
	{
		sum[0]+=Rxdbuf[i];
	}
	uTmp1 = sum[0] & 0x000f;
     sum[1] = ASCII(uTmp1);
	uTmp1 = (sum[0]>>4) & 0x000f;
	sum[2] = ASCII(uTmp1);
	if((sum[1]==Rxdbuf[8])&&(sum[2]==Rxdbuf[9]))
	{
		RxCount+=1;   /*收对计数加一*/
		for(j=num/4;j>0;j=j-2)
		{
			data[2]=0;
			if(Rxdbuf[j]>0x40)
				data[0] = Rxdbuf[j]-0x41+0xa;
			else
				data[0] = Rxdbuf[j]-0x30;
			if(Rxdbuf[j-1]>0x40)
				data[1] = Rxdbuf[j-1]-0x41+0xa;
			else
				data[1] = Rxdbuf[j-1]-0x30;
			data[2]= data[1];
			data[2]=data[2]<<4;
			data[2]=data[2]|data[0];
			for( i=0 ; i< 8 ; i++ )	
			{	
				 if((data[2]&(1<<i))==0)
				 	readdata[i+8*(num/4-j)] = 0;
				 else
				 	readdata[i+8*(num/4-j)] = 1;
			}
		}
}
	else
	{
		ComPlcCount1+=1;  /*接收错误计数加一*/
		retval=2;	//和校验错误
	}
	//retval=data[2];
	return retval;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -