usart.c

来自「这是一个基于AVR系列单片机的程序」· C语言 代码 · 共 64 行

C
64
字号
//串口发送与接收的例程

#include <avr/io.h>

#define 	BAUD 			9600 

//------------------------------------------------------------------------------
//名称:void SendByte(unsigned char SendByte)
//功能:通过串口发送一个字节
//------------------------------------------------------------------------------
void SendByte(unsigned char SendByte)
{
	while (!(UCSRA & (1 << UDRE)))
		;
	UDR = SendByte;
}

//------------------------------------------------------------------------------
//名称:unsigned char ReceiveByte(void)
//功能:通过串口接收一个字节
//------------------------------------------------------------------------------
unsigned char ReceiveByte(void)
{
	while (!(UCSRA & (1<<RXC)))
		;
	return UDR;
}

//------------------------------------------------------------------------------
//名称:void UsartInit(void)
//功能:初始化串口
//------------------------------------------------------------------------------
void UsartInit(void)
{	
	UBRRH = (F_CPU / 16 /BAUD - 1) / 256;
	UBRRL = F_CPU / 16 /BAUD - 1;
	//根据给出的的波特率、时钟频率计算UBRH、UBRL的值	
	UCSRB = (1 << RXEN) | (1 << TXEN);
	//允许发送接收
	UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);	
	//一个停止位,8位数据,无校验      
}

//******************************************************************************
//主程序
//******************************************************************************

int main(void)
{
	UsartInit();	
	SendByte(0x5a);	
	
	for (; ;)
	{
		if (ReceiveByte() == 0xcd)
		{
			SendByte(0x12);
			SendByte(0x34);
			SendByte(0x56);
		}
	}
}

⌨️ 快捷键说明

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