打印

关于SH79F168串口通信管脚设置的问题

[复制链接]
2292|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tjx727|  楼主 | 2010-1-6 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在实际操作中发现,TX管脚必须设置为输入发送出去的数据才会正确,但是按照平常的理解发送管脚应该是设置为输出,接受管脚设置为输入(目前实际操作中发现RX管脚设置为输入输出都可以,关于RX管脚没有认真测试)。
请问下关于这个RX和TX管脚到底应该怎么样设置,我这样设置是否正常?
沙发
juginhine| | 2010-1-7 10:22 | 只看该作者
uart通訊中,TX肯定是設定為輸出的,RX如果啟用的話,肯定是輸入的。這個沒有什么疑問來的。
通訊中,你需要設置好波特率,具體的你可以用示波器看一下。沒有什么其他的。

使用特权

评论回复
板凳
tjx727|  楼主 | 2010-1-7 13:33 | 只看该作者
2# juginhine
这么肯定?我也认为是这样啊,但是为什么实际情况不是这样呢,TX一设置为输出肯定传输的数据会出现乱码,但是我要是设置为输入后用到现在,一直正常!

使用特权

评论回复
地板
tjx727|  楼主 | 2010-1-7 14:02 | 只看该作者
帮主能不能的提示下小鸟啊?

使用特权

评论回复
5
warm_ice| | 2010-1-7 17:08 | 只看该作者
如果您仔细查看规格书的话,您会发现TXD只做输出使用,RXD可做输入输出使用.
如果方便,把程序弄上来看看

使用特权

评论回复
6
tjx727|  楼主 | 2010-1-8 15:40 | 只看该作者
/*************************************************/
/*********************串口部分********************/
void init_uart()
{
        P3CR &= 0xF9 ;        //RX,TX端口设置为输入
//        P3CR |= 0x04;
        TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
        TH1 = BRG ;   //Baud:9600 fosc=11.0592MHz
        TL1 = BRG ;
        SCON = 0x50 ;  //SCON: serail mode 1, 8-bit UART, enable REN
        PCON = 0x80 ; //SMOD=1;
        IEN0 |= 0x90 ;   //Enable Serial Interrupt,EA=1,ES=1;
        TR1 = 1 ;     // timer 1 run        
}

//接受串口发送过来的数据
void UART_ISR()  interrupt 4
{
        if(RI && REN)
        {
                tick.usartRX = 10;
                IntRXMsgREC(SBUF);
               
                RI = 0;
        }
       
       
        if(TI && TXEN)//TXEN为自己定义的一个串口发送使能标志
        {
                TI = 0;
                if(!Print2Usart())                                        //如果队列为空,停止发送
                {
                        TX_ENClr();
                }
                                       
        }
}
bit Print2Usart(void)
{
        static uint8 xdata        UsartPtr = 0;
       
        if(TXBuff.Str.Sta == DONE && UsartPtr < TXBuff.Str.len+2)
        {
                SBUF = TXBuff.mem[UsartPtr++];
                if(UsartPtr > TXBuff.Str.len+1)
                {
                        UsartPtr = 0;
                        TXBuff.Str.Sta = READY;
                }
                return        true;
        }
        else
        {
                UsartPtr = 0;
                TXBuff.Str.Sta = READY;
                return        false;
        }
}

使用特权

评论回复
7
juginhine| | 2010-1-11 09:16 | 只看该作者
uart中,在沒有通訊數據流的時候,TXD和RXD應該都是高電平的。可是我看不到你在初始化那里有設置為高電平?
同時不知道LZ有用示波器看過通訊數據沒有?如果看過,是否可以將波形發上來看下?

使用特权

评论回复
8
tjx727|  楼主 | 2010-1-12 08:43 | 只看该作者
7# juginhine
我是没有设置为输出高电平,看样子问题可能出在这儿,过两天我修改后看看,这几天要忙其他的事情,没有时间弄,谢谢你!

使用特权

评论回复
9
tjx727|  楼主 | 2010-1-12 16:20 | 只看该作者
问题解决了,正于7楼所说,小鸟谢谢各位!

使用特权

评论回复
10
warm_ice| | 2010-1-12 17:29 | 只看该作者
呵呵,解决了就好.

使用特权

评论回复
11
tjx727|  楼主 | 2010-1-13 22:50 | 只看该作者
小鸟还有个疑问,为什么设置为输入的时候也行呢?

使用特权

评论回复
12
tjx727|  楼主 | 2010-1-13 22:51 | 只看该作者
补充下问题,为什么输出TX端设置为输入也行?

使用特权

评论回复
13
warm_ice| | 2010-1-14 09:12 | 只看该作者
补充下问题,为什么输出TX端设置为输入也行?
tjx727 发表于 2010-1-13 22:51

EUART通讯时,TX口即为输出.你设置为输入是不起作用的.

使用特权

评论回复
14
tjx727|  楼主 | 2010-1-14 12:53 | 只看该作者
明白了,谢谢

使用特权

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

本版积分规则

个人签名:我们在追忆中展望­ 在展望中  调整着向前的步伐 个人新浪微博:http://t.sina.com.cn/tjx727­

30

主题

322

帖子

0

粉丝