打印
[其它应用]

SH79F166A串口接收问题,可以进入接收中断但接收一直是0

[复制链接]
1122|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guofengyu|  楼主 | 2018-12-22 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[code]
    TR2=0;                                                                              //关闭TIMER2
    TF2=0;                                                      //清TIMER2溢出标志
//      
   T2MOD|=Bin(00000000); //T2OE  T2波特率发生器方式置1
    T2CON=Bin(00110000);  //此处TR2未置1,定时器2未开始
    RCAP2H  = (65536L-_UART_BAUD_T2CLK /BaudRate/32) >>8;
    TH2     = RCAP2H;
    RCAP2L  = (65536L-_UART_BAUD_T2CLK /BaudRate/32) &0x00FF;   
    TL2     = RCAP2L;
    TR2=1;         //定时器2开始

    PCON|=Bin(00000000);
    SCON|=Bin(01010000);

   
    REN=1;
    ET2=1;
    ES=1;[/code]
遇到奇怪的问题,帮忙看下,系统12M,出现问题是可以正常进入串口中断,通过串口助手仿真调试,无论串口助手发送什么数据,仿真接收都是0x00 ,仿真可以正常进入接收中断,就是接收数据是0,发送没问题,可以正常向串口助手发送正确的数值,不知初始化有没有问题
沙发
xiaoqizi| | 2019-1-5 16:20 | 只看该作者
首先要确认是不是真的已经发送数据了

使用特权

评论回复
板凳
sszxxm| | 2019-1-6 13:52 | 只看该作者
166A的主频不高,对高波特率初始化,一定要核对一下实际的定时器初值在时钟不能被整数倍除尽造成的量化误差,9600bps是最大了,再往上,实际波特率误差会加大,造成数据错误,必须用外部晶振或时钟才可以。

看楼主位的初始化代码用了宏定义的值,不清楚实际测试的波特率,建议查一下。

中颖的51内置的RC时钟,很多都存在类似的问题,宏定义虽然简单方便,但是用之前务必用excel表格拉个清单验证一下定时器初值造成的可能误差。

使用特权

评论回复
地板
被遗忘的舍利| | 2019-1-14 13:48 | 只看该作者
IO配置检查下

使用特权

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

本版积分规则

8

主题

11

帖子

1

粉丝