MCS-51单片机的硬件结构.PPT

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51单片机的硬件结构

第五讲 实战范例 引例2:使用串行端口与PC通信 例:使用串行端口将字符串“MCS-51”从TXD引脚 发送至PC机。 晶振为11.0592MHz,要求波特率9600 8052 MAX 232 TXD RXD RXD TXD PC 回顾 资源 I/O接口 存储器 中断系统 定时计数器 SFRs 如何使用串行接口? 5.4 定时器/计数器实例——流水灯改进 回顾 存储器 I/O 接口 CPU 中断系统 定时/计数器 DPTR ( DPH, DPL )、 SP、PC TCON、SCON、IE、IP P0、P1、P2、P3 SCON、SBUF、PCON TCON、TMOD、TH1、TL1、TH0、TL0 ? SBUF两个同名的接收/发送缓冲寄存器 串行口相关的SFR ? SCON串行口控制寄存器 ? PCON电源控制寄存器 ? TMOD定时方式寄存器 ? TH1,TL1定时器1初值寄存器 ? TCON定时器控制寄存器 缓存发送/接收数据(8位) 设置工作方式 设置波特率 在异步数据传送中,CPU与外设之间事先必须约定两项事宜: ①字符格式。双方要约好字符的编码形式,奇偶校验形式、 以及起始位和停止位的规定。 ②波特率(Baud rate)。波特率是衡量位传送速率的指标,它要求发送站和接收站都要以相同的数据传送速率工作。 设置工作方式 设置波特率发生器 ? 通过设置SCON确定工作方式 初始化步骤 ? 通过设置PCON、TMOD、TH1、TL1、TCON 设置波特率 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 波特率的设计小结 根据串行口的四种工作方式可知: 方式0为移位寄存器方式,波特率是固定的。其波特率为fosc/12。 方式2为9位UART,波特率为2SMOD/64×fosc。波特率仅与PCON中SMOD的值有关,当SMOD=0时,波特率为fosc/64,当SMOD=1时,波特率为fosc/32。 方式1和方式3的波特率是可变的,由定时器T1的溢出速率控制。方式1和方式3波特率=2SMOD/32×(T1溢出率),其中当SMOD=0时,波特率为1/32×(T1溢出率),当SMOD=1时,波特率为1/16×(T1溢出率)。 定时器T1的溢出率定义为单位时间内定时器T1溢出的次数。即每秒钟时间内定时器T1溢出多少次。在串行通讯时,定时器T1作波特率发生器,经常采用8位自动装载方式(方式2),这样不但操作方便,也可避免重装时间常数带来的定时误差。并且T0可使用定时器方式3,这时T1作波特率发生器,定时器T0可拆为两个8位定时/计数器用。 # include reg52.h unsigned char idata strdata[6]={‘M’,’C’,’S’,’-’,’5’,’1’}; main ( ) { unsigned char i ; unsigned int j ; SCON = 0xd8; PCON = 0x00; TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; while ( 1 ) { i=0; for( i = 0;i6; i++) { SBUF = strdata [ i ]; while ( TI==0); TI = 0; } for( j =0; j12500; j++ ); } } 课堂测试: 将前面两个引例综合理解,设计测量接口电路并相应的设计出传动误差测试的单片机C语言程序。 # include reg52.h unsigned char data tstdata[2]; unsigned char CNH,CNL; sbit pulse = P3^3 ; main ( ) { unsigned char i ; unsigned int j; SCON = 0xd8; PCON = 0x00; TMOD = 0x29; TH1 = 0xfd; TL1 = 0xfd; TH0 = 0x00; TL0 = 0x00; TR1 = 1; while ( 1 ) { while ( pulse = = 1); TR0 = 1; while ( pulse = = 0); while ( pulse = = 1); TR0 = 0; tstdata[ 0 ] = TH1; tstdata[ 1 ] = TL1; for( i = 0;i2; i+

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档