|
以下程序段的功能是:
以2400bps从计算机发送任一字节数据,当单片机收到该数据后,
在此数据前加上一序号然后连同此数据一起发送至计算机
出现的问题:
当发送abcdefgh时,收到的是1a2b3c4e5g
如果正常应收到:1a2b3c4d5e6f7g
也就是从第四个开始出了问题,丢一个出现一个。
问题到底出在了哪儿?多谢各位。
#include
#define uchar unsigned char
uchar temp,num,flag;
void init()
{
//设置并启动定时器1的方式2,8位自动重装
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
TR1=1;
//设置串口
SM0=0;
SM1=1; //串口工作方式为方式1
REN=1;//允许串口接收
EA=1;//开总中断
ES=1;//开串口中断
num=0; //num是每个字母前的编号
flag=0;
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
//以下显示编号1~9
num++;
if(num==10)
num=1;
SBUF=0x30+num;
while(!TI);
TI=0;
//发送接收到的数据
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
void serial() interrupt 4
{
RI=0;
temp=SBUF;
flag=1;
}
|
|