当初学ModBus的时候写的,代码不怎么好,但也算是正确,你参考一下
void Uart1_Isr() interrupt 4 //串口1中断函数
{
static unsigned RX_Count=0; //接收到的字节数
if(TI) //发送中断
{
TI=0;
busy=0;
}
//────────────────────────────────────────────────────
if(RI) //接收中断
{
RI=0;
if((New_Cmd)) //新命令
{
New_Cmd=0; //新命令标志位清除
TR0 = 1; //接收到串口信号后,定时器0开始计时
RX_Count=0; //重新指定指针位置
Buffer0.cnt_Byte=0; //接收字节数清除
}
Buffer0.buf_uart[RX_Count]=SBUF; //把接收到的数据保存
RX_Count++; //数组指针加1
Buffer0.cnt_Byte++; //接收字节数+1
T0_1ms_uart=0; //接收完一个字节数据,重新计时
}
//───────────────────────────────────────────────────────────
}
|