×
单片机 > 单片机程序设计 > 详情

ATmage16A UART实验往PC收发数据

发布时间:2020-08-26 发布时间:
|

* 【编译环境】: ICCAVR  

* 【函数功能】: 用软件查询方式实现用串口调试软件发数据给avr,而avr则将数据回传给pc.

* 【晶    振】:  8M                

* 【芯    片】:  ATMEGA16A         


*******************************************************/


#include

#include


/***********宏定义*************/

#define  uchar unsigned char 

#define  uint unsigned int

#define fosc 8000000

#define baud 9600

/*******************************************

函数名称: IO口初始化函数

功    能: 实现IO初始化

参    数: 无

返 回 值: 无

/********************************************/

void port_init(void)

{

  DDRD = 0x02;

  PORTD = 0xFF;


}


/***********************************************************************

函数名称: 串口初始化函数

功    能: 实现串口初始化

参    数: 无

返 回 值: 无

/*********************************************************************/

void USART_Init(void)

{

UCSRB=(1<

UBRRL=(fosc/16/(baud+1))%256;//设置波特率寄存器

UBRRH=(fosc/16/(baud+1))/256;

UCSRC=(1<

}


/*******************************************

函数名称: 串口发送一个字节函数

功    能: 实现串口发送一个字节

参    数: data--串口要发送的一个字节

返 回 值: 无

/********************************************/

void USART_Transmit(uchar data) //发送采用查询方式

{

  while(!(UCSRA&(1<

UDR=data;                       //发送数据


}


/*******************************************

函数名称: 串口发送数组函数

功    能: 实现串口发送一个数组

参    数: *ptr--串口要发送的数组的首地址

返 回 值: 无

/********************************************/

void USART_Transmit_string(uchar *ptr)

{

while (*ptr)

  {

    USART_Transmit(*ptr++);

  }

USART_Transmit(0x0D);

USART_Transmit(0x0A);  //结尾发送回车换行

}


/*数据接收,查询方式*/

/*******************************************

函数名称: 串口接收一个字节函数

功    能: 实现串口接收一个字节

参    数: 无

返 回 值: 无

/********************************************/

uchar USART_Receive(void) //接收采用查询方式

{

  while(!(UCSRA&(1<

  return UDR;                                      //获取并返回数据

}



/********************************************

函数名称: 主函数

功    能: 实现函数主体功能。

参    数: 无

返 回 值: 无

********************************************/

void main(void)

{

  uchar temp;

  USART_Init();


  while(1)

    {

          temp=USART_Receive();                //等待接收数据

          PORTB = ~temp;                        //显示低电平有效

          USART_Transmit(temp);                //发送收到的数据

        }

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
TQ210天嵌开发板S5PV210 LED闪烁程序C语言代码记录