SCICR2 = 0X0C; TE和RE都置1
我就挺纳闷SCI初始化后(初始化时通过读SCISR1和SCIDRL,清0),SCISR1还是0XC0,按道理初始化后SCISR1应该为0X00
我没有示波器,用万用表看不出来吧?
你用的是哪个SCI,我用的是 S12SCIV5,,初始化以后SCISR1也是0xC0,但接收发送都很正常。
最好把初始化的代码发上来看看
另外,波特率你设对了没有
[此贴子已经被作者于2008-9-23 13:14:24编辑过]
你用的是哪个SCI,我用的是 S12SCIV5,,初始化以后SCISR1也是0xC0,但接收发送都很正常。
最好把初始化的代码发上来看看
另外,波特率你设对了没有
[此贴子已经被作者于2008-9-23 13:14:24编辑过]
从单片机上往上位机发没有问题,这应该说波特率是正确的,初始化代码如下:
void SCIInit(void)
{
INT8U i;
//(1)设置波特率为9600
SCIBDL=0x68; //BR=fbus/(16*Bt)=16000000/(16*9600)=104.17:0x68
SCIBDH=0x00; //SCIBDH=0x00,SCIBDL=0x68;
//(2)设置控制寄存器
SCICR1=0x00; //允许SCI,正常码输出,8位数据,无校验
SCICR2=0x0C; //中断暂时关闭,允许发送(TE=1)和接收(RE=1)
//(3)清空数据寄存器和状态寄存器
i = SCISR1; //清空状态寄存器1
i = SCIDRL; //清空数据寄存器
}
在初始化结束后开启接受中断和总中断.
[此贴子已经被作者于2008-9-24 10:39:31编辑过]
还是找个示波器检查一下波形比较好,初始化来看没什么问题。
我自己用的初始化程序比你还简单
void Init_SCI0(void)
{
LinTransceiverWakeup();
SCI0SR2_AMAP = 0;
SCI0BD_SBR = 13; // 9600 bps
SCI0CR1 = 0x00;
SCI0CR2 = 0x2C;
SCI0SR2_BRK13 = 1;
LinRxState = ReceiveIdle;
LinTransceiverWakeup();
}
我用PE生成的SCI代码,发送正常,就是接收时没有进入接收中断,不知为何
问题解决了吗,给个答复吧
谢谢
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |