- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* #include reg51.h main() { unsigned char data *p, i; TMOD=0x20; TH1=0xFD; TL1=0xFD; PCON=0x80; TR1=1; // T1模式2 作波特率发生器,SMOD=1, 波特率为19200并启动运行 SCON=0x50; /* 串口模式1, 允许接收 */ ES=1; EA=1; /* 允许串口中断 */ for (; ;); /* 循环结束,等中断 */ } 编程实现(中断进入、查询收发) * void serial(void) interrupt 4 { unsigned char data *p, i; if (TI){TI=0; return;} //一般要判断是TI或RI为1,此时多余 RI=0; if (SBUF != 0x55) return; //不是55H返回 p=0x30; for (i=0; i16; i++) //查询发送30H开始的16字节 { SBUF=*p++; while(!TI); TI=0; } } } 编程实现(中断进入、查询收发)续 * 第一节 概述 第二节 模式0及其应用 第三节 模式1及其应用 第四节 模式2、3及其应用 * 特点: 模式2和3都是11位传输格式 (1个起始位+9个数据位+1个停止位),两种模式唯一不同之处是波特率; 模式2:固定为Fosc/64或Fosc/32(由PCON中的 SMOD位来决定)。SMOD=1, Fosc/32; SMOD=0, Fosc/64. 模式3:与模式1一样由定时器T1的溢出率来确定。 使用模式2不需要用定时器作为波特率发生器,节省一个定时器;但是波特率固定,且比较高,如果满足通信需求就可以选择这种模式。当Fosc=12MHz时,波特率分别是375000和187500。 第9数据位(TB8/RB8)可以作为奇偶校验位,也可以用于多机通信控制,若不用校验,更多时候用模式1。 模式2、3特点 * 模式2、3帧格式 * 发送时:将SCON中的TB8作为第9位数据发送, TB8可编程为0或1;发送SBUF+TB8构成9位数据, 接收时:将接收来的第9位送到SCON中的RB8中:接收SBUF+TB8构成9位数据。 TB8和RB8 * 模式2、3的发送过程与模式1类似,主要的区别在于帧中数据是9位。这样,在发送一帧时,CPU除了要把8位数据送SBUF外,还要把第9位数据送到TB8中,但注意要先设定好TB8,然后再向SBUF送数,因为一写SBUF就开始发送。 停止位单独生成,加在TB8之后。 模式2、3的接收过程与模式1完全相同,只不过模式1时,SCON中的RB8是接收到的停止位(“1”);而模式2、3时,RB8是接收到的第9位(发送方的TB8)。 发送和接收过程 * 例4 设串口每隔1秒钟便将片内RAM中50H至5FH中的数据串行发送,串行口设定为模式2,TB8作偶校验位,已知Fosc=12MHz。 * 分析 将要发送的8位数据送入ACC; 由奇偶标志P即可判断这8位中1的个数: P=1 奇; P=0 偶。 如果让TB8=P, 则9位数据中1的个数总是偶数个,这样就实现了偶校验。 TB8作偶校验位: TB8作偶校验位: 串行口设定为模式2,无需用T1作波特率发生器; * 分析 1s=50ms*20 T0模式1, 重装载值 TC=65536 – 50ms/1us=15536=3CB0H * #include reg51.h void send16(void) { unsigned char data *p, i; /* 定义指针及循环变量 */ p=0x50; /* 指向内部RAM 50H单元 */ for (i =0; i16; i++) /* 循环发送16个字节 */ { ACC=*p++ ; /* 取一个字节 */ TB8=P; /* 加偶校验 */ SBUF=ACC; /* 开始发送 */ while ( !TI ); TI=0; /* 等这1个字节发完才能发下1字节 */ } } 编程实现 * main() { SCON=0x80; /* 串口模式2, 未允许接收 */ PCON=0x80; /* 波特率为Fosc/32 */ TMOD=1; TR1=1; /* T0模式1定时
您可能关注的文档
最近下载
- 小学文言文阅读专项训练(带答案30篇) .pdf VIP
- 2024《国有企业管理人员处分条例》解读PPT(优质PPT).pptx
- 模块式钢结构框架组装、吊装技术.pdf VIP
- 《非暴力沟通》读书笔记.pdf VIP
- GB50781-2012 电子工厂化学品系统工程技术规范.pdf
- 医院伦理委员会2024年度工作总结.docx VIP
- (高清版)DB34∕T 5016-2015 安徽省园林绿化养护管理标准.pdf VIP
- 实验室生物安全手册 (1).docx VIP
- 广州数控GSK988TATA1TB系列 编程操作手册.pdf
- IEC61373-2010铁路应用车辆设备冲击和振动试验(中文).pdf
文档评论(0)