打印

[程序源码] STC单片机串口通讯

[仿制链接]
264|6
跳转到指定楼层
楼主
QUEUE que;

unsigned int pos =0;

/*void delayms(int z)
{
        uint x,y;
        for(x=z;x>0;x--)
            for(y=110;y>0;y--);
} */


void Uart_IRQHendler() interrupt 4
{
    uint ucTemp;
    EA=0;

    if(RI == 1) //当硬件接纳到一个数据时,RI会置位
   {
       RI = 0; //接纳到一位数据后就让RI为零,封闭中止
       ucTemp= SBUF; //保存接纳到的数据
       if((que._head+1)%QUEUE_MAX_SIZE!=que._tail)
      {
        que._data[que._head]=ucTemp;
        que._head=(que._head+1)%QUEUE_MAX_SIZE;
      }



   }
   EA =1;
}






int main(void)
{



    uint recv_data[20]={0};
    uint size =0;
    uint i,j,temp;


    P3M1&=0xFC;
    P3M0|=0x03;//P3.0 P3.1
    Uart1Init();

    queue_reset();
    //delayms(10);





   while(1)
   {      



      if(queue_size(que)>0)
         {
             for(i=0;i<queue_size(que);i++)
              {
                 if(que._tail!=que._head)//非空
                 {
                     temp = que._data[que._tail];
                     que._tail= (que._tail+1)%QUEUE_MAX_SIZE;
                 }//此函数是从行列中取一个数据,并且从队尾开端取

                 if(pos<QUEUE_MAX_SIZE)

                     recv_data[pos++] = temp;//将行列中的数据均取出到这个数组中

                 else

                    pos =0;

                 if(temp==0x0A)
                 {
                      size = pos;
                      pos = 0;
                 }
                 else
                     size = 0;
                // Uart2Data_SendByte(temp);
             }

             if(size>0)
             {

                 for(j=0;j<size;j++)
                 {
                     Uart1Data_SendByte(recv_data[j]);
                 }
                 size =0;

             }
         }

}


}  我想运用这个程序完成不定长数据的接纳,先把接纳的数据存入到行列中,然后从行列中取数据,再发送给上位机,我在用串口调试帮手发送数据时,在接纳缓冲区没有接纳到数据,不知道程序那里的问题

沙发
| 2019-6-21 10:02 | 只看该作者
参阅一下 modbus 通讯例程。
板凳
| 2019-6-22 18:20 | 只看该作者
EA要写在主函数里边,写在中止里边没用,由于进不去中止,只要在敞开EA的情况下才能进中止。

谈论

花儿相同ha 2019-7-6 08:34 回复TA
真的是研讨了大约一个星期,实在是不知道怎么回事 
花儿相同ha 2019-7-6 08:34 回复TA
您好。我的这个程序依照您说的把这个写在主函数里,好用了,可是又呈现了其他问题,能够讨教一下您吗,我又发了新帖子,期望您能抽暇看一下,真的谢谢您啦 
地板
| 2019-6-24 13:44 | 只看该作者
加Q细聊:2593903262

谈论

花儿相同ha 2019-7-6 08:32 回复TA
您好,刚加了您的qq,我那个问题基本解决了,可是这个程序又呈现了其他问题 
扫描二维码,随时随地手机跟帖
您需求登录后才能够回帖 登录 | 注册

本版积分规矩

我要发帖 投诉主张 创立版块 请求版主

快速回复

您需求登录后才能够回帖
登录 | 注册
高档形式

论坛热帖

封闭

抢手引荐上一条 /6 下一条

在线客服 快速回复 回来顶部 回来列表