问个串口收发问题

[复制链接]
2339|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,这样也不行啊
NE5532 发表于 2011-10-18 19:31 | 显示全部楼层
楼主啊,你要的东西叫全双工,关一边叫半双工,只需要禁止相应的功能控制位就可以了,不过要分析你的具体应用,能双工就别折腾自己。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

791

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部