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

📄 1uart.c

📁 基于AVR平台的C语言开发
💻 C
字号:
//1UART.c : source file for the 1 UART
//

#include "1.h"
#include "1UART.h"
#include <delay.h>
#include <math.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint  unsigned int
#define BUFF_SIZE 32

/////////////////////////////////////////////////////////////////////////////
//1UART
extern uchar input;
extern uchar output;
void uart_init(void)
{
	//{{WIZARD_MAP(UART)
	// Baud Rate: 19200
	// Character Size: 8-bit
	// Mode: Asynchronous
	// Parity: Disabled
	// Stop Bit: 1-bit
	UBRRL = 0x19;  //00011001
	UBRRH = 0x00;  //波特率19200
	UCSRA = 0x00;
	UCSRC = 0x86;  //控制和状态寄存器10000110;bit7选择,bit2,1数据位8位,bit0上升沿输出,下降沿输入
	UCSRB = 0x48;  //01001000,bit6发送结束中断使能;bit3发送使能,TXD脚发送数据
	//}}WIZARD_MAP(UART)
}

void send_char(unsigned char a)
{
		UDR=a;		
		delay(1,8000);
}

SIGNAL(SIG_UART_TRANS)  //USART发送完一个字节中断
{
	if(test_send())
	{
		UDR=get_send();	
	}
}

void put_send(uchar a)
{
	send_buff[input]=a;
	if(input<BUFF_SIZE-1)
		input++;
	else
		input=0;
}

uchar test_send(void)
{
	if(output==input)
		return 0;
	else
		return 1;
}

uchar get_send(void)
{
	uchar temp;
	if(output==input)
		return 0;
	else
	{
		temp=send_buff[output];
		if(output<BUFF_SIZE-1)
			output++;
		else 
			output=0;
		return temp;
	}
}

⌨️ 快捷键说明

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