原创 用两个89S52作的异步串行单工通信

2008-5-10 16:58 1604 3 3 分类: MCU/ 嵌入式

/*--用两个89S52作的异步串行单工通信之发送 程序---*/
#include <reg52.h>
#define uchar unsigned char


void Serial_Init();      //声明
void Delay();
main()
{
 Serial_Init();         
do
 {SBUF=0x01;             //发送数据
  while(!TI);            //判断是否发送完
  TI="0";                  //发送完后TI清0
  P1=0x01;
  Delay();
  SBUF="0x02";
  while(!TI);
  TI="0";
  P1=0x02;
  Delay();
  SBUF="0x03";
  while(!TI);
  TI="0";
  P1=0x03;
  Delay();
 }while(1);
}


void Serial_Init()       //初始化    
{IE=0x00;
 TMOD=0x20;              //用定时器T1,工作方式2
 TH1=0xfa;               //频率为11.0592MHz波特率为4800bit/s?
 TL1=0xfa;
 PCON=0x00;              //SMOD=0
 SCON=0xd8;              //串口 方式3,11bit异步收发方式,允许接受
 RI=0;
 TI=0;
 TR1=1;                  //t1运行
 EA=1;
 ES=0;
 ET1=1;
}



void Delay()             //延时
{
 uchar i,j,k;
  for(i=0;i<20;i++)
    {
      for(j=0;j<200;j++)
        {
          for(k=0;k<250;k++)
            {
              ;
            }
        }
    }
 
}


 


/*--用两个89S52作的异步串行单工通信之接受 程序---/*/
#include <reg52.h>
#define uchar unsigned char
void Serial_Init();            //声明
void Delay();
main()
{
 uchar i="0";
 RI=0;
 Serial_Init();
do
 {
  while(!RI);                  //判断是否接受完
  RI="0";                        //接受完后清0
  P2=SBUF;                     //显示
  Delay();
 }while(1);
}


void Serial_Init()             //初始化
{IE=0x00;
 TMOD=0x20;                    //用定时器T1,工作方式2
 TH1=0xfa;                     //频率为11.0592MHz波特率为4800bit/s?
 TL1=0xfa;                    
 PCON=0x00;                    //SMOD=0
 SCON=0xd8;                    //串口 方式3,11bit异步收发方式,允许接?
 RI=0;
 TI=0;
 TR1=1;
 EA=1;
 ES=0;
 ET1=1;                        //t1运行
}



void Delay()                   //延时
{
 uchar i,j,k;
  for(i=0;i<20;i++)
    {
      for(j=0;j<200;j++)
        {
          for(k=0;k<250;k++)
            {
              ;
            }
        }
    }
 
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条