52单片机 如何用T2来设波特率为115200的 串口接收 要用C语言写

如题晶振为11.0592MHz... 如题
晶振为11.0592MHz
展开
 我来答
匿名用户
推荐于2018-04-18
展开全部
void UART_init()
{
//初始化串行口和波特率发生器
SCON =0x64; //选择串口工作方式,打开接收允许
TMOD =0x21; //定时器1工作在方式2,定时器0工作在方式1
TH1 =0xfd; //实现波特率115200(系统时钟11.0592MHZ)
TR1 =1; //启动定时器T1
ET2 =1; //允许T2中断
ES=1; //允许串行口中断
PS=1; //设计串行口中断优先级
EA =1; //单片机中断允许
}
//--------------------------------------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
//--------------------------------------------------------------------------------------------------
com_interrupt(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
if(RI) //处理接收中断
{
RI=0; //清除中断标志位
RECEIVR_buffer=SBUF; //接收串口数据
if(point==0) //如果还没有接收到起始位
{
if(RECEIVR_buffer=='S') //判断是否起始标志位
point++; //是准备接收下一位
else
point=0; //不是,继续等待起始位
}
else if(point>0&&point<10) //判断是否接收够十位数据
buffer[point++]=RECEIVR_buffer; //不够,把接收到的数据放入接收缓存区
else point=0; //缓冲区已满,清除缓存区内数据重新接收
}
If(TI) //处理发送中断
{
TI=0;
}
}
//
ganjie19861124
2014-11-21
知道答主
回答量:6
采纳率:100%
帮助的人:4010
展开全部
上面的不是T2作为波特率发生的,还是用T1。那个ET2=1,仅仅是说中断出口程序用T2的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-02
展开全部
单片机与计算机通信用哪个波特率比较合适
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-02
展开全部
哇!!太厉害了,学习学习~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式