Board logo

标题: 请教SCI通讯问题//怎么没人回答啊 [打印本页]

作者: kingcathy    时间: 2008-7-13 22:09     标题: 请教SCI通讯问题//怎么没人回答啊

MCU:MC9S12XDP512

问题:首先自动发送i++的数据,发现0-255中0x11和0x13时,PC端的串口调试工具不能收到,用示波器测试波形,可以确认MCU绝对发送了数据,但PC机就是没有收到。然后我用串口向MCU发数据,同时MCU发回接收到的数据,通过测试0X11和0X13单片机能收到,并且通过TXD引脚发回给PC机,但同样PC机没有收到。请问这是什么原因??

源程序:

#include <hidef.h> /* common defines and macros */
#include <mc9s12xdp512.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xdp512"

/*-------串口初始化----------------------*/
void Sci0Init()
{
//设置波特率,波特率=MCLK/(16*BR)
SCI0BDH = 0x00; //关闭红外,IREN=0
SCI0BDL = 81; //9600波特率//81,19.2Kbps
//控制寄存器,设置回送,单线等方式选择,帧格式,唤醒,空闲检测类型以及奇偶校验
SCI0CR1=0; /*normal,no parity*///0x13:11位奇校验,0x12:11位偶校验
SCI0CR2=0X2C; /*RIE=1,TE=1,RE=1*/
}


/*-------发射端程序----------------------*/
void Sci0Tx(unsigned char text)
{
unsigned char temp;
temp=SCI0SR1; /*clear flag*/
//发送前判断SC0DR是否处于忙状态。SC0DR.7=0:处于忙状态
while (!SCI0SR1_TDRE); /* wait for output buffer empty */
while(!SCI0SR1_TC); //等待数据发送结束
SCI0DRH=0;
SCI0DRL=text;
}


/*-------接受端程序----------------------*/
byte Sci0Rx(void)
{
byte result,temp;
temp=SCI0SR1; /*clear flag*/
if((temp&0x20)>0)
result=SCI0DRL;
return result;
}




/******************************************************************
*函数名:PLLINIT
*入口参数SNNR寄存器值,REFDV0寄存器值
*出口参数: 无
*功能描述:使用PLLCLK,时钟频率等于2*晶振频率*(SYNR0+1)/(REFDV0+1)
*******************************************************************/
void PLLINIT(byte SYNR0,byte REFDV0)
{
CLKSEL=0x00; //disable pll;
CLKSEL_PLLSEL = 0;
PLLCTL_PLLON = 0;
SYNR = SYNR0; //
REFDV = REFDV0;
PLLCTL = 192; //0xC0 CME=1,PLLON=1
PLLCTL_PLLON = 1;
while(!CRGFLG_LOCK);
CLKSEL_PLLSEL = 1;
return;
}

byte data=0;

void main(void) {
/* put your own code here */
byte i=0;
EnableInterrupts;
PLLINIT(24,9);
Sci0Init();
for(;;)
{
Sci0Tx(i++);
}
}




/*--------中断程序-----------------------*/
#pragma CODE_SEG NON_BANKED //中断函数必须定义在0x4000--0xFEFF区间内

void interrupt SCI0_Irp(void)
{
data=Sci0Rx();
Sci0Tx(data);
}

#pragma CODE_SEG DEFAULT

[此贴子已经被作者于2008-7-14 12:53:13编辑过]


作者: strongchen    时间: 2008-7-18 16:27

换个电脑试试?
作者: pataCooper    时间: 2008-7-19 10:33

就是就是,有波形了就说明不是下位机软件的原因了。从上位机找原因吧。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0