[51单片机] C8051F351 串口问题

[复制链接]
1691|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;
       
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 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寄存器是分页的,是不是和这个有关系.

分页是什么意思
 楼主| ff8zgs 发表于 2015-4-24 13:18 | 显示全部楼层
ningling_21 发表于 2015-4-24 13:00
你串口初始化的程序是什么

代码贴上来了
ningling_21 发表于 2015-4-24 13:28 | 显示全部楼层
ff8zgs 发表于 2015-4-24 12:56
没人能提供一个思路吗,我都快被郁闷死了。一个串口困扰我1天了。靠stm32 的串口我都没这么纠结过
...

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

参考这个**

http://wenku.baidu.com/link?url= ... w1sZDih2XYDHSBlYsnK
xiao_yp2015 发表于 2015-4-24 22:03 | 显示全部楼层
c8051寄存器是分页的,配置对应功能的寄存器时,需要切换到相应的页
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接收数据

}
ningling_21 发表于 2015-4-25 08:38 | 显示全部楼层
xiao_yp2015 发表于 2015-4-24 22:05
/*************************************************************************************************** ...

SFRPAGE  有这个寄存器吗
hnkf118 发表于 2015-4-25 10:46 | 显示全部楼层
问题肯定是没有的,毕竟是成熟的片子了。 多看看资料。
yhn1973 发表于 2015-4-25 13:50 | 显示全部楼层
C8051只有极少数的型号SFR是分页的
 楼主| ff8zgs 发表于 2015-4-28 11:17 | 显示全部楼层
问题已解决了,程序是没有任何问题,我把焊接的所有线重新焊接了一次,就没问题了。果然所有不可能的问题都是一些微不足道的小细节引起的。昨天IIC也是。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

199

帖子

1

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