中科因仑“3+1”工程特种兵精英论坛

标题: 双机通信(握手) [打印本页]

作者: 张衍波    时间: 2015-4-15 13:31
标题: 双机通信(握手)


程序说明:
  甲发送,乙接收 甲先发送AA给乙 ,乙接收AA后,向甲回答BB。甲收到BB后(甲乙两机握手)就把P1口的状态发送给乙机,之后向乙机发送结束符FF。乙收到FF后,根据甲机P2口的状态点亮LED。同时向甲机返回结束符FF,甲机收到结束符FF后停止发送。
*********************************************************************/
#include<reg52.h>                 //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
/********************************************************************
                            延时函数
*********************************************************************/

void delayms(uchar n)
{
uchar m,s;
for(m=n;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}

/********************************************************************
                功能:串口初始化,波特率9600,方式1
*********************************************************************/

void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
Init_Com();         //初始化
delayms(40); //延时等待

while(1)
  {

  do{
     while(!RI);//等待接收中断置位
         RI=0;                //中断清零
     }

        while((SBUF^0XAA)!=0);/*此句可以改为while(SBUF!=0XAA);*/ //等待接收甲发送的AAH

        do{                          
         SBUF=0XBB;        //向甲发送BBH
           while(!TI);
         TI=0;
         while(!RI);
         RI=0;
         P2=SBUF;
         while(!RI);
         RI=0;
     }
    while((SBUF^0XFF)!=0);/*此句可以改为while(SBUF!=0XFF);*/
                 
     SBUF=0xFF;
           while(!TI);
         TI=0;
         }
}
       
/********************************************************************
                              结束
*********************************************************************/
[attach]2313[/attach]








欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4