📄 51single-2.c
字号:
#include<reg52.h>
#include<display_s.h>
unsigned char data disbuf[5],buf[5]={0x00,0x00,0x00,0x00,0x00};
unsigned char pf;
void init (void)
{
TMOD=0x20; //T1设置为定时方式2
TH1=0xfd; //设置波特率为9600
TL1=0xfd;
PCON=0x00; //
SCON=0x50; //串口工作方式1
TR1=1;
}
void sendu(unsigned char data *d)
{
unsigned char i;
do
{
SBUF=0xaa; //发送联络信息aa
while(TI==0);
TI=0;
while(RI==0); //接受B机应答
RI=0;
}while((SBUF^0xbb)!=0); //B机未准备好,继续联络
do
{
pf=0;
for(i=0;i<5;i++)
{
SBUF=d[i];
pf+=d[i];
while(TI==0); //发送一位数据
TI=0;
}
SBUF=pf;
while(TI==0); //发送校验和
TI=0;
while(RI==0); //等待B机应答
RI=0;
}while(SBUF!=0x00); //回答出错则从发
}
void receive(unsigned char data *d)
{
unsigned char i;
do
{
while(RI==0);
RI=0;
}while((SBUF^0xaa)!=0); //判断A机请求否
SBUF=0xbb; //发送应答信号
while(TI==0);
TI=0;
while(1)
{
pf=0;
for(i=0;i<5;i++)
{
while(RI==0);
RI=0;
d[i]=SBUF;
pf+=d[i];
}
while(RI==0);
RI=0;
if((SBUF^pf)==0)
{
SBUF=0x00;
while(TI==0);
TI=0;
break;
}
else
{
SBUF=0xff;
while(TI==0);
TI=0;
}
}
}
void main(void)
{
unsigned char i;
init();
while(1)
{
receive(disbuf);
sendu(buf);
for(i=0;i<250;i++)
display(disbuf);
buf[0]+=1;
buf[4]+=1;
if(buf[0]==0xf)
{
buf[0]=0x0;
buf[4]=0x0;
buf[3]+=1;
if(buf[3]==0xf)
{
buf[3]=0x00;
buf[2]+=1;
if(buf[2]==0xf)
buf[2]=0x00;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -