Atmega128 串口详解
Atmega128 有两个串口:USART0 与 USART1
以 USART0 为例
串口的初始化包括:
传输模式的选择:同步还是异步,默认为异步模式,可通过选择 USART 控制和状
态寄存器 UCSR0C 中的 UMSEL 位来选择,UMSEL 为 0,是异步模式.
波特率的设置:通信的双方都必须有相同的波特率,波特率可以通过设置波特率
发生寄存器 UBRR0 来确定,UBRR0 为两字节 16 位的寄存器,可分为 UBRR0H
和 UBRR0L.同时起作用的还有 UCSR0A 中的波特率加倍位 UX2,当 UX2 为 1
时设置的波特率加倍.
传输帧格式的设置:默认是 8 位数据位,一位停止位
发送接受的使能与中断:通过设置 UCSR0B 来根据需要选择接收或发送的使能
和是否使用中断,对使用中断的 USART 操作,初始化前要关闭中断
USART0 的控制和状态寄存器有:UCSR0A,UCSR0B,UCSR0C,波特率寄存器
有 UBRR0,即 UBRR0H 和 UBRR0L,数据寄存器为 UDR0
1、初始化:
设置波特率前,要关闭 USART0 的所有使用,包括使能和中断:
UCSR0B=0B00000000; //关闭 USART0
2、设置 UCSR0A:
UCSR0A 能写的有 Bit0,Bit1,Bit6,其他 5 位为状态位.我们一般使用的有 Bit1-
U2X0,当这一位为 1 时,波特率的分频因子从 16 降到 8,能够有效的将异步通信
模式的传输速率加倍,但是这一位仅对异步操作有影响,使用同步操作时应将此
位清零.
UCSR0A=0B00000000; //不使用倍速发送
3、设置 UCSR0C:
Bit6-UMSEL0:USART0 的模式选择,0 为异步模式,1 为同步模式
Bit5:4-UPM01:0:奇偶校验模式,00 禁止,01,保留,10 偶校验,11,奇校验
Bit3-USBS0:停止位的选择,0 停止位为 1bit,1 停止位为 2-bits
Bit2:1-UCSZ01:0:字符长度,
当
UCSZ02
为
0
时
,00 表示 5 位,01 表示 6
位,10 表示 7 位,11 表示 8 位.
当
UCSZ02
为
1
时
,11 表示 9 位.(UCSZ02
为 UCSR0B 里的一位寄存器)
eg:
UCSR0C=0B00000110 //异步模式,禁止奇偶校验,停止位为 1 位,数据位为 8
位
4、设置 UBRR:
UBRR 的设置和这些参数有关:U2X0,CPU 频率,波特率
当 U2X0 为 0 时,即异步正常模式下,UBRR 的计算公式: