串口通信主机程序.txt

来自「简单的串口通信程序!通过按键来实验是否将主机中相应缓冲区中的内容传送给从机!主机」· 文本 代码 · 共 97 行

TXT
97
字号
 #include <reg51.h>
 #define uchar unsigned char
 #define _rdy_ 0x05
 #define _ok_ 0x04
 #define _busy_ 0x03
 #define _succ_ 0x02
 #define _ecc_ 0x01
 uchar data ss[]={4,0,0,0};
 sbit k1=P3^3;

 void intial()
 {TMOD=0x20;
 TH1=250;
 TL1=250;
 TR1=1;
 PCON=0x80;
 SCON=0x50;
 }

 void delay()
 {uchar m,n;
 for(m=20;m>0;m--)
 for(n=250;n>0;n--);
 }

 bit send_ena()
 {ACC=_rdy_;
 SBUF=ACC;
 while(!TI);
 TI=0;
 while(!RI);
 RI=0;
 ACC=SBUF;
 if(ACC==_ok_)return 1;
 else return 0;
}

bit keyscan()
{bit i=0;
if(k1==0)
{delay();
if(k1==0) i=1;
else i=0;
}
return i;
}

void send(uchar x)
{ACC=x;
SBUF=ACC;
while(!TI);
TI=0;
}

void send_full()
{uchar i,j;
j=ss[0];
for(i=0;i<j;i++)
{send(ss[i]);
}
}

uchar recv()
{uchar k;
while(!RI);
RI=0;
ACC=SBUF;
k=ACC;
return k;
}

void main(void)
{uchar i,t;
bit temp,keyword;
intial();
while(1)
{ss[1]=P1;
ss[2]=P2;
for(i=0;i<3;i++)
{t=ss[i];
ss[3]=ss[3]|t;
}
keyword=keyscan();
if(keyword!=0)
{temp=send_ena();
if(temp==1)
{send_full();
t=recv();
while(t!=_succ_)
{send_full();
t=recv();
}
}
}
}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?