注册会员
- 积分
- 179
- 威望
- 132
- 贡献
- 41
- 兑换币
- 0
- 注册时间
- 2012-2-17
- 在线时间
- 3 小时
- 毕业学校
- 信工大学
|
我用在线调试的时候发现状态寄存器SCIRDL的值不会改变。
然后我用SCI0对应引脚无法输出数据,换用SCI1能输出数据,但是输出的数据不对,比如程序上是0X01,输出就是0X06,程序上是0x02,输出是0x18.
我怀疑板子坏了,哪个大神可帮调试下?
程序如下:
#include <hidef.h>
#include <MC9S12XS128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void SCIInit(void)
{
unsigned char t;
//定义波特率Bt=9600,SCI1BD=fBUS/(16*Bt)
SCI1BDH = 0x00; //再给低8位赋值
SCI1BDL = 0x68; //须先给高8位赋值//主频16M
SCI1CR1 = 0x00; //设置允许SCI,正常码输出,8位数据,无校验
t = SCI1DRL; //读数据寄存器(清0)
t = SCI1SR1; //读状态寄存器(清0)
SCI1CR2 = 0x2C; //允许SCI1接收和发送 查询方式
}
void main()
{
DisableInterrupts;
SCIInit();
EnableInterrupts;
while(1)
{
while(SCI1SR1_TDRE!=1); //这句话很重要,第一个发送完在发送第二个,否则发送错误
SCI1DRL= 0x01;
}
}
硬件连接方式:单独的板子上的S3口接 串口,并供电。其他脚都悬空。
我怀疑板子坏了,哪个大神可帮调试下?
|
|