导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]Keilc51编译的问题[guest]

 *第16510篇: [求助]Keilc51编译的问题

  
楼 主:guest 2003年9月25日09:01
 [求助]Keilc51编译的问题
我是个初学者,用KC的tiny编了一个简单的程序。芯片AT89C51(128个的ram),问题如
下:
1)在项目中STARTUP。A51加载了进去,编译可通过,但生成的代码竟用5.5K,正确吗?
2)再把CONF——TNY。A51也加载了进去,并把RAMTOP改为0x7f,编译出现了以下这些错误
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  E:\KEIL70.1\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_KERNAL)

*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  ?RTX_RAMTOP
    MODULE:  E:\KEIL70.1\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_KERNAL)

*** WARNING L4: DATA SPACE MEMORY OVERLAP
    FROM:    0008H
    TO:      000DH

*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  E:\KEIL70.1\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_CREATE)
    ADDRESS: 003BH

*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_RAMTOP
    MODULE:  E:\KEIL70.1\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_CREATE)
    ADDRESS: 004FH

*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  E:\KEIL70.1\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_CREATE)
    ADDRESS: 0079H

*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  E:\KEIL70.1\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_WAIT)
    ADDRESS: 00B1H

附简单程序:#include  <AT89X51.H>  
#include  <Rtx51Tny.h>  
//#include"at89c51rtx51tny.h"
#define uchar unsigned char
#define uint unsigned int
#define sys 0
#define key 1
#define delay 2
#define ledflash 3
uchar i,j,k;

void InitProc(void)_task_ sys
    { 
//    InitAt89c51();
    os_create_task(key);
    os_create_task(delay);
    os_create_task(ledflash);
    }
void KeyProc(void) _task_ key
    {
    while(1)
    {
    os_wait(K_TMO,3,0);
    if(i  <255)
        i++;
     else
        i=0;
     }
     }
void DelayProc (void) _task_ delay
    {
    //os_wait(K_TMO,3,0);
    while(1)
    {
    if(k  <2550)
    k++;
    else
    k=0;
    }
    }
 void LedProc(void) _task_ ledflash
     {while(1)
    {if(j  <255)
    j++;
    else
    j=0;
    }
    }

  
2楼:linkaimu 2003年9月25日13:40
 [讨论]
还需进修。WHILE连BREAK都不要了你做死循环吗?
  
3楼:caohn173 2005年6月7日09:47
 RTX一定要用BREAK嗎?
以下是引用linkaimu在2003-9-25 13:40:43的发言:
[讨论]还需进修。WHILE连BREAK都不要了你做死循环吗?

應該不用加STARTUP.A51我用89C52試過沒問題。不過用89C51就算把RAMTOP改成7F也不行。


>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:高薪聘请嵌入式系统软件和硬件开发工程师

[下一篇主题]:protel dxp下为什么找不到89c51的器件?