打印
[AVR单片机]

AVR128波特率能设置为1200吗?

[复制链接]
2366|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
看见未来|  楼主 | 2012-6-12 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AVR, CSR, se, TE, ni
void uart1_init(void)
{
UCSR1B = 0x00; //disable while setting baud rate
UCSR1A = 0x00;
UCSR1C = 0x06;
UBRR1L = 0x3F; //set baud rate lo
UBRR1H = 0x02; //set baud rate hi
UCSR1B = 0x90;
}

这么设置,理论上应该可以,但是设置为1200的波特率后,TXD1发送不了数据。2400以上的波特率发送时正常的。难道AVR128a的波特率不能设置为1200?

相关帖子

沙发
zhl100| | 2012-6-14 08:44 | 只看该作者
这个当然可以,你用什么接收数据的,确定通信速率设置相同了? 你用示波器看看吧

使用特权

评论回复
板凳
看见未来|  楼主 | 2012-6-14 19:26 | 只看该作者
2# zhl100
嗨,弄错了。

使用特权

评论回复
地板
DCLmeng90| | 2014-7-16 15:13 | 只看该作者
你是怎么解决的?我也遇到这个问题,串口设置成9600时,收发正常,改为1200时,收发就乱码了。附上初始化部分程序
#define Crystal 11059200   //晶振11.0592MHZ
#define Baud 1200         //波特率
/*********************串口初始化**********************/
void usart1_init(void)
{
         unsigned char Temp;
         DDRD  |= 0x08;   //设置RXD1和TXD1
         UCSR1B = 0x00;                     //禁止发送和接收
         UCSR1A = 0x00;                     //异步模式USX0=0
        // UCSR1C = 0x06;                     //0000 0110,UCSZ01=1,UCSZ00=1;8位字符,1位停止位
         UCSR1C|=BIT(7)|BIT(1)|BIT(2)|BIT(5);        //选择USCRC,异步操作,偶检验危,1个停止位,八位数据
         
         
         Temp=(Crystal/Baud/16)-1;                        //求出波特率的赋值
         UBRR1H=Temp/256;                //波特率寄存器高八位赋值
         UBRR1L=Temp%256;                        //波特率寄存器低八位赋值
         
        // UCSR1B=0xD8 ;        //允许发送和接收,接收和发送结束中断使能
         UCSR1B|=BIT(4)|BIT(3)|BIT(7);
         SREG|=BIT(7);                //全局中断使能
}

使用特权

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

本版积分规则

个人签名:loser

17

主题

1073

帖子

1

粉丝