Board logo

标题: [求助] mc9s12dg128连接出错? [打印本页]

作者: nick-zhi    时间: 2007-4-16 11:07     标题: [求助] mc9s12dg128连接出错?

Link Error : L1822: Symbol _BDIVMODU in file E:\free\程序\串口0.1\serial\serial_Data\P&E_ICD\ObjectCode\main.c.o is undefined

我在编译的时候出现了上面的问题,请问怎么解决!
作者: strongchen    时间: 2007-4-16 11:12

你是不是修改过文件的路径?或者试试将路径名中的点去掉试试。
作者: nick-zhi    时间: 2007-4-16 11:22

我没修改路径啊,但是就是不好用!之前文件还是很好用的,加了一段代码就出现了这个问题
作者: nick-zhi    时间: 2007-4-16 11:28

我的程序里有这样一句话,我感觉是应为它才产生上面的问题?
Temp_Prc = Temp_Prc/10;

难道codewarrior里不能这么求除法吗?
作者: strongchen    时间: 2007-4-16 13:39

把整个project贴出来看看。
作者: nick-zhi    时间: 2007-4-16 14:31

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

/***********全局变量***********************/
unsigned char Data_chg[4];
unsigned char Number ;
/*-------锁相环初始化程序----------------------*/
void PLL_init(void) {
REFDV = 1;
SYNR = 2;
while( !(CRGFLG&0x08) );
CLKSEL = 0x80;
}

/*-------串口初始化程序----------------------*/
void SCI_init(void) {
SCI0CR2 = 0x0c;
SCI0CR1=0; /*normal,no parity*/
SCI0BDL = 0x9c;
}

/*-------发射端程序----------------------*/
void SCI_Tx(unsigned char text) {
unsigned char temp;
temp=SCI0SR1; /*clear flag*/
while (!(SCI0SR1&0x80)); /* wait for output buffer empty */
SCI0DRH=0;
SCI0DRL=text;
}

/*-------接受端程序----------------------*/
char SCI_Rx(void){
char result,temp;
temp=SCI0SR1; /*clear flag*/
while(!(SCI0SR1&0x20));
result=SCI0DRL;
return result;
}
/*-------数据处理-----------------------*/
void Data_Prc(unsigned char data){
unsigned char Temp_Prc;
unsigned char j;

Temp_Prc = data;
Number = 1;

while(Temp_Prc){
Temp_Prc = Temp_Prc/10;
Number++;
}
for( j = 0; j < Number; j++ ) {

if( --Number == j ){
Data_chg[j] = data % 10 +48;
}
else{
Data_chg[j] = data / 10 + 48;
}
}
Data_chg[Number] = 44;
}

/*-------主函数--------------------------*/
void main(void) {
/* put your own code here */
unsigned char data;
unsigned char temp,Temp_Tx;
unsigned char i;
unsigned char out[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
EnableInterrupts;
PLL_init();
SCI_init();
for(i = 0; i < 4; i++){
Data_chg = 0;
}

for( i = 0; i < 10; i++){
temp = out;
Data_Prc(temp);
for( i = 0; i Temp_Tx = Data_chg;
SCI_Tx(Temp_Tx);
}
}
data = SCI_Rx();
DDRB = 0XFF;
PORTB = data;

for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}

作者: nick-zhi    时间: 2007-4-16 14:32

这是整个工程
作者: strongchen    时间: 2007-4-16 14:41

好像就这一段语法有错,改过就好了:

for( i = 0; i < 10; i++){
temp = out;
Data_Prc(temp);
for( i = 0; i Temp_Tx = Data_chg;
SCI_Tx(Temp_Tx);
}
}

作者: nick-zhi    时间: 2007-4-17 08:27

不对啊!我把工程发上去!http://bbs.eccn.com/uploadImages/chengxu.rar
作者: strongchen    时间: 2007-4-17 09:31

我打开你的project编译,也发生同样的问题。但是我新建一个project,把你的主程序拷进去,什么都不改,就编译通过了。可能无意中修改了什么地方。建议你重建一个project。另外,你的CodeWarrior是最新版本的吗?我把我新建的project发给你也试试。

http://bbs.eccn.com/uploadImages/dg128b_new.rar

[此贴子已经被strongchen于2007-4-17 9:31:34编辑过]


作者: nick-zhi    时间: 2007-4-17 13:45

谢谢了!
作者: onion2829    时间: 2007-4-20 10:02

编译器为了节省编译时间往往会只针对有修改的文件进行编译,但是编译器往往不知道哪几个文件被修改,所以最好的做法是每次编译之前先按一下同步按钮,然后编译。楼主的问题应该是在移动工程或在其他编辑器内修改源代码后产生的,这种时候需要对工程内的所有文件重新编译,方法为删除工程目录下的“bin”和“工程名+_Data”文件夹,然后编译。另外cw队中文支持不好,建议将工程放在英文目录下。同步按钮如截图。
[upload=image/pjpeg]uploadImages/aadfegaeg.JPG[/upload]

---------------------------------
精通S12,精通cw,有license 欢迎交流
onionchen1983@hotmail.com

[此贴子已经被作者于2007-4-20 10:02:53编辑过]






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