/*--用两个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++)
{
;
}
}
}
}
文章评论(0条评论)
登录后参与讨论