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

📄 main.c

📁 ATmaga128 串口通信程序 (可实现收发数据和字符串)
💻 C
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "type.h"

//#define F_CPU 11059200
#define BAUD 9600
/* ---------------------------------- */
//函数名称: void init_usart(void)
//功    能: 串口0初始化函数
//参    数: 无
//返回值  : 无
/*------------------------------------*/
void init_usart(void)
{	

	UBRR0H = (F_CPU /BAUD/16-1)/256;
	UBRR0L = (F_CPU /BAUD/16-1)%256;
//	UCSR0A |= (1 << RXC0);
	UCSR0B |= (1 << RXEN0 )|(1 << TXEN0)|(1 << RXCIE0);
	UCSR0C |= (1 << UCSZ01 )|(1 <<UCSZ00);//设置UCSZ0,8位字符长度
	
}
/* ---------------------------------- */
//函数名称: void send_char(uchar *data)
//功    能: 串口0发送字符串函数
//参    数: *data
//返回值  : 无
/*------------------------------------*/
void send_char(uchar *data)
{
	while(*data)
	{		
		while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
		{
		} 
		UDR0 = *data; 
		data ++;
	}
}
/* ---------------------------------- */
//函数名称: void send_char_hex(uchar hex)
//功    能: 串口0发送十六进制数字函数
//参    数: hex
//返回值  : 无
/*------------------------------------*/
void send_char_hex(uchar hex)
{
	while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
	{
	} 
	UDR0 = hex; 		
}
/* ---------------------------------- */
//函数名称: void receive_char_hex(void)
//功    能: 串口0接收十六进制数字函数
//参    数: 无
//返回值  : recv_data
/*------------------------------------*/
uchar receive_char_hex(void)
 {  
	while(!(UCSR0A&(1<<RXC0)))//等待接收标志位置位
	{
	}
	return UDR0;
 }
/*
volatile uchar recv_data;
SIGNAL(SIG_UART_RECV)
{
	recv_data = UDR0;
}
*/
//------------------------------------
//------------------------------------
int main(void)
{
	uchar i;
	LED_INIT();
	
	cli();       //关全局中断
	init_usart();//USART初始化
	sei();		 //开全局中断
    
//	send_char("MY USART IS OK!");
//	send_char_hex(0xff);
	i = receive_char_hex();
	send_char_hex(i);

	while(1)
	{
		LED_SET(0x0a);//发送结束指示
	}
	return 0;
}

⌨️ 快捷键说明

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