?? 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; //發(fā)送聯(lián)絡信息aa
while(TI==0);
TI=0;
while(RI==0); //接受B機應答
RI=0;
}while((SBUF^0xbb)!=0); //B機未準備好,繼續(xù)聯(lián)絡
do
{
pf=0;
for(i=0;i<5;i++)
{
SBUF=d[i];
pf+=d[i];
while(TI==0); //發(fā)送一位數(shù)據(jù)
TI=0;
}
SBUF=pf;
while(TI==0); //發(fā)送校驗和
TI=0;
while(RI==0); //等待B機應答
RI=0;
}while(SBUF!=0x00); //回答出錯則從發(fā)
}
void receive(unsigned char data *d)
{
unsigned char i;
do
{
while(RI==0);
RI=0;
}while((SBUF^0xaa)!=0); //判斷A機請求否
SBUF=0xbb; //發(fā)送應答信號
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 + -