[其它应用] SH79F166A串口接收问题,可以进入接收中断但接收一直是0

[复制链接]
126|3
 楼主 | 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,发送没问题,可以正常向串口助手发送正确的数值,不知初始化有没有问题
| 2019-1-5 16:20 | 显示全部楼层
首先要确认是不是真的已经发送数据了
| 2019-1-6 13:52 | 显示全部楼层
166A的主频不高,对高波特率初始化,一定要核对一下实际的定时器初值在时钟不能被整数倍除尽造成的量化误差,9600bps是最大了,再往上,实际波特率误差会加大,造成数据错误,必须用外部晶振或时钟才可以。

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

中颖的51内置的RC时钟,很多都存在类似的问题,宏定义虽然简单方便,但是用之前务必用excel表格拉个清单验证一下定时器初值造成的可能误差。
| 2019-1-14 13:48 | 显示全部楼层
IO配置检查下
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表