当前位置:首页 > 单片机 > 单片机
[导读]USART数据寄存器UDR:当对此寄存器进行读的时候,实际就是接收数据缓冲寄存器(RXB)。当对此寄存器进行写的时候,实际就是发送数据缓冲寄存器(TXB)。USART控制和状态寄存器A:UCSRA(RXC,TXC,UDRE,FE,DOR,PE,U2X,M

USART数据寄存器UDR:

当对此寄存器进行读的时候,实际就是接收数据缓冲寄存器(RXB)。

当对此寄存器进行写的时候,实际就是发送数据缓冲寄存器(TXB)。

USART控制和状态寄存器A:UCSRA(RXC,TXC,UDRE,FE,DOR,PE,U2X,MPCM)

RXC:USART接受结束。接受缓冲器中仍然有未读出的数据时,RXC置位。如果没有任何需要读的数据时,RXC清零。当接收器禁止时,接收缓冲器刷新,导致RXC清零,RXC标志也可以用来产生接收结束中断。

TXC:USART发送结束。发送移位寄存器中的数据被送出,且当发送缓冲器(UDR/TXB)为空时,TXC置位。执行发送结束中断时TXC标志自动清零。

UDRE:USART数据寄存器空。当UDRE为“1”时,说明缓冲器为空,已准备好进行数据接受。

FE:帧错误。如果接收缓冲器接收到下一个字符有帧错误,即下一个字符的第一个停止位为“0”,那么FE置位。当对USART数据寄存器UDR进行写入时,这一位必须写“0”;

DOR:数据溢出。当接收缓冲器满(包含了两个数据),接收移位寄存器又有数据时,若检测到一个新的起始位,数据溢出就产生了。DOR就置为“1”。当对USART进行写时,DOR要写为“0”。

PE:奇偶校验错误。当奇偶校验使能(UPM = 1),且接收缓冲中所接收的下一个字符有奇偶校验错误,PE置位。对USART进行写时,这一位写为“0”;

U2X:倍速发送。仅仅对异步操作有影响。使用同步操作时把这一位写“0”;

MPCM:设置此位将启动多处理器通信模式。即,USART不再接收那些不包含地址信息的输入帧,发送时USART不受MPCM的影响。

USART控制和状态寄存器B:

UCSRB(RXCIE,TXCIE,UDRIE,RXEN,TXEN,UCSZ2,RXB8,TXB8)

RXCIE:接收结束中断使能。TXCIE:发送结束中断使能;

UDRIE:USART数据寄存器空中断使能;

RXEN:接收使能。置位后将启动USART接收器RxD引脚的通用端口功能被USART功能所取代。

TXEN:发送使能。置位后将启动USART发送器TxD引脚的通用端口功能被USART功能所取代。当该位清零后,并所有数据发送完成后,发送器才能真正禁止。I/O恢复通用功能。

UCSZ2:与UCSZ1, UCSZ0,结合在一起确定字符长度。

UCSZ2

UCSZ1

UCSZ0

字符长度

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位

RXB8:对9位串行帧进行操作时,RXB8就是第9个数据位。读取UDR包含的低位数据之前首先要读取RXB8。如果小于9位,则忽略RXB8

TXB8:对9位串行帧进行操作时,TXB8就是第9个数据位。写UDR包含的低位数据之前首先要写TXB8。如果小于9位,则忽略TXB8

USART控制和状态寄存器C:

UCSRC(URSEL,UMSEL,UPM1,UPM0,USBS,UCSZ1,UCSZ0,UCPOL)

URSEL:寄存器选择。通过该位选择访问UCSRC或者UBRRH,当读写UCSRC时,置位。当读写UBRRH时,弄为“0”

UMSEL:USART模式选择,通过这一位来选择同步或者异步工作模式,异步模式时为“0”,同步模式时为“1”。

UPM1:0奇偶校验模式。如果校验的结果不匹配(有错误)那么就将UCSRA中PE置位。

UPM1

UPM0

奇偶模式

0

0

禁止

0

1

保留

1

0

偶校验

1

1

奇校验

USBS:停止位选择。当为“0”时,一位停止位,当为“1”时,两位停止位。通过这一位可以设置停止位的位数,接收器忽略此位设置。

UCSZ1:0 字符长度。

UCPOL:时钟极性这一位仅仅用于同步工作模式,异步工作模式时清零。

UCPOL

TxD引脚的输出

RxD引脚的输入

0

XCK上升沿

XCK下降沿

1

XCK下降沿

XCK上升沿

USART波特率寄存器

UBRRH(URSEL,-,-,-,UBRR[11:8])和UBRRL(UBRR[7:0])

URSEL:寄存器选择,

UBRRH包含了USART波特率高4位,UBRRL包含了低8位。

传输线路RxD或TxD没有数据传输,线路空闲时必须保持高电平。


时钟工作模式

波特率计算公式

寄存器UBRR值计算公式

普通异步模式

UBRR=

UBRR=

倍速异步模式

BAUD=

UBRR=

主机同步模式

BAUD=

UBRR=


#include

//函数声明

voiddelay(unsignedinttime);

voidUSART_Init();

voidUSART_Transmit(unsignedchardata);

//主函数

voidmain()

{

unsignedchari=0;

unsignedcharj=0;

//初始化E端口

PORTE=0x03;

DDRE=0x02;

//初始化C端口

DDRC=0xff;//全为输出方式

PORTC=0x0f;//灯全亮

USART_Init();

while(1)

{

USART_Transmit(48+i);

j++;

PORTCPORTC=PORTC<<1;

if(j>=4){j=0;PORTC=0x0f;}

delay(10000);

if(++i>=10){i=0;}

}

}

//延时函数

voiddelay(unsignedinttime)

{

unsignedintj;

for(;time>0;time--)

{

for(j=100;j>0;j--);

}

}

//初始化串口

voidUSART_Init()

{

//波特率设置

UBRR1H=0x00;

UBRR1L=0x2f;

UCSR1A=UCSR0A&0x02;

//UCSR0B=(1<

//UCSR0C=(3<

//数据发送设置

UCSR1B=0x18;

UCSR1C=0x06;

}

//数据传输

voidUSART_Transmit(unsignedchardata)

{

//while(!(UCSR0A&(1<

while(!(UCSR1A)&0x20);

UDR1=data;

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

  UART   UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,

关键字: uart usart

void InitUart(void) { GPIO_InitTypeDef GPIO_InitStructure; #if 1// (USART_USED == USART1) RCC_AHBPeriph...

关键字: stm32f30x usart 串口 初始化顺序

五、ATMEGA16的USART与PC机串行通信五—(02)、PC机发送字符给单片机,然后用液晶显示发送的字符~~~这章节也是相对挺简单的~~直接上图片吧~~基本上就这么点吧~~然后就是程序了,这里我只是粘贴一下重要的程...

关键字: atmega16 avr单片机 usart 串行通信

终于,我忍不住想吐槽一下翻译STM 32函数库手册的同学了,中间省略了好多东西而且是很重要的东西。。。。。。我的内心几乎是奔溃的!!!现在就来仔细说说关于STM 32 函数库3.5 中关于USART串口通信的坑:在一些教...

关键字: STM32 usart

五、ATMEGA16的USART与PC机串行通信五—(03)、PC机发送控制指令控制单片机工作~(这个控制还是比较简单的~~,不过个人认为还是有水平的~)还是先上图片~~,然后程序,程序师模块化的,我尽量贴全点~~然后就...

关键字: atmega16 avr单片机 usart 串行通信

一、简单demo通过232串口,与上位机进行通信。首先保证单片机232串口与电脑的串口接口相连,当然电脑是USB接口,其实USB接口的实质也是串口。我们实现上位机发送一个16进制的数据,单片机接受到数据后显示,并且2倍发

关键字: STM32 usart 串口通信

#include "stm32f10x_lib.h"#include"stdio.h"#define USART1_DR_Base0x40013804#define SENDBUF...

关键字: STM32 usart

Xmega128的串口非常强大,最多能支持8个串口。串口又有四种模式:1、异步2、同步3、IRDA红外模式4、SPI主模式今天我们就使用CVAVR代码向导生成简单串口测试程序,实现每1s打印“HELLO WORLD”字符...

关键字: usart xmega128 串口

//------------------------------------------------------------------------------//ATMEGA16与PC机的通信实验1//PC机发送一个字...

关键字: atmega16 avr单片机 usart 串行通信

前言串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息)。STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等。今天主要总结串口简单且常用

关键字: stm32f0xx usart 收发配置
关闭