⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 lcd1602液晶的avr测试实例程序
💻 C
字号:
#include <avr/io.h>


#include "Uart.h"
/*
1.USART数据寄存器-UDR
	7	6	5	4	3	2	1	0 ??
2.USART控制和状态寄存器A - UCSRA
	7	RXC		USART接收完成
	6	TXC		USART发送完成
	5	UDRE	USART数据寄存器空
	4	FE		接收帧出错
	3	DOR		接收数据溢出出错
	2	PE		校验错误
	1	U2X		USART传输速率倍数 分频由16将为8而加速
	0	MPCM	多机通信模式允许
3.USART控制和状态寄存器B - UCSRB
	7	RXCIE	RX接收完成中断允许
	6	TXCIE	TX发送完成中断允许
	5	UDRIE	USART数据寄存器中断允许
	4	RXEN	数据接收允许
	3	TXEN	数据发送允许
	2	UCSZ2	数据位数大小,同UCSRC寄存器中UCSZ1:0一起使用,设置数据位的个数(5,6,7,8,9)位
	1	RXB8	接收数据的第8位
	0	TXB8	发送数据的第8位
4.USART控制和状态寄存器C - UCSRC
	7	URSEL	寄存器选择.读取UCSRC 读= 1;写入UCSRC 写1
	6	UMSEL	USART工作模式选择.=0 异步模式;=1 同步模式
	5	UPM1	5.4-UPM1.0 校验方式	
	4	UPM0	0 0 - 无; 0 1 - 保留;1 0 - 偶校验;1 1 - 奇校验
	3	USBS	停止位选择. =0 1个停止位; =1 2位停止位
	2	UCSZ1	UCSZ1.0 传送、接收字符长度
	1	UCSZ0
	0	UCPOL	时钟极性,只能在同步模式下使用,设定串行输出数据变化和数据输入采样与
				同步时钟XCK之间的关系。
	
5.波特率寄存器 - UBRRL 和 UBRRH
	15  ---11,10,9,8;  7.....0
	URSEL		12位
	URSEL 读UBRRH寄存器,读=0;写UBRRH寄存器,写0;
6.一些波特率UBBR的取值
	BBP   	20M 	16M		8M		4M		2M		1M
	4800	259		207		103		51		25		12		
	9600	129		103		51		25		12		6
	14.4K	86		68		34		16		8		3	
*/
//初始化
void Uart_Init(unsigned int ucBaudRate) //9600 :25/4m 38/6m
{
 // 晶振频率 : 4.0MHz
    // 通信参数: 8 Data, 1 Stop, No Parity 
    // 波特率:
    // UBRRL= 0x0C    19200;
    // UBRRL= 0x19    9600;
    // UBRRL= 0x33    4800;
    // UBRRL= 0x67    2400	
    UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);  //允许发送和接收,接收中断使能
    UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位数据位+1位停止位
    UBRRH = (unsigned char)(ucBaudRate >> 8); 
    UBRRL = (unsigned char)(ucBaudRate & 0x7f);		
	
	fdevopen(Uart_PutChar,Uart_GetChar,0);
}
//输出一个字符
int Uart_PutChar(char c)
{
	if(c=='\n')
		Uart_PutChar('\r');
	loop_until_bit_is_set(UCSRA,UDRE);
	UDR = c;	
	return 0;
}
//输入一个字符
int  Uart_GetChar(void)
{
	loop_until_bit_is_set(UCSRA,RXC);
	return UDR;
}
//输出一个字符串
void Uart_PutStr(unsigned char* szStr)
{
	while(*szStr != '\0')
	{
		Uart_PutChar(*szStr);
		szStr++;
	}	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -