www.pudn.com > msp430pwmgenerator.rar > bao.c


#include "bao.h" 
#include "xieyi.h" 
#include "df_uart.h" 
#include "pwm_timer_b.h" 
 
unsigned char aRxBuff[N_XY_BAO];	//接收数据缓冲区 
unsigned char NRxBuff=0; 
unsigned char aTxBuff[N_XY_BAO]; //发送数据缓冲区 
unsigned char NTxBuff=0; 
 
unsigned char bWaitRe=0;	//1:发送数据包后等待PC返回对数据包的校验结果;0:不等待 
unsigned char Command=NONE_COMMAND;  	//收到的指令 
unsigned char SendByte=0;					//准备发送的字节数 
 
unsigned char bUartRxErr=0; //1:接收数据出错,如桢错、奇偶校验错等;0:没错 
/***************************************************************************** 
数据包校验 
采用算术和的方法进行 
pbuffer:指向要校验的数据缓冲区的指针 
n_byte:校验的字节数 
pjiao_zhi:计算出的校验值 
返回值:校验通过为1,校验失败为0 
******************************************************************************/ 
unsigned char JiaoYan(unsigned char *pbuffer,unsigned char n_byte,unsigned char *pjiao_zhi) 
{ 
	unsigned char q0,q1=0; 
 
	for(q0=0;q0>8; 
		aTxBuff[3]=iq0&0xFF; 
		JiaoYan(aTxBuff,N_XY_BAO,&aTxBuff[4]); 
		SendByte=N_XY_BAO; 
		Command=NONE_COMMAND; 
	} 
	if(SendByte==N_XY_BAO) 
		bWaitRe=1; 
	*p0=SendByte; 
	return aTxBuff; 
} 
/**************************************************************************** 
其他模块检测到数据包有错时通知本模块数据通讯有错 
****************************************************************************/ 
void SetBaoErr() 
{ 
	bUartRxErr=1; 
} 
 
/**************************************************************************** 
执行指令 
****************************************************************************/ 
unsigned int DoCommand(unsigned char comd) 
{ 
	unsigned int iq0; 
	switch(comd) 
	{ 
		case STOP_COMMAND: 
		//执行STOP_COMMAND指令 
			return (GoPwm(0)); 
		case GO_COMMAND: 
			//执行GO_COMMAND指令 
			return (GoPwm(100)); 
		case FRE_COMMAND: 
			//执行FRE_COMMAND指令 
			iq0=(aRxBuff[2]<<8)+aRxBuff[3]; 
			SetFre(iq0); 
			return iq0; 
		case SC_COMMAND: 
			//执行SC_COMMAND指令 
			iq0=(aRxBuff[2]<<8)+aRxBuff[3]; 
			SetScale(iq0); 
			return iq0; 
	} 
}