微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Atmega128串口详解

Atmega128串口详解

时间:11-23 来源:互联网 点击:

********************包含头文件********************************/
#include
#include

/***********************************宏定义**********************************/
#define fosc 8000000 //晶振8MHZ
#define baud 2400//波特率

/****************************************************************************
函数功能:uart0初始化程序
入口参数:
出口参数:
****************************************************************************/
void uart0_init(void)
{
UCSR0B = 0x00; //关闭UART00
UCSR0A = 0x00; //不使用倍速发送(异步)
UCSR0C =(1UBRR0L=(fosc/16/(baud+1))%256; //异步正常情况下的计算公式
UBRR0H=(fosc/16/(baud+1))/256;
UCSR0B =(1}

/****************************************************************************
函数功能:uart0发送单字节数据
入口参数:c
出口参数:
****************************************************************************/
void putchar0(unsigned char c)
{
while (!(UCSR0A&(1UDR0=c; //将要发送的数据装入UDR0寄存器
}

/****************************************************************************
函数功能:uart0接收单字节数据
入口参数:
出口参数:
****************************************************************************/
unsigned char getchar0(void)
{
while(!(UCSR0A& (1return UDR0;
}

/****************************************************************************
函数功能:uart0发送字符串数据
入口参数:*s
出口参数:
****************************************************************************/
void puts0(char *s)
{
while (*s)
{
putchar0(*s);
s++;
}
putchar0(0x0a);//回车换行
//putchar0(0x0d);
}

/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
unsigned char i;

uart0_init();//UART0初始化
puts0("HELLO!");

while(1)
{
puts0("test ok!");
}
}


串口通信(USART1)

/***************************************************************************/
/*串口1测试程序 */
/*目标器件:ATmega128 */
/*晶振:RC 8MHZ */
/*选用的波特率:9600(也可以另外设定),改了波特率后需要将电源拔了再插上方可使用*/
/*编译环境:ICCAVR 7.13 */
/*E-Mail:number007cool@163.com */
/*时间:2010年1月14日 */
/***************************************************************************/

/*********************************包含头文件********************************/
#include
#include

/***********************************宏定义**********************************/
#define fosc 8000000 //晶振8MHZ
#define baud 9600//波特率

/****************************************************************************
函数功能:uart1初始化程序
入口参数:
出口参数:
****************************************************************************/
void uart1_init(void) //USART1初始化
{
UCSR1B = 0x00; //关闭USART1
UCSR1A = 0x00; //不适使用倍速发送
UCSR1C = (1UBRR1L=(fosc/16/(baud+1))%256;//异步正常模式下,UBRR的计算公式
UBRR1H=(fosc/16/(baud+1))/256;
UCSR1B =(1}

/****************************************************************************
函数功能:uart1发送单字节数据
入口参数:c
出口参数:
****************************************************************************/
void putchar1(unsigned char c)//串口1发送字符
{
while (!(UCSR1A&(1UDR1=c;
}

/****************************************************************************
函数功能:uart1接收单字节数据
入口参数:
出口参数:
****************************************************************************/
unsigned char getchar1(void) //串口1接回收数据
{
while(!(UCSR1A& (1return UDR1; //将接收到的字符返回
}

/****************************************************************************
函数功能:uart1发送字符串数据
入口参数:*s
出口参数:
****************************************************************************/
void puts1(char *s)
{
while (*s)
{
putchar1(*s);
s++;
}
putchar1(0x0a);//回车换行
putchar1(0x0d);
}

/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
unsigned char i;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top