[AVR单片机] 串口通讯调试不出来,不知道问题出在那?

[复制链接]
812|1
 楼主| 紫℡憶星宸 发表于 2017-5-4 13:06 | 显示全部楼层 |阅读模式
#include<avr/io.h>
#include<avr/interrupt.h>

unsigned char uart_data = 0;//用于保存输入的数据

unsigned char uart_flag = 0;//用于作为串口输入的标志

unsigned char view[] = "welcome to aust";

//函数功能:串口数据,再发送到上位机
void uart0_init(void)
{
  UCSR0B = 0X00;//关所有中断和使能

  UCSR0A = 0X00;

  UBRR0H = 0;

  UBRR0L = 103;//16MHZ晶振,波特率9600

  UCSR0A = 0X00;//不使用倍速发送

  UCSR0C = 0X06;//异步操作,无奇偶校验,1位停止位,字符长度8位

  UCSR0B = 0X98;//接收结束中断使能,接收使能,发送使能

  sei();
}

//字节发送函数
void put_char(unsigned char send)
{
  while(!(UCSR0A&(1<<UDRE0)));
  UDR0 = send;
}

//字符串发送函数
void put_string(unsigned char *pBuff)
{
  while(*pBuff)
    put_char(*pBuff);

  put_char(0x0d);
  put_char(0x0a);//结尾发送回车换行
}

//接收中断函数
ISR(UART0_RX_vect)
{
  cli();
  uart_data = UDR0;
  uart_flag = 1;
  sei();
}

int main(void)
{
  PORTE = 0X00;
  
  DDRE |= 0X02;
  
  uart0_init();

  while(1)
  {
    if(uart_flag == 1)
        {
          put_string(view[0]);
      put_char(uart_data);
          uart_flag = 0;
        }
  }
}
NE5532 发表于 2017-5-4 13:50 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

23

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部