


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51 单片机波特率设置方法51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下:SM0 SM1 SM2 REN TB8 RB8 TI RISM0 、 SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。这里所指的波特率,如标准 9600不是每秒种可以传送9600 个字节,而是指每秒可以传送9600个二进位,而一个字节要8 个二进位,如用串口模式1 来传输那么加
2、上起始位和停止位,每个数据字节就要占用10 个二进位, 9600波特率用模式1 传输时,每秒传输的字节数是960010 960字节。其他的字段的含义如下:(2).SM2 :多机通信控制位。多机通信是工作于方式2 和方式 3 ,SM2 位主要用于方式 2 和方式 3 。接收状态,当串行口工作于方式2 或 3 ,以及 SM2=1时,只有当接收到第 9 位数据( RB8 )为 1 时,才把接收到的前8 位数据送入SBUF ,且置位RI 发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第9 位数据是0 还是 1 ,都会将数据送入 SBUF ,并发出中断申请。工作于方式0 时, SM2 必
3、须为 0 。(3).REN :允许接收位。REN 用于控制数据接收的允许和禁止,REN=1时,允许接收, REN=0时,禁止接收。(4).TB8 :发送接收数据位8 。在方式 2 和方式 3 中, TB8 是要发送的即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据, TB8=1时为地址。(5).RB8 :接收数据位8。在方式 2 和方式 3 中, RB8 存放接收到的第9 位数据,用以识别接收到的数据特征。(6).TI :发送中断标志位。可寻址标志位。方式0 时,发送完第8 位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI
4、=1表示帧发送结束,TI可由软件清“ 0 ”。(7).RI :接收中断标志位。可寻址标志位。 接收完第8 位数据后, 该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1 表示帧接收完成。在串口中断处理时,TI ,RI 都需要软件清0 ,硬件置位后不可能自动清0 ,此外,在进行缓冲区操作时,需要 ES=0 ,以防止中断出现。51 芯片的串口工作模式0 的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M 。模式 2 的波特率是固定在fosc/64或 fosc/32,具体用那一种就取决于PCON 寄存器中的 SMOD位,如 SMOD为 0 ,波特率为fo
5、cs/64,SMOD为 1,波特率为focs/32。模式 1 和模式 3 的波特率是可变的,取决于定时器1 或 2( 52 芯片)的溢出速率,就是说定时器1 每溢出一次,串口发送一次数据。那么我们怎么去计算这两个模式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。上式中如设置了PCON 寄存器中的SMOD位为 1 时就可以把波特率提升2 倍。通常会使用定时器1 工作在定时器工作模式2 下,这时定时值中的TL1 做为计数, TH1 做为自动重装值, 这个定时模式下,定时器溢出后, TH1 的值会自动装载到TL1 ,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2
6、下定时器1 溢出速率的计算公式如下:溢出速率(计数速率)/(256 TH1 初值 )溢出速率 fosc/12*(256-TH1初值 )上式中的“计数速率”和所使用的晶体振荡器频率有关,在51 芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一, 一个机器周期等于十二个振荡周期,所以可以得知 51 芯片的计数速率为晶体振荡器频率的1/12 ,一个 12M的晶振用在51 芯片上,那么 51 的计数速率就为1M 。通常用11.0592M晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600的波特率,晶振为11.0592M和12M ,定时器 1 为模式 2
7、 ,SMOD设为 1,分别看看那所要求的TH1为何值。代入公式:11.0592M9600 (2 32) (11.0592M/12)/(256-TH1)TH1 25012M9600 (2 32) (12M/12)/(256-TH1)TH1 249.49上面的计算可以看出使用12M 晶体的时候计算出来的TH1 不为整数,而TH1 的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。*就一般串口工作在方式1
8、 和定时器工作在模式2 来讲,在设置串口的时候TH,TL 是一样的,如下例程:#include#define uchar unsigned char/ 定义一个发送字节数据的串口函数void Print_Byte(uchar ch)SBUF = ch;while(!TI)TI=0;/ 发送字符串void Print_String(uchar *str)while(*str)Print_Byte(*str+);void delay(int n)int i,j,z;for(i = 0;i50;i+)for( j=0;j250;j+)for(z =0 ;z n ;z+);int main()TMOD = 0x20;/定时器 1 工作和方式2SCON = 0x4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于公司职工工作总结7篇
- 2025广东深圳大学文化产业研究院张振鹏教授博士后招聘1人考前自测高频考点模拟试题完整答案详解
- 2025年水发集团权属一级公司纪委副书记专项招聘模拟试卷及答案详解一套
- 单位个人的半年工作总结15篇
- 关于生活的演讲稿15篇
- 关于销售业务员工作总结15篇
- 2025江西抚州市崇仁县县属国有企业招聘员工有关事项考前自测高频考点模拟试题及答案详解一套
- 承揽加工合同书(详细版)6篇
- 2025年社会救助及公益服务合作协议书
- 2025福建福州市罗源县社会救助协管员招聘1人模拟试卷及答案详解(各地真题)
- 2025年CCAA服务认证基础考试试题(答案+解析)
- 2025年辅警招聘考试试题库附答案(能力提升)
- 临床医学职业生涯规划
- 钢结构大棚承揽合同范本
- 2025至2030年中国液态锂电池行业市场发展现状及投资潜力预测报告
- 机房设备维修服务项目投标方案(技术标)
- 无人机植保技能培训课件
- 2024年中国创新方法大赛考试题库(含答案)
- office办公软件试题
- 13《黄鹤楼》公开课课件
- 第2课 第一框 中国特色社会主义的开创和发展
评论
0/150
提交评论