串口发送接收程序,求解释。
时间:10-02
整理:3721RD
点击:
/*中断法控制串行口通信
接收上位机数据,并送回上位机*/
#include<reg52.h>
#define uchar unsigned char
char flag,m,k,a;
uchar code table[5]="i get";
uchar code table1[8]="12345678";
char test[8]={0};
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//T1定时器装初值
TL1=0xfd;//T1定时器装初值
TR1=1;//启动T1定时器
REN=1;//允许串口接收
SM0=0;//设定串口工作方式1
SM1=1;//设定串口工作方式1
EA=1;//开总中断
ES=1;//开串口中断
while(1)
{
if(test[0]==table1[0]&&test[1]==table1[1]
&&test[2]==table1[2]&&test[3]==table1[3]
&&test[4]==table1[4]&&test[5]==table1[6]
&&test[7]==table1[7]&&flag==1)
{
ES=0;
for(k=0;k<5;k++)
{
SBUF=table[k];
while(!TI);
TI=0;
}
flag=0;
ES=1;
SBUF='a';
}
}
}
void ser() interrupt 4 //串行口中断
{
RI=0;
flag=1;
test[m]=SBUF;
m++;
if(m=8)
m=0;
}
我的想法是当输入12345678时,上位机输出“i get”。但是运行不了。求大神帮助。怎么改?
接收上位机数据,并送回上位机*/
#include<reg52.h>
#define uchar unsigned char
char flag,m,k,a;
uchar code table[5]="i get";
uchar code table1[8]="12345678";
char test[8]={0};
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//T1定时器装初值
TL1=0xfd;//T1定时器装初值
TR1=1;//启动T1定时器
REN=1;//允许串口接收
SM0=0;//设定串口工作方式1
SM1=1;//设定串口工作方式1
EA=1;//开总中断
ES=1;//开串口中断
while(1)
{
if(test[0]==table1[0]&&test[1]==table1[1]
&&test[2]==table1[2]&&test[3]==table1[3]
&&test[4]==table1[4]&&test[5]==table1[6]
&&test[7]==table1[7]&&flag==1)
{
ES=0;
for(k=0;k<5;k++)
{
SBUF=table[k];
while(!TI);
TI=0;
}
flag=0;
ES=1;
SBUF='a';
}
}
}
void ser() interrupt 4 //串行口中断
{
RI=0;
flag=1;
test[m]=SBUF;
m++;
if(m=8)
m=0;
}
我的想法是当输入12345678时,上位机输出“i get”。但是运行不了。求大神帮助。怎么改?
沙发
uchar code table[5]="i get";
uchar code table1[8]="12345678";
这个不对,自己翻一下书,看一下数组赋值
,,,,,,,,,,,,,,,,,,,,,,