19.2.2 发送方程序设计

这里在KeilµVision3集成开发环境中,使用Keil C51语言进行设计。首先在KeilµVision3集成开发环境中建立项目,具体操作步骤如下。

(1)在KeilµVision3集成开发环境中,选择Project→New→µVision Project命令,新建一个工程,并保存。

19.2.2 发送方程序设计 - 图1

图 19.9 选择单片机AT89S52

(2)在弹出的选择器件对话框中,选择Atmel公司的AT89S52,如图19.9所示。

(3)单击“确定”按钮,此时询问是否添加启动代码,如图19.10所示。

(4)单击“是”按钮,选择添加启动代码,完成工程的建立。

19.2.2 发送方程序设计 - 图2

图 19.10 添加启动代码

(5)选择File→New命令,新建一个程序文件,并保存为*.C文件,可以在其中输入程序源代码。发送方A的程序源代码示例如下。


include<reg52.h>

define uchar unsigned char

uchar idata buf[10];

uchar CheckSum;//校验和

void main(void)

{

uchar i;

SCON=0x50;//设置串行口:方式1,8位UART,允许接收

TMOD|=0x20;//设置定时器T1,方式2,8位自动重装

PCON=0x80;//设置SMOD=1

TL1=0xF4;//波特率4800bit/s,初值

TH1=0xF4;

TR1=1;//启动定时器T1

for(i=0;i<10;i++)//初始化数据

{

buf[i]=i;

}

do

{

SBUF=0xAB;//发送联络信号AB

while(TI==0);//等待发送结束

TI=0;

while(RI==0);//等待B机回答

RI=0;

}while((SBUF^0xBA)!=0);//B机未准备好,继续联络

do

{

CheckSum=0;//清校验和

for(i=0;i<10;i++)

{

SBUF=buf[i];

CheckSum+=buf[i];//求校验和

while(TI==0);

TI=0;

}

SBUF=CheckSum;//发送校验和

while(TI==0);

TI=0;

while(RI==0);

RI=0;//等待B机应答

}while(SBUF!=0);//出错则重

}


在程序中,首先初始化串口以及待发送的数据。然后,发送方A发送联络信号0xAB。接收方B接收到后,返回应答信号0xBA,表示可以接收数据。接着,发送方A发送数据以及校验和。如果发送方A接收到0xEE,则表示发送出错,A重新发送。发送方A的程序流程如图19.11所示。

19.2.2 发送方程序设计 - 图3

图 19.11 发送方A的程序流程图