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;
}
}