打印
[AVR单片机]

AT mega8 串行通信显示80

[复制链接]
1035|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cidongshi|  楼主 | 2015-12-5 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Usart0_Init(void)
{
       
        UCSRB = 0x00;
        UCSRA = 0x00;
        UCSRC = 0x86;        //UCSRC = (1 << UCSZ1) | (1 << UCSZ0)|(1 << URSEL);  异步,数据格式8,N,1
        UBRRH = 0x00;        //UBRRH= (F_CPU / Baud / 16 - 1) / 256;
        UBRRL = 0x33;        //UBRRL= (F_CPU / Baud / 16 - 1) % 256;       
        UCSRB = 0x98;        //UCSRB =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN)//发送使能
}
void PutChar(uchar c)
{
        while(!(UCSRA&(1<<UDRE)));                //等待缓冲器为空,UDRE为1时
        UDR = c;                                                //将要发送的数据装入UDR寄存器
}
main

        DDRD|=0x02;                                                                //TX
        PORTD|=0x10;                                                        //上拉电阻有效
        Usart0_Init();
        sei();                                                                        //开总中断
        PutChar('A');
      

相关帖子

沙发
cidongshi|  楼主 | 2015-12-5 20:33 | 只看该作者
本帖最后由 cidongshi 于 2015-12-5 20:36 编辑

用proteus 仿真, 总是显示 80 00,有上位机接收不显示字符, F_CPU=8M,baud=9600

使用特权

评论回复
评论
SD10A 2015-12-6 11:20 回复TA
你试验下UBRR=103; 
板凳
SD10A| | 2015-12-6 11:17 | 只看该作者
RXCIE多余
PORTD|=0x10;          //上拉电阻有效  干什么用的?
  PutChar('A');  在死循环中通过按键按一下  发送

使用特权

评论回复
地板
cidongshi|  楼主 | 2016-1-10 19:31 | 只看该作者
SD10A 发表于 2015-12-6 11:17
RXCIE多余
PORTD|=0x10;          //上拉电阻有效  干什么用的?
  PutChar('A');  在死循环中通过按键按一 ...

搞好了,谢谢,

使用特权

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

本版积分规则

2

主题

15

帖子

2

粉丝