打印
[AVR单片机]

串口程序,为什么发送00总是显示80呀?求指导

[复制链接]
2813|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oid usrt_port_init(void)
{
  DDRD|=(1<<PD1);
  PORTD|=(1<<PD0);
}

void usrt_init(void)                     //串口初始化函数
{
usrt_port_init();
//UCSRB=0X00;
UCSRA|=(1<<U2X);                           //两倍速
UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);  //选择UCSRC寄存器 字符长度8 无奇偶模式 1位停止位
UBRR=143  ;                                //12M晶振9600波特率
UCSRB|=(1<<RXEN)|(1<<TXEN)  ;               //发送接收使能

}

void usrt_putchar(uchar date)              //串口向PC发送单个字符函数
{
  while(!(UCSRA&(1<<UDRE)));
  UDR=date;
}

void usrt_putstring(uchar *s)               //串口向PC发送字符串
{
  while(*s)
  {
    usrt_putchar(*s);
        s++;
   }
   usrt_putchar(0x0a);
   usrt_putchar(0x0d);
}

uchar usrt_getchar(void)             //PC向串口发送字符
{
  while(!(UCSRA&(1<<RXC)));
   return UDR;

}

相关帖子

沙发
wh13651|  楼主 | 2015-4-3 15:26 | 只看该作者
另外为什么发送字符也是显示十六进制码?

使用特权

评论回复
板凳
huangxz| | 2015-4-3 15:29 | 只看该作者
本帖最后由 huangxz 于 2015-4-3 15:32 编辑

波特率设置不对吧.



使用特权

评论回复
地板
wh13651|  楼主 | 2015-4-3 15:58 | 只看该作者
huangxz 发表于 2015-4-3 15:29
波特率设置不对吧.

芯片资料上就是这样啊

121321432423432423423432.png (55.47 KB )

121321432423432423423432.png

使用特权

评论回复
5
wh13651|  楼主 | 2015-4-3 16:13 | 只看该作者
huangxz 发表于 2015-4-3 15:29
波特率设置不对吧.

解决了,就是你说的这个原因,前面这个公式不太懂,能给解释一下吗?

使用特权

评论回复
6
chao1717| | 2015-4-3 17:28 | 只看该作者
你是用的串口调试助手吗

使用特权

评论回复
7
huangxz| | 2015-4-3 23:06 | 只看该作者
wh13651 发表于 2015-4-3 16:13
解决了,就是你说的这个原因,前面这个公式不太懂,能给解释一下吗?

数据手册上面有的,写的很清楚的。

使用特权

评论回复
8
wh13651|  楼主 | 2015-4-8 10:04 | 只看该作者
chao1717 发表于 2015-4-3 17:28
你是用的串口调试助手吗

是的

使用特权

评论回复
9
wh13651|  楼主 | 2015-4-8 10:05 | 只看该作者
huangxz 发表于 2015-4-3 23:06
数据手册上面有的,写的很清楚的。

恩,谢谢了

使用特权

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

本版积分规则

11

主题

34

帖子

1

粉丝