打印

AVR16 串口通信问题

[复制链接]
488|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
132LJX123|  楼主 | 2017-4-6 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iom16v.h>
#include <macros.h>
#include "AVR.h"
#define uint unsigned int
#define uchar unsigned char
#define fos 8000000  //晶振
#define baud 9600 //波特率
/*************I/O口初始化************/
void port_init(void)
{
DDRB=0xff;
PORTB=0xff; //PB口设置为输出高电平 DDRD&=~(1<<PD0); //PD0设置为输入
DDRD|=(1<<PD1); //PD1设置为输出 PORTD&=~((1<<PD0)|(1<<PD1)); }
/*************串行异步通信初始化************/void usart_init(void)
{
CLI(); //关闭全局中断
UCSRA=0x00;
UCSRB=0x00;
UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //异步通信、一位停止位、八位数据位
UBRRH=((fos/16/baud)-1)%256; //取高八位
UBRRL=((fos/16/baud)-1)/256; //取低八位
UCSRB|=(1<<TXEN)|(1<<RXEN); //发送、接收使能
}
/*************发送函数************/
void usart_transmit(uchar data)
{
while( !(UCSRA&(1<<UDRE)) ); //等待数据寄存器空,这样才可以发送数据
UDR=data;
}
/*************接收函数************/
uchar usart_receive(void)
{
while( !(UCSRA&(1<<RXC)) ); //等待接收完成
return UDR;
}
void main(void)
{
uchar data;port_init();
usart_init();
while(1)
{
data=usart_receive();
PORTB=~data;
usart_transmit(data);
}
}
在串口调试助手上发送11等数字等上面接收显示的都是00,然后发送ff等六进制字母就没显示什么了,求解答

相关帖子

沙发
NE5532| | 2017-4-7 11:21 | 只看该作者
串口调试,先调TX,再调RX,专业课里串口的课程里有讲调试方法,供参考。

串口-我学习的第一个通讯接口
http://open.21ic.com/Video/index/id/6256

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝