打印
[51单片机]

C8051F351 串口问题

[复制链接]
1388|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ff8zgs|  楼主 | 2015-4-24 12:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ff8zgs 于 2015-4-24 13:18 编辑

刚接触这个MCU 现在调试串口遇到了 串口的TXD 死活不输出波形(用示波器看的)。我调试过程:1Timer1单独 使用波特率正常,TXD的IO口也能输出波形。2检查 各寄存器也是正确的(一会附图),3 仿真,首先软防 能正确地打印字符然后硬防就不能打印字符,示波器也看不到波形。
根据以上现象我初步认为是 交叉开关的鬼,就是说交叉开关未将串口接到IO口上(在寄存器上看是正确接过来的。)。但我我怎么验证我的这个思路呢,如果是怎么解决了呢???? 这个是 寄存器的debug值,我开启了 Timer0和Timer1 然后故意将P0MOUT设置为0x61 设置成0x10也是一样。


void UartInit(void)
{
        Port0Init(PORT_PIN5_DIGITINPUT, PORT_PIN4_PUSHPULLOUT, PORT_NOPIN_SKIP);//初始化IO口
        Timer1Init(TIMER1MODE2, BAUDRATE*2);        //初始化Timer1  波特率 9600
        SCON0=0X50;                                                          // SCON0: 8-bit variable bit rate
                                                                              
            XBR0        =0X01;                                            //串口接上邋IO口       
            XBR1        = 0x40;                                                           
                                                                     
        IP|=IPPS;                                                // Make UART high priority
        ES0=ENABLE;                                        // Enable UART Interrupt
        EA=ENABLE;                                                // Enable all Interrupts
        ET1=0;
        P0MDOUT = 0x61;
       
}

debug.jpg (30.67 KB )

debug.jpg

相关帖子

沙发
ff8zgs|  楼主 | 2015-4-24 12:56 | 只看该作者
没人能提供一个思路吗,我都快被郁闷死了。一个串口困扰我1天了。靠stm32 的串口我都没这么纠结过

使用特权

评论回复
板凳
ningling_21| | 2015-4-24 13:00 | 只看该作者
ff8zgs 发表于 2015-4-24 12:56
没人能提供一个思路吗,我都快被郁闷死了。一个串口困扰我1天了。靠stm32 的串口我都没这么纠结过
...

你串口初始化的程序是什么

使用特权

评论回复
地板
ff8zgs|  楼主 | 2015-4-24 13:13 | 只看该作者
dwh000 发表于 2015-4-24 13:04
c8051寄存器是分页的,是不是和这个有关系.

分页是什么意思

使用特权

评论回复
5
ff8zgs|  楼主 | 2015-4-24 13:18 | 只看该作者
ningling_21 发表于 2015-4-24 13:00
你串口初始化的程序是什么

代码贴上来了

使用特权

评论回复
6
ningling_21| | 2015-4-24 13:28 | 只看该作者
ff8zgs 发表于 2015-4-24 12:56
没人能提供一个思路吗,我都快被郁闷死了。一个串口困扰我1天了。靠stm32 的串口我都没这么纠结过
...

初始化有点问题
SCON0=0X50  这明显有点问题,没看新品资料

参考这个**

http://wenku.baidu.com/link?url= ... w1sZDih2XYDHSBlYsnK

使用特权

评论回复
7
xiao_yp2015| | 2015-4-24 22:03 | 只看该作者
c8051寄存器是分页的,配置对应功能的寄存器时,需要切换到相应的页

使用特权

评论回复
8
xiao_yp2015| | 2015-4-24 22:05 | 只看该作者
/****************************************************************************************************************************
函数名称:串口初始化函数
创建时间:2014-03-10
修改时间:2014-03-10
*****************************************************************************************************************************/
void Uart_Init()
{
           SFRPAGE_SAVE = SFRPAGE;                //保存SFR寄存器页
        SFRPAGE = UART0_PAGE;            //串口SFR寄存器配置页

    SCON0 = 0x50;  //配置串口为8位,波特率可变。
        SSTA0 = 0x10;  //配置串口波特率由定时器1溢出产生。

        TMOD = 0X20;//选用定时器1作为波特率发生器
        TH1 =  0xca;        //定时器1装初值
        TL1 =  0xca;
        ES0=1;   //开启串口中断0
        TR1 = 1;                //启动定时器1

        SFRPAGE = SFRPAGE_SAVE;

        RS485_RE = 0;         //485接收数据

}

使用特权

评论回复
9
ningling_21| | 2015-4-25 08:38 | 只看该作者
xiao_yp2015 发表于 2015-4-24 22:05
/*************************************************************************************************** ...

SFRPAGE  有这个寄存器吗

使用特权

评论回复
10
hnkf118| | 2015-4-25 10:46 | 只看该作者
问题肯定是没有的,毕竟是成熟的片子了。 多看看资料。

使用特权

评论回复
11
yhn1973| | 2015-4-25 13:50 | 只看该作者
C8051只有极少数的型号SFR是分页的

使用特权

评论回复
12
ff8zgs|  楼主 | 2015-4-28 11:17 | 只看该作者
问题已解决了,程序是没有任何问题,我把焊接的所有线重新焊接了一次,就没问题了。果然所有不可能的问题都是一些微不足道的小细节引起的。昨天IIC也是。

使用特权

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

本版积分规则

18

主题

199

帖子

1

粉丝