"); //-->
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1\:*{behavior:url(#ieooui) }
最近写了个小程序,用到9600波特率,板子上是12M晶振。但在调试的时候,死活都配不出9600的波特率。于是上狗狗,狗了一下,发现不少朋友们都遇到了相同的问题,而且下了板上钉钉的结论:51单片机在12M晶振的时候是无法实现9600波特率的。
网友们大都推荐改成11.0592M晶振。当然这个方案是绝对可行的,但我实在懒得去买这号晶振(跑一趟电子市场要花3小时呢)。于是重新去研究芯片手册,终于功夫不负有心人,我发现,如果你一不小心选的是52或者54、58的芯片,这个问题是可以解决的哦。
51单片机通常由TIMER1来产生波特率,TIMER1的频率是晶振的1/12,也就是1M。它的频率太低导致它不能实现9600波特率。这也给我们提供了一条新的解决途径:如果我们能提高时钟频率,那么也可能实现9600的波特率。
提高时钟频率是不是一定要提高晶振频率呢?当然,答案是否定的(改晶振频率那就太土了)。52及以上的单片机提供了TIMER2,可作为波特率发器。且它作为波特率发生器时,它的频率是晶振的1/2,也就是6M。其结构如图1。
<!--[if !vml]-->
<!--[endif]-->
图1 TIMER2 的波特率发生器
TIMER2作为波特率发生器,要注意以下几点:
<!--[if !supportLists]-->1. <!--[endif]-->C/T位清零,选择OSC/2作为时钟;
<!--[if !supportLists]-->2. <!--[endif]-->TH2和TL2串联成16位时钟,溢出后自动重装;重装常数存放在RCAP2H和RCAP2L;
<!--[if !supportLists]-->3. <!--[endif]-->置RCLK和TCLK为1,将特率生成器切换到TIMER2;
<!--[if !supportLists]-->4. <!--[endif]-->置TR2,启动TIMER2。
代码如下:
void Uart0_Init()
{
//9600波特率对应 FFD9H
RCAP2L = 0xD9;
RCAP2H = 0xFF;
//RCLK、TCLK置1
//TR2置1
T2CON = 0x34;
//串口工作模式1,接收使能
SCON = 0x50;
//允许串口中断
ES = 1;
return;
}
void Uart0_Ist() interrupt 4
{
if(RI)
{
RI = 0;
//Do whatever you want;
}
if(TI)
{
TI = 0;
//Do whatever you want;
}
}
以上设置,用串口调试助手调试通过。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
HA288T型电话机
Symbian OS多媒体架构分析 下
杀毒江湖不再平静 国内四枭窝里再斗老拳
ICDIA创芯展将于7月11-12日在苏州召开,近百家本土芯片企业展示新产品新技术新应用
HA088T型电话机
H桥电机驱动电路
数以千计的华硕路由器正遭受隐蔽、持久的后门攻击
AI抗命!惊爆偷改程序拒关机 马斯克回应了
台积电保持观望 ASML最新EUV机台只卖了5台
透视SCO/IBM知识产权官司下的玄机
HA288(V)P/T型电话机
飞利浦东莞公司增资三亿美元扩产工程动工
西门子EDA暂停中国服务
下月持银联卡可刷卡加油
FPC相关文章(两篇)
FPC的最新技术动向
Aion Silicon赢得$12m RISC-V AI芯片设计
FPGA/CPLD开发简明教程
FPC设计规范文献
国图手机移动图书馆案例分析 上
国图手机移动图书馆案例分析 下
三星恐以拆分抢台积电订单 想让苹果、英伟达变心
国图手机移动图书馆案例分析 中
FPC全制程技术讲解
HA088(Ⅱ)PDS型电话机
Symbian OS多媒体架构分析 上
NVIDIA、AMD「新款降规AI芯片」呼之欲出 直面川普H20禁令
个人CN域名管理办法在制订中 年内向个人开放
HA288(III)P/TS型电话机
电流回路是分析电路图的基础,看看这个电路你会更明白