单片机串口通讯问题!大家帮我看一下程序!
我最近写了一段485的通讯程序,发现通讯的时间特别长才能保证数据在通讯的时候不丢失(50ms)。大家帮我看看程序怎样优化才能减少通讯的时间(最好能减到30ms)!谢谢!
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define unint unsigned int
#define SLAVE1 0x61 //1#从机地址
sbit RE_DE=P1^4;
char buf[4]={1,2,3,4};
uchar point=1;
uchar add;
void serial() interrupt 4 using 1
{
if(RI)
{RI=0;
add=SBUF;
}
if(add==SLAVE1)
{ SM2=0; //设置为点对点通信状态
RE_DE=1; //设置MAX483进入发送状态
SBUF=''s''; //发起始符s
while(TI==0);TI=0;
for(point=1;point <=3;point++) //连续发送3位数据
{
SBUF=buf[point];
while(TI==0);TI=0;
}
SBUF=''o''; //发送结束符o
while(TI==0);TI=0;
RE_DE=0; }
}
main()
{
TMOD=0x21; //T/C0方式1,T/C1方式2
TL1=0xfd; //9600 bit/s
TH1=0xfd;
SCON=0x70; //选择串口工作方式为1,打开接收允许
PCON=0x00;
TR1=1;
REN=1;
RI=0;
ES=1;
PS=1;
EA=1;
SM2=1; //处于地址检测状态
RE_DE=0;
while(1);
}
发表时间:2006年11月14日13:34:49