51单片机以中断的方式发送,只能成功一次,第二次就不成功,求赐教,附源码。

2019-03-24 18:49发布

求大虾赐教! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
ddllxxrr
2019-03-24 21:11
static void write_data(void)
{
    static uchar send_length = sizeof(SendBuf);     //这里把要发送的数据的长度定义为静态变量,用它来判断是否发送完
    static uchar send_head=0;
    if(send_length == 0)    //如果无数据发送,就退出
    {
        //关闭串口中断
        TI=0;
        send_head=0;
        return;
    }
    else
    {
        send_length--;
        SBUF = SendBuf[send_head++];
    }
}

/****************************************
         串口接收中断
****************************************/
void UART_Receive(void) interrupt 4
{
           if(RI)
        {       
        RI=0;
//             ReceiveBuf[length++]=SBUF;      //接收串口数据  
    }
    if(TI)    //如果是发送中断
    {
        TI=0; //清除中断标志位
        write_data(); //调用发送函数
       TI = 1;
    }
}

一周热门 更多>