首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
AVR单片机入门及C语言高效设计实践(十六)
来源:本站整理  作者:佚名  2011-10-20 07:23:29



  Atmega16L与PC机的串行通信通用串行接口USART的主要特征ATMEAGl6L带有一个全双工的通用异步收发器(USART),其特征如下:1.全双工操作(独立的串行接收和发送寄存器)2.异步或同步操作、3.主机或从机提供时钟的同步操作、4.高精度的波特率发生器、5.支持5、6、7、8或9个数据位和1个或2个停止位、6.硬件支持的奇偶校验操作、7,数据过速检测、8.帧错误检测、9.噪声滤波,包括错误的起始位检测,以及数字低通滤波器、10.三个独立的中断(发送结束中断、发送数据寄存器空中断、以及接收结束中断)、11.多处理器通讯模式、12.倍速异步通讯模式。

  USART的主要寄存器及设置1.USARTI/0数据寄存器-UDF:

  USART发送数据缓冲寄存器和USART接收数据缓冲寄存器共享相同的I/0地址,称为USART数据音存器或UDR。特教捉写入UDR时实际操作的是发送数据缓冲器存器(TXB),读U-DR时实际返回的是接收数据缓冲寄存器(RXB)的内容。

  在5、6、7比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR的数据会被USART发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TXD引脚输出。

  接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO就会改变它的状态。因此不要对这一存储单元使用读-修改-写指令(SBI和CBI)。使用位查询指令(SBIC和SBISI时也要小心)因为这也有可能改变FIFO的状态。

  2.USART控制和状态寄存器A-UCSRA:

  Bit7-RXC:USART接收结束,接收缓冲器中有未读出的数据时RXC置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC清零。RXC标志可用来产生接收结束中断。

  Bit6-TXC:USART发送结束,发送移位缓冲器中的数据被送出,且当发送缓冲器(UDR)为空时TXC置位。执行发送结束中断时TXC标志自动清零,也可以通过写1进行清除操作。

  TXC标志可用来产生发送结束中断。

  Bit5-UDRE:USART数据昔存器空,UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断。复位后UDRE置位,表明发送器已经就绪。

  Bit4-FE:帧错误,如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE置位。这一位一直有效直到接收缓冲器(UDR)被读取。当接收到的停止位为1时,FE标志为O。对UCSRA进行写入时,这一位要写0。

  Bit3-DOR:数据溢出,数据溢出时DOR置位。当接收缓冲器满(包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDR)被读取。对UCSRA进行写入时,这一位要写O。

  Bit2-PE:奇偶校验错误,当奇偶校验使能(UPM1=1),且接收缓冲器中所接收到的下一个字符有奇偶校验错误时UPE置位。这一位一直有效直到接收缓冲器(UDR)被读取。对UC-SRA进行写入时,这一位要写0。

  Bit1-U2X:倍速发送,这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1可将波特率分频因子从16降到8,从而有效的将异步通信模式的传输速率加倍。

  Bit0-MPCM:多处理器通信模式,设置此位将启动多处理器通信模式。MPCM置位后,USART接收器接收到那些不包含地址信息输入帧都将被忽略。发送器不受MPCM设置的影响。

  3.USART控制和状态寄存器B-UCSRB:

  Bit7-RXCIE:接收结束中断使能,置位后使能RXC中断。

  当RXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的RXC亦为1时可以产生USART接收结束中断。

  Bit6-TXCIE:发送结束中断使能,置位后使能TXC中断。

  当TXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的的RXC亦为1时可以产生USART发送结束中断Bti5-USART数据寄存器空中断使能,置位后使能UDRE中断。当UDRIE为1,全局中断标志位SREG置位,UCSRA寄存器的UDRE亦为1时可以产生USART数据寄存器空中断。

  Bit4-RXEN:接收使能,置位后将启动USART接收器。

  RxD引脚的通用端口功能被USART功能所取代。禁止按收器将刷新接收缓冲器,并使FE、DOR及PE标志无效。

  Bit3-TXEN:发送使能,置位后将启动将启动USART发送器。TXD引脚的通用端口功能被USART功能所取代。TXEN清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。

  发送器禁止后,TXD引脚恢复其通用I/0功能。

  Bit2-UCSZ2:字符长度,UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。

  Bit1-RXB8:接收数据位8,对9位串行帧进行操作时,RXB8是第9个数据位。读取UDR包含的低位数据之前首先要读取RXB8。

  Bit0-TXB8:发送数据位8,对9位串行帧进行操作时,TXB8是笫9个数据位。写UDR之前首先要对它进行写操作。

  4.USART控制和状态寄存器C-UCSRC:
 
  UCSRC寄存器与UBRRH寄存器共用相同的I/0地址。
  Bit-URSEL:寄存器选择,通过该位选择访问UCSRC寄存器或UBRRH寄存器。当读UCSRC时,该位为1;当写UC-SRC时,URSEL为1。
  Bit6-UMSEL:USART模式选择,通过这一位来选择同步
  UMSEL                       模式
0                     异步操作
1                     同步操作
或异步工作模式。
  Bit5:4-UPM1:0:奇偶校验模式,这两位设置奇偶校验的
 
      UPM 1       UPMO  奇偶模式
0 0 禁止
0 1 保留
1 0 偶校验
1 1 奇校验
  模式并使能奇偶校验。如果使能了奇偶校验,那么在发送数据,发送器都会自动产生并发送奇偶校验位。对每一个接收到的数据,接收器都会产生一奇偶值,并与UPMO所设置的值进行比较。如果不匹配,那么就将UCSRA中的PE置位。
  Bit3-USBS:停止位选择,通过这一位可以设置停止位的
 USBS           停止位位数
0 1
1 2
 
位数。接收器忽略这一位的设置。
  Bit2:1-UCSZ1:0与UCSRB寄存器
UCSZ2 UCSZ 1 UCSZ 0 字符长度
0 0 0     5位
0 0 1     6位
0 1 0     7位
0 1 1     8位
1 0 0     保留
1 0 1     保留
1 1 0     保留
1 1 1     9位
的UCSZ2结合在一起可以设置数据帧包含的数据位数(字符长度)。
  Bit0-UCPOL:时钟极性,这一位仅用于同步工作模式。使用异步模式时,将这一位清零。UCPOL设置了输出数据的改变和输入数据采样,以及同步时钟XCK之间的关系。
  UCPOL 发送数据的改变(TXD 引脚的输出) 接收数据的采样RXD 引脚的输入)
0 XCK上升沿       XCK下降沿
1 XCK下降洽       XCK上升沿
 
 
  5.USART波特率寄存器-UBRRL和UBRRH:
 
UCSRC寄存器与UBRRH寄存器共用相同的I/0地址。
  Bit15-URSEL:寄存器选择,通过该位选择访问 UCSRC寄存器或 UBRRH 寄存器。当读 UBRRH 时,该位为 0;当写UBRRH 时,URSEL为 0。
  Bit14:12-保留位:这些位是为以后的使用而保留的。为了与以后的器件兼容,写 UBRRH 时将这些位清零。
  Bit11:0-USART波特率寄存器,这个 12位的寄存器包含了 USART 的波特率信息。其中 UBRRH 包含了USART波特率高4位,UBRRL包含了低8位。波特率的改变将造成正在进行的数据传输受到破坏。写 UBRRL将立即更新波特率分频器。
  在AVR单片机综合试验板上,进行单片机与 PC机(个人电脑)的通信试验 1PC 机发送一个字符给单片机,单片机收到后即在发光管D1 ~D8上进行显示,同时将其回发给PC机。为便于初学者实验成功,单片机的发送接收均采用查询方式。
  在我的文档中新建一个ac25 的文件夹。建立一个 ac25.prj的工程项目,最后建立源程序文件ac25.c。输入下面的程序:
  #include <iom16v.h>/*包含头文件*/

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:61,230.47000 毫秒