标题:
串口总是丢失一部分的数据怎么破输入的123456789时当多次输入就会出现少一两个数字...
[打印本页]
作者:
3263065307
时间:
2016-5-7 21:02
标题:
串口总是丢失一部分的数据怎么破输入的123456789时当多次输入就会出现少一两个数字...
/**********************TF-51实验开发板例程************************
* 平台:TF-51开发板 + Keil V4 + STC89C52RC单片机
* 功能:串口初始化和收发测试程序,接收使用中断。
* 晶振:11.0592MHZ
* 设计:天府电子
******************************************************************/
#include <reg52.h>
unsigned char string[]={" uart test for TF-51 board\r\n"}; //要发送的字符串
void send_string(unsigned char str[]) ; //函数申明
void main(void)
{
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1定时方式2,初值自动重装
TH1 = 0xfd; //波特率9600bps @ 11,0592M
TL1 = 0xfd;
TR1 = 1; //启动定时器
IE =0X90 ; //使能总中断和UART中断 10010000
// EA=1;
// ES=1;
TI=0; //清TI
SBUF='A'; //发送一个字符A
while(!TI); //查询字符A是否已经发送完,TI=0时没有发送完,发送完后TI将自动被置1
TI=0; //清TI
SBUF=0X30; //发送一个数字0x30
while(!TI); //查询数字0x30是否已经发送完,TI=0时没有发送完,发送完后TI将自动被置1
send_string(string); //发送字符串
while(1)
{
}
}
void uart() interrupt 4
{
unsigned char dat;
if(RI)
{
dat = SBUF; //接收到的数据暂存在dat中
SBUF = dat+1; //接收到的数据发送给PC机
while(TI==0) ; //等待发送完成,发送使用的查询方式
TI = 0; //清除发送结束标志
RI = 0; //清除接收中断标志
}
}
void send_string(unsigned char str[])
{
unsigned char i;
for(i=0;str[i]!='\0';i++) //若数组str没有结束,则继续发送直到遇到'\0'
{
SBUF = str[i]; //发送字符
while(!TI); //空语句判断字符是否发完 (等价while(TI==0); )
TI=0; //清TI
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1