//*************************************************************************
// 串口1发送数据函数
//*************************************************************************
void Send_Byte(uchar data)
{
RS485_CTR1;
while(!(IFG2&UTXIFG1)); //发送寄存器空的时候发送数据
U1TXBUF=data;
}
//********************************************************
// 命令的判断
//********************************************************
void judge_data(void)
{
if (sys_tem[1]==0x52) //命令开始
{
Send_Byte(0x24);
Send_Byte(0x52);
Send_Byte(0x0D);
}
else if(sys_tem[1]==0x57)//写程序
{
if(sys_tem[2]==0x43)//写信道号
{
Send_Byte(0x24);
Send_Byte(0x57);
Send_Byte(0x43);
Send_Byte(0x30);
Send_Byte(0x30);
Send_Byte(0x0d);
}
else if (sys_tem[2]==0x56)//写校验码
{
Send_Byte(0x24);
Send_Byte(0x57);
Send_Byte(0x56);
Send_Byte(0x4e);
Send_Byte(0x0d);
}
else if (sys_tem[2]==0x42) //写波特率
{
Send_Byte(0x24);
Send_Byte(0x57);
Send_Byte(0x42);
Send_Byte(0x44);
Send_Byte(0x0d);
}
}
}
//*************************************************************************
// 处理来自串口1的接收中断
//*************************************************************************
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX_ISR(void)
{
//关闭中断
uint i;
for(i=0;i<6;i++)
{
sys_tem[i]=U1RXBUF;
}
IE1 &=~URXIE1;
judge_data();
delay_ms(5); //切换之前先有个小延时
RS485_CTR0; //切换到接收状态
}
sys_tem[];定义的是个数组用来存放接收到的命令
想实现的功能是从串口中收到一串命令(比如:24,57 ,43,30,30,0d),然后把这串数据发送出去,程序该如何修改
此帖出自
小平头技术问答
一周热门 更多>