shuipaopao 发表于 2012-9-4 19:21:52

AVR单片机串口通信时TXD,RXD端口方向设置的疑惑,请高手.....

Atmega16初始化程序中
void uart0_init(uint baud)
{
    UCSRB = 0x00; //disable while setting baud rate
    UCSRA = 0x00;   //控制寄存器清零
    UCSRC=(1<<URSEL)|(1<<USBS)|(0<<UPM0)|(3<<UCSZ0);   //选择UCSRC,异步模式,禁止                     
                                          //   校验,2位停止位,8位数据位
    baud=mclk/16/baud-1 ;   //波特率最大为65K
    UBRRL=baud;            
    UBRRH=baud>>8;      //设置波特率
   
    UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);   //接收、发送使能,接收中断使能
    SREG=BIT(7);               //全局中断开放
    DDRD|=0X02;               //配置TX为输出(很重要)}
划红线处设为输出,而数据手册中已规定:当使能了USART的发送器后,这个引脚被强制设置为输出,DDD1不能作用。划红线处是否多余了????,如果多余为什么还强调很重要??

god-father 发表于 2012-9-4 19:47:43

作为串口使用时,相应IO自动被配置为输入或输出,所以,不用对DDR设置。
但是,如果你设置方向的话,经过实际使用,也没有问题。
实际使用时,建议你不要设置DDR。

shuipaopao 发表于 2012-9-5 08:00:24

god-father 发表于 2012-9-4 19:47 static/image/common/back.gif
作为串口使用时,相应IO自动被配置为输入或输出,所以,不用对DDR设置。
但是,如果你设置方向的话,经过实 ...

实际应用的时候我没设置,只是最近看书的时候发现有设置的,而且还标注为很重要,因此有点疑惑。书上说设置TXD为输出,RXD为输入,并上拉电阻可增加抗干扰性。

god-father 发表于 2012-9-5 09:33:39

shuipaopao 发表于 2012-9-5 08:00 static/image/common/back.gif
实际应用的时候我没设置,只是最近看书的时候发现有设置的,而且还标注为很重要,因此有点疑惑。书上说设 ...

既然是自动了,那书上的说明就是子虚乌有了。
我的串口一直是这样处理,没有任何问题。

lu976046395 发表于 2013-7-14 11:21:56

shuipaopao 发表于 2012-9-5 08:00 static/image/common/back.gif
实际应用的时候我没设置,只是最近看书的时候发现有设置的,而且还标注为很重要,因此有点疑惑。书上说设 ...

并上拉电阻可增加抗干扰性,请问是如何增强其抗干扰性的?
页: [1]
查看完整版本: AVR单片机串口通信时TXD,RXD端口方向设置的疑惑,请高手.....