[AVR单片机] AT mega8 串行通信显示80

[复制链接]
1150|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

评论

你试验下UBRR=103;  发表于 2015-12-6 11:20
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

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