19.2.2 发送方程序设计
这里在KeilµVision3集成开发环境中,使用Keil C51语言进行设计。首先在KeilµVision3集成开发环境中建立项目,具体操作步骤如下。
(1)在KeilµVision3集成开发环境中,选择Project→New→µVision Project命令,新建一个工程,并保存。
图 19.9 选择单片机AT89S52
(2)在弹出的选择器件对话框中,选择Atmel公司的AT89S52,如图19.9所示。
(3)单击“确定”按钮,此时询问是否添加启动代码,如图19.10所示。
(4)单击“是”按钮,选择添加启动代码,完成工程的建立。
图 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.11 发送方A的程序流程图