📄 uart.c
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>
//#include <stdint.h>
//#include <stdlib.h>
#include <string.h>
//#include <stdio.h>
/*
ADC in Free Running mode
sum the eight times in each channel
I(Young 13shao) finished!
*/
#define uchar unsigned char
#define uint unsigned int
////////////////////////////////////////
/////////////////////////////////////////////////
void USART_Init(void )
{
/* 设置波特率*/
UBRR0H=0;
UBRR0L=47;//9600
/* 接收器与发送器使能 */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* 设置帧格式: 8 个数据位, 2个停止位 */
UCSR0C = (1<<USBS0)|(3<<UCSZ0);
}
void USART_Transmit_bit( unsigned char data )
{
/* 等待发送缓冲器为空 */
while ( !( UCSR0A & (1<<UDRE0)) );
/* 将数据放入缓冲器,发送数据 */
UDR0 = data;
}
void USART_Transmit_str (unsigned char *str)
{
while (1)
{
if (*str == '\0') break; // 遇到结束符,退出
USART_Transmit_bit(*str++); // 发送数据
}
}
unsigned char USART_Receive_bit( void )
{
/* 等待接收数据 */
while ( !(UCSR0A & (1<<RXC0)) );
/* 从缓冲器中获取并返回数据 */
return UDR0;
}
void USART_Receive_str (unsigned char *s, int n)
{
for ( ; n>0; n--)
{
*s++ = USART_Receive_bit();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -