[其它应用] 无论串口助手发送什么数据,仿真接收都是0x00

[复制链接]
764|9
 楼主| ousj 发表于 2020-6-21 14:24 | 显示全部楼层 |阅读模式


  1.     TR2=0;                                                                              //关闭TIMER2
  2.     TF2=0;                                                      //清TIMER2溢出标志
  3. //      
  4.    T2MOD|=Bin(00000000); //T2OE  T2波特率发生器方式置1
  5.     T2CON=Bin(00110000);  //此处TR2未置1,定时器2未开始
  6.     RCAP2H  = (65536L-_UART_BAUD_T2CLK /BaudRate/32) >>8;
  7.     TH2     = RCAP2H;
  8.     RCAP2L  = (65536L-_UART_BAUD_T2CLK /BaudRate/32) &0x00FF;   
  9.     TL2     = RCAP2L;
  10.     TR2=1;         //定时器2开始

  11.     PCON|=Bin(00000000);
  12.     SCON|=Bin(01010000);

  13.    
  14.     REN=1;
  15.     ET2=1;
  16.     ES=1;

遇到奇怪的问题,帮忙看下,系统12M,出现问题是可以正常进入串口中断,通过串口助手仿真调试,无论串口助手发送什么数据,仿真接收都是0x00
tian111 发表于 2020-6-21 14:27 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| ousj 发表于 2020-6-21 14:30 | 显示全部楼层
仿真可以正常进入接收中断,就是接收数据是0,发送没问题,可以正常向串口助手发送正确的数值
lium 发表于 2020-6-21 14:33 | 显示全部楼层
不知初始化有没有问题
gongche 发表于 2020-6-21 14:40 | 显示全部楼层
首先要确认是不是真的已经发送数据了
wangzsa 发表于 2020-6-21 14:43 | 显示全部楼层
166A的主频不高,对高波特率初始化,一定要核对一下实际的定时器初值在时钟不能被整数倍除尽造成的量化误差,9600bps是最大了,再往上,实际波特率误差会加大,造成数据错误,必须用外部晶振或时钟才可以。
tian111 发表于 2020-6-21 14:46 | 显示全部楼层
看楼主位的初始化代码用了宏定义的值,不清楚实际测试的波特率,建议查一下。
zwll 发表于 2020-6-21 14:55 | 显示全部楼层
中颖的51内置的RC时钟,很多都存在类似的问题,宏定义虽然简单方便,但是用之前务必用excel表格拉个清单验证一下定时器初值造成的可能误差。
houcs 发表于 2020-6-21 15:00 | 显示全部楼层
IO配置检查下
 楼主| ousj 发表于 2020-6-21 15:07 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
您需要登录后才可以回帖 登录 | 注册

本版积分规则

712

主题

7557

帖子

1

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