MCU

51学习9~~串口接收并发送两种方式

0
阅读(2665)

#include<reg52.h>
unsigned char flag,a;
void main()
{

 TMOD=0x20;//设置定时器1为工作方式2
 TH1=0xfd;
 TL1=0xfd;
 TR1=1;
 REN=1;
 SM0=0;
 SM1=1;
 EA=1;
 ES=1;
 while(1)
  {
   if(flag==1)
    {
     ES=0;
     flag=0;
     SBUF=a;
     while(!TI);    //一开始TI为0    当发送完毕后TI置为1
     TI=0;
     ES=1;
    }
  }
}
void ser() interrupt 4
{
 RI=0;
 P0=SBUF;
 a=SBUF;
 flag=1;
}

中断法
#include<reg52.h>
unsigned char a;
void main()
{
 TMOD=0x20;//设置定时器1为工作方式2
 TH1=0xfd;
 TL1=0xfd;
 TR1=1;
 REN=1;
 SM0=0;
 SM1=1;
 EA=1;
 ES=1;
 while(1);
}
void ser() interrupt 4
{
 RI=0;
 P0=SBUF;
}

查询法
#include<reg52.h>
unsigned char a;
void main()
{
 TMOD=0x20;//设置定时器1为工作方式2
 TH1=0xfd;
 TL1=0xfd;
 TR1=1;
 REN=1;
 SM0=0;
 SM1=1;
 while(1)
 {
   if(RI==1);
   {
     RI="0";
  P0=SBUF;
   }
 }
}