导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教串口通信的延时问题[smartbean]

 *第11069篇: 请教串口通信的延时问题

  
楼 主:smartbean 2008年1月28日22:25
 请教串口通信的延时问题
各位大虾,请教大家一个问题。我用单片机的串口来接收和发送数据,并且都是用中断的方式将其放在两个不同缓冲区中。并且,我在串口发

送出命令之后,延时一段时间再去读接收缓冲区中的数据。这个延时使用的是一个循环。我发现当我延时时间长一点的时候,发送的数据的速

度也变的很慢。我想发送数据的速度应该是只和时钟频率相关的,程序的延时对发送速度是没有影响的。
请教大家一下,上面我描述的问题是怎么回事?
下面是我的一些代码
void uart0int(void)interrupt SIO_VECTOR using 2{
 //接收数据中断
 if(RI == 1){
  RI = 0;
  from_mc35_buf[from_mc35_buf_ptr++] = SBUF;
 }
 //发送数据中断
 if(TI == 1){
  TI = 0;
  if((to_mc35_buf_out != to_mc35_buf_in)){
   SBUF = to_mc35_buf[to_mc35_buf_out];  //
   to_mc35_buf_out = (to_mc35_buf_out + 1) % MAX_CHARS_IN_SMS;
   if(to_mc35_buf_out == to_mc35_buf_in){
    to_mc35_buf_out = 0;
    to_mc35_buf_in = 0;
   }
  }else{
   flag = 0;
  }
 }
}

void send_at(void){
 unsigned char i;
 while(1){
  memset(to_mc35_buf,0,MAX_CHARS_IN_SMS);       //对缓冲区清零
  for(i = 0; i   < sizeof(AT); i++){
  if(((to_mc35_buf_in + 1) % MAX_CHARS_IN_SMS) != to_mc35_buf_out){
   to_mc35_buf[to_mc35_buf_in] = AT[i];
   to_mc35_buf_in = (to_mc35_buf_in+1)% MAX_CHARS_IN_SMS;
  }
  TI = 1;
  delay(10);
  if(sub_str(from_mc35_buf,from_mc35_buf_ptr,"OK",2) == -1){    //是否响应了OK
   //处理
  }
 }
 
}
在上面的程序里面,我把第二个函数的delay(×××);语句的参数加大,就会出现串口发送数据变慢。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:EXE文件打包工具(可注册组件)[原创]

[下一篇主题]:[求助]