打印

问个串口收发问题

[复制链接]
1280|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenczy|  楼主 | 2011-10-18 15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在是同时收发,想请教一下怎么把收和发分开(即收时不能发,发时不能收),收和发是没关系的。
程序如下
void UartSendByte(unsigned char i)//单片机向主机发送数据
{
   ES=0;
   TI=0;
   SBUF=i;
   while(TI==0);
   TI=0;
   ES=1;  
}

void UartISR(void) interrupt 4   //主机接收单片机数据
{

if(RI)    //收到数据
  {  
     DATA1[Num]=SBUF;
     if(DATA1[0]==0x55) Num++;  
  else Num=0;
if(Num>1)
  {
     ................
   }
   RI=0;   //清中断请求
  }
}

void main()
{
   UartSendByte(0x01);
   UartSendByte(0x02);
   UartSendByte(0x03);
   delay(10);//延时10MS
}
沙发
chenczy|  楼主 | 2011-10-18 16:36 | 只看该作者
用的是普通的51芯片,通信芯片用232

使用特权

评论回复
板凳
mncctv| | 2011-10-18 16:52 | 只看该作者
觉得没有必要更改啊?双工通信比半双工要舒服点吧
你可以在发的时候关掉中断,发送完毕打开接收中断!

使用特权

评论回复
地板
chenczy|  楼主 | 2011-10-18 17:02 | 只看该作者
发前REN=0,发完后再REN=1,这样也不行啊

使用特权

评论回复
5
NE5532| | 2011-10-18 19:31 | 只看该作者
楼主啊,你要的东西叫全双工,关一边叫半双工,只需要禁止相应的功能控制位就可以了,不过要分析你的具体应用,能双工就别折腾自己。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

792

帖子

0

粉丝