打印

串口通讯出现丢失数据的现象

[复制链接]
1803|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2011-10-28 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table[]="XOFF";
void ultra_init(void)
{
TMOD=0x20; //定时器1工作于方式2
TH1=0xfd; //由51串口通信计算器小软件很容易算出TH1=TL1
TL1=0xfd; //由51串口通信计算器小软件很容易算出
TR1=1; //开定时器1
SM0=0; //编程SCON寄存器,设置通讯方式,方式1
SM1=1;
REN=1; //接受使能
EA=1; //开中断
ES=1; //设置优先级高
}
void main()
{
ultra_init();
while(1)
{
if(flag==1)
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}

}
void serial() interrupt 4 using 1
{
RI=0;//清楚标志,等待下次引发串行传送数据
a=SBUF;//从接受缓冲器读数据
flag=1;
}

相关帖子

沙发
无冕之王| | 2011-10-28 15:07 | 只看该作者
可以在内存中开一个足够长度的数组,然后在串口中断程序中将收到的数据压入该数组

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝