- 1、本文档共89页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 AT89S51单片机的串行口研究报告.ppt
/*主机程序*/ #include reg51.h #define uchar unsigned char #define Bytenum 16 /*传送一次的字节数*/ uchar master(uchar addrs, uchar comnd) uchar slave=0x00; /*从机地址*/ uchar idata rdata[16]; uchar idata tdata[16]={“abcdefghijklmnop”}; void main(void) { uchar i; for(i=0; i10; i++); /*延时参数可根据需要调整*/ TMOD=0x20; /*设置T1为定时器方式2*/ TH1=0xfa; /*波特率4800*/ TL1=0xfa; * 2.方式2接收 SM0、SM1=10,且REN=1时。数据由RXD端输入,当位检测逻辑采样到RXD的负跳变,判断起始位有效,便开始接收一帧信息。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入接收缓冲器SBUF。 (1)RI=0,意味着接收缓冲器为空。 (2)SM2=0或接收到的第9位数据位RB8=1。 当满足上述两个条件时,收到的数据送SBUF(接收缓冲器),第9位数据送入RB8,且RI置“1”。若不满足这两个条件,接收的信息将被丢弃。 * 串行口方式2和方式3接收时序如图8-15。 图8-15 方式2和方式3接收时序 * 8.2.4 方式3 SM0、SM1=11时,方式3。为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同。方式3发送和接收时序如图8-14和图8-15所示。 方式3波特率?=? ? ??定时器T1的溢出率 * 8.4 波特率的制定 串行通信,收、发双方发送或接收的波特率必须一致。 8.4.1 波特率的定义 波特率的定义:串行口每秒钟发送(或接收)的位数。 * 8.4.2 定时器T1产生波特率的计算 (1)方式0时,波特率固定为时钟频率fosc的1/12,不受SMOD位值的影响。若fosc?=?12 MHz,波特率1Mbit/s。 (2)方式2时,波特率仅与SMOD位的值有关。 方式2波特率?=? ? ??fosc 若fosc?=?12 MHz: SMOD?=?0,波特率?=?187.5 kbit/s;SMOD?=?1,波特率?=?375 kbit/s。 波特率?=? ???定时器T1的溢出率 (8-1) 波特率由T1溢出率和SMOD的值共同决定。 实际设定波特率时,T1常设置为方式2定时(自动装初值),即TL1作为8位计数器,TH1存放备用初值。 定时器T1的溢出率?=? (8-2) * (3)方式1或方式3时,用T1作为波特率发生器 波特率?= (8-3) 结论:波特率随fosc、SMOD和定时器 TL0初值X而变化。 定时器TL1在方式2的初值为X 实际使用时,经常根据已知波特率和时钟频率fosc来计算TL1的初值X。为避免繁杂的初值计算,常用的波特率和初值X间的关系常列成表8-2形式,供查用。 * 表8-2 用定时器T1产生的常用波特率 * 波 特 率 fosc SMOD位 方式 初值X 62.5kbit/s 12 MHz 1 1、3 FFH 19.2kbit/s 11.0592 MHz 1 1、3 FDH 9.6kbit/s 11.0592 MHz 0 1、3 FDH 4.8kbit/s 11.0592 MHz 0 1、3 FAH 2.4kbit/s 11.0592 MHz 0 1、3 F4H 1.2kbit/s 11.0592 MHz 0 1、3 E8H 表8-2有两点需要注意: (1)在使用的时钟振荡频率fosc为12MHz或6MHz时,将初值X和fosc带入式(8-3)中计算出的波特率有一定误差。消除误差可采用时钟频率11.0592MHz。 (2)如果选用很低的波特率,如选为55,可将定时器T1设为方式1定时。但这种情况,T1溢出时,需在中断服务程序中重新装入初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方法加以调整。 * 【例8-3】 若时钟频率为11.0592MHz,选用T1的方式2定时作为波特率发生器,波特率为2?.4kbit/s,求初值。 设T1为方式2定时,选SMOD?=?0。 将已知条件带入式
文档评论(0)