急啊!单片机串口通信程序问题!
急啊!单片机串口通信程序问题!
在keilC中编译通过,可是输出的只有“FDhb8000FDhb8000FDhb8000FDhb8000”。
我想要的结果是输出"MA20000"字符串后,延时120毫秒输出“FDhb8000”到串口。
这个程序怎么样修改才可以得到我所要的结果呢。
请高手指点一下。
#include <reg52.h>
#define uint unsigned int
uint i,j;
unsigned char flag,a;
void delay(uint);
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//波特率是9600
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;//中断模式开
ES=1;
while(1)
{
/* if(RI==1)查询方式
{
RI=0;
P1=SBUF;
}*/
if(flag==1)
{
ES=0;
flag=0;
SBUF='M';//28; 字符串
while(!TI);
TI=0;//定时器关
SBUF='A';//28;
while(!TI);
TI=0;
SBUF='2';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
ES=1;
}
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF='F';//28; 字符串
while(!TI);
TI=0;//定时器关
SBUF='D';//28;
while(!TI);
TI=0;
SBUF='h';//28;
while(!TI);
TI=0;
SBUF='b';//28;
while(!TI);
TI=0;
SBUF='8';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
SBUF='0';//28;
while(!TI);
TI=0;
ES=1;
}
}
}
}
/*延时i毫秒*/
void delay(uint i)
{
uint j;
while(i--)
{
for(j=120;j <125;j++)
{}
}
}
void ser() interrupt 4
{
RI=0;
// P1=SBUF;
a=SBUF;
flag=1;
}
在keilC中编译通过,可是输出的只有“FDhb8000FDhb8000FDhb8000FDhb8000”。
我想要的结果是输出"MA20000"字符串后,延时120毫秒输出“FDhb8000”到串口。