📄 main.c
字号:
#include "mega128.h"
#include "delay.h"
#include "uart.h"
#define RXEN0 4
#define TXEN0 3
#define UCSZ01 2
#define UCSZ00 1
#define UCPOL0 0
////#ifdef Fosc
#define Fosc 4000000
//#endif
/*********************************************************
*
*函 数 名:uart_init
*
*函数功能:初始化串口0
*
*输入参数:bps :待设定的波特率
*
*返 回 值:无
*
*********************************************************/
char uart_init(unsigned int bps,unsigned char stop,unsigned char len)
{
unsigned long int ubps;
ubps=Fosc/16.0/bps-1; //计算波特率
UBRR0L=ubps%256;
UBRR0H=ubps/256;
UCSR0A=0;
UCSR0B=0;
UCSR0C=0;
UCSR0B|=0x18; //发送接收使能
if(len>9||len<5) //设置数据位长度
{
return -1;
}
else if(len==9)
{
UCSR0B|=1<<2;
UCSR0C|=3<<1;
}
else
{
UCSR0B=~(1<<2);
UCSR0C|=(len-5)<<1;
}
if(stop>2||stop==0) //设置停止位
{
return -1;
}
else if(stop==2)
{
UCSR0C|=1<<3;
}
else
{
UCSR0C&=~(1<<3);
}
}
/*********************************************************
*
*函 数 名:uart_send_byte
*
*函数功能:通过串口发送一个数据
*
*输入参数:date : 待发送的数据
*
*返 回 值:无
*
*********************************************************/
void uart_send_byte(unsigned char date)
{
while(!(UCSR0A&0x20));
UDR0=date;
}
/*********************************************************
*
*函 数 名:uart_send_nbyte
*
*函数功能:通过串口发送多个数据
*
*输入参数:*buf : 指向待发送的数据指针
* len :要发送的字节数
*
*返 回 值:无
*
*********************************************************/
void uart_send_nbyte(unsigned char *buf,unsigned char len)
{
unsigned char i;
for(i=0;i<len;i++)
{
uart_send_byte(*buf++);
}
}
/*********************************************************
*
*函 数 名:uart_rev_byte
*
*函数功能:通过串口接收一个数据
*
*输入参数:无
*
*返 回 值:接收到的数据
*
*********************************************************/
char uart_rev_byte(void)
{
while(!(UCSR0A&0x80));
return UDR0;
}
/*********************************************************
*
*函 数 名:uart_rev_nbyte
*
*函数功能:通过串口接收多个数据
*
*输入参数:无
*
*返 回 值:接收到的数据
*
*********************************************************/
char uart_rev_nbyte(unsigned char *buf,unsigned char len)
{
unsigned char i;
char j;
for(i=0;i<len;i++)
{
j=uart_rev_byte();
if(j>=0)
{
*buf++=j;
}
else
{
return -1;
}
}
return 0;
}
void main(void)
{
unsigned char c,x[20];
uart_init(19200,1,8);
while(1)
{
uart_send_byte('x');
c=(unsigned char)uart_rev_byte();
uart_rev_nbyte(x,5);
uart_send_nbyte(x,5);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -