#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#include <avr/io.h>
#include<util/delay.h>
#include <avr/interrupt.h>
#define XTAL 8 //晶振频率,以MHz为单位
void avr_USART1_setup(void)
{
UCSR1B=0b00011000;
UCSR1C=0b00000110;
UBRR1H=0;
UBRR1L=207; //波特率寄存器,2400波特率,使用11.0592Mhz晶振
UCSR1A=0b00100000;
return;
}
void uart1_sendbyte(uchar us_data)
{
UCSR1A &= 0b10111111; //清发送标志位
UCSR1A |= 0b00100000; //提示MCU发送寄存器为空
UDR1=us_data; //写入发送数据
while ((UCSR1A & 0b01000000)==0x00); //等待发送完毕
return;
}
uchar uart1_recievebyte(void)
{
UCSR1A &= 0b01111111; //清接收标志位
UCSR1A |= 0b00100000; //提示MCU发送寄存器为空
while ((UCSR1A & 0b10000000) == 0x00); //等待接收数据
return UDR1;
}
int main(void)
{
uchar data;
avr_USART1_setup();
while(1)
{
data = uart1_recievebyte();
_delay_ms(1);
uart1_sendbyte(data);
_delay_ms(1);*/
}
}
UBRR1L=207; //波特率寄存器,2400波特率,使用11.0592Mhz晶振
_delay_ms(1);*/
上面这两句写错了,改为:
UBRR1L=207; //波特率寄存器,2400波特率,用的是内部的8M的晶振
_delay_ms(1);
其次,你要确实你的单片机与电脑的串口线连接正确,接收对发送,发送对接收,不能错
然后,电脑的波特率,校验位,停止位设置正确