请单片机高手帮我简述下“串行接口通讯程序设计的基本步骤”?
1个回答
展开全部
1 初始化串口通讯
2 定义发送函数和接收函数
这里有一个我做的两个串口的利用单片机做交换机做聊天工具的代码片段,希望你有用
初始化函数
void Serial()
{
TMOD=0x20;TH1=0xFD;TL1=TH1;
SCON=0x50;TR1=1;ES=1;EA=1;
BRT=0xFD;S2CON=0x50;AUXR=0x11;IE2=0x01;
}
发送函数
void Send1(unsigned char SByte)
{
ES=0;
IE1=0;
TI=0;SBUF=SByte;
while(!TI);
TI=0;
IE1=1;
ES=1;
}
void Send2(unsigned char SByte)
{
unsigned char temp;
IE2=0;
S2CON=S2CON&0xfd;
S2BUF=SByte;
do
{
temp=S2CON;temp=temp&0x02;
}
while(temp==0);
S2CON=S2CON&0xfd;
IE2=1;
}
接收函数
void Read1() interrupt 4
{
if(RI)
{
RI=0;
}
if(SBUF=='$') {R1[0]='$';cnt1=1;}
else if(cnt1>0&&SBUF=='@') {
R1[cnt1++]='@';flag1=1;
}
else if(cnt1>0) R1[cnt1++]=SBUF;
else cnt1=0;
}
void Read2() interrupt 8
{
unsigned char k;
k=S2CON;k=k&0x01;
if(k==1)
{
S2CON=S2CON&0xfe;
}
if(S2BUF=='$'){ R2[0]='$';cnt2=1;}
else if(cnt2>0&&S2BUF=='@') {
R2[cnt2]='@';
cnt2++;flag2=1;
}
else if(cnt2>0) R2[cnt2++]=S2BUF;
else cnt2=0;
}
事实上,串口通信所用的函数就这几个,至少格式都一样,应用的时候只需要更改一点点就行了。
2 定义发送函数和接收函数
这里有一个我做的两个串口的利用单片机做交换机做聊天工具的代码片段,希望你有用
初始化函数
void Serial()
{
TMOD=0x20;TH1=0xFD;TL1=TH1;
SCON=0x50;TR1=1;ES=1;EA=1;
BRT=0xFD;S2CON=0x50;AUXR=0x11;IE2=0x01;
}
发送函数
void Send1(unsigned char SByte)
{
ES=0;
IE1=0;
TI=0;SBUF=SByte;
while(!TI);
TI=0;
IE1=1;
ES=1;
}
void Send2(unsigned char SByte)
{
unsigned char temp;
IE2=0;
S2CON=S2CON&0xfd;
S2BUF=SByte;
do
{
temp=S2CON;temp=temp&0x02;
}
while(temp==0);
S2CON=S2CON&0xfd;
IE2=1;
}
接收函数
void Read1() interrupt 4
{
if(RI)
{
RI=0;
}
if(SBUF=='$') {R1[0]='$';cnt1=1;}
else if(cnt1>0&&SBUF=='@') {
R1[cnt1++]='@';flag1=1;
}
else if(cnt1>0) R1[cnt1++]=SBUF;
else cnt1=0;
}
void Read2() interrupt 8
{
unsigned char k;
k=S2CON;k=k&0x01;
if(k==1)
{
S2CON=S2CON&0xfe;
}
if(S2BUF=='$'){ R2[0]='$';cnt2=1;}
else if(cnt2>0&&S2BUF=='@') {
R2[cnt2]='@';
cnt2++;flag2=1;
}
else if(cnt2>0) R2[cnt2++]=S2BUF;
else cnt2=0;
}
事实上,串口通信所用的函数就这几个,至少格式都一样,应用的时候只需要更改一点点就行了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询