第四章PIC1F877A功能及其编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编程举例 可在单片机与单片机之间,单片机与计算机之间进行通信,异步串行通信是最常用的通信方法。 “异步”指的是在通信的每个字节之间的间隔时间可以不一样,但每一位的时间宽度是严格按照通信波特率要求的。而同步通信要有一个同步脉冲信号,每个字节中的每一位是要严格按通信时钟的上下沿的有关规定进行的。 “串行”指的是进行通信的每个字节是由一位一位发出或接收的。 它只需要RX,TX,GND三根线就可以进行通信。 RC7/RX,RC6/TX是877A的异步串行通信脚。 与异步串行通信有关的寄存器有: TRISC、PORTC RCSTA、TXSTA、 SPBRG、 RCREG、TXREG 及中断相关的寄存器INTCON、PIE1(RCIE,TXIE)、PIR1(RCIF,TXIF)。 偶校验:即发送的为1的位数必须为偶数,通过改变校验位使得整个帧中为1的位数为偶数。 奇校验:就是调整校验位,使得发送的1帧数中为1的位数为奇数。 也可以采用校验位恒1,恒0等方式。 例:要求奇校验,有一个字符型变量A,判断其二进制数中1的个数N,如N为奇数,令TX9D=0,反之为1。 N=PARITY_CHECK(A); If(N==1) TX9D=0; else TX9D=1; //奇偶校验,实际是计算字符型变量中1的个数 Char PARITY_CHECK(char X) { char i,j=0; for(i=0;i8;i++) { if((A0x01)==0x01) //判断A的位0是否为1 j++; A1; //计算1位后整个数右移1位,下次仍判断0位 } if(j0x01)==0 return(0); //j是偶数,返回0 else return(1); // j是奇数,返回1 } 异步模式下,在低速时,即TXSTA.BRGH=0时,波特率计算公式为:   波特率=Fosc/(64(X+1)) 高速即TXSTA.BRGH=1时,波特率计算公式为:   波特率=Fosc/(16(X+1)) 这里X为波特率因子,即SPBRG之值,Fosc为晶振的振荡频率。 应用:已知波特率,通过计算波特率因子,选择采用高速或低速方式(导致精度不同) 例:已知晶振的振荡频率为4MHz,拟采用9600波特率 解:    低速方式:9600=4000000/(64(X+1)),得X=5.51,取6 验证:4000000/(64*(6+1))=8928.6 高速方式:9600=4000000/(16(X+1)),得X=25.04,取25 验证:4000000/(16*(25+1))=9615.4 比较二者的误差: 低速:(8928.6-9600)/9600=-6.99% 高速:(9615.4-9600)/9600=0.16% 对这种情况,选高速。 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 CSRC TX9 TXEN SYNC - BRGH TRMT TX9D 时钟源 选择 异步未用 发送9位数据 0:8位 1:9位 发送使能 0:禁止 1:使能 同步异步选择 0:异步 1:同步 高速波特率选择 0:低速 1:高速 发送移位寄存器 状态位 0:满 1:空 发送的第9位数据 0:数0 1:数1 TXSTA:发送状态和控制寄存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 串口使能 0:禁止 1:使能 接收9位数据 0:8位 1:9位 异步不用 连续接收使能 0:禁止 1:使能 地址检测使能位,只选用于9位数据 0:禁止 1:使能 数据帧错误标志 0:无错误 1:发生错误 溢出错误标志 0:无错误 1:发生错误 接收的第9位数据 0:数0 1:数1 RCSTA:接收状态和控制寄存器 注意:即便一个程序中不是同时包含接收和发送程序(也就是说只有接收或者只有发送功能),但是在程序中仍然要对RCSTA和TXSTA都进行定义! 福州大学电气工程与自动化学院 禁止发送中断,允许接收中断; 由所要求的波特率计算、选择高速、低速方式 (TXSTA.BRGH)及波特率因子SPBRG; 将0b0X100Y00送给TXSTA,设置结果是发送允许,其中X根据要发送的数据位数(8或9位)决定,Y由波特率计算误差判断决定是高速还是低速; 将0b1X010000送给RCSTA,设置结果是串口使能,允许接收,其中X根据要发送的数据位数(8或9位)决定; 如为9位数据,先把第9位数送入TXSTA.TX9D,再把要发送的数送入TXREG,开始发送; 查询发送是否结束(PIR1.TXIF=

文档评论(0)

181****2553 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档