本帖最后由 yirongfu 于 2016-8-2 01:05 编辑
这我看不出来问题,还有中断服务也有可能相关的,甚至程序结构都可能有影响。
建议你先看看接收时是否进接收中断了,如果有进中断,收到的sbuf内数据是否正确;如果没进中断,那就查查初始化配置。既然你这个代码以前在其它51上能用,那在这个MCU上应该是配置哪里还不对,或者就是硬件有问题。
我用的F54寄存器跟你这个有差异,你用的是F4051吧?我的初始化代码供你参考,485的控制可以不管它:
/**********************************************
功能:EUART1初始化程序
输入:
输出:
说明:9600,8,N,1
**********************************************/
void inituart1(void)
{
SCON1 = 0x40; //B0110.0000,方式1,检测停止位,RI1=0,SM12=0
//T2MOD |= 0x20; //允许EUART1中断,ESU2
IEN1 |= 0x04; //ES1允许EUART1中断
PCON &= 0xDF; //可省,SSTAT1
SBRT1 = 0x7F; //32768-4000kHz/(9.6kHz*16)
SBRT0 = 0xE6;
SBRT1 |= 0x80; //SBRTEN,打开波特率发生器--时钟取自Fsys
REN1 = 1; //接收允许
RI1 = 0;
con485 = 0;//485接收允许
}
|