This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Tasking Keil compiler conversions

Hi,

I've some questions about the Cx51 keil development:

I've one c-file which must be converted from Tasking compiler to the keil compiler

_sfrbyte x _at(y) (Tasking Compiler) -> Sfr(x, y) (Keil compiler)?????

Are these conversions are correct?

_xdat (Tasking compiler) --> xdata (Keil compiler)

_data (Tasking compiler) --> data (Keil compiler)

REENTRANT void function() (Tasking Compiler) --> void function() REENTRANT; (Keil Compiler)

Moreover do you know which controller I've to add to the keil project if the "Intel MCS 51 family" is required?

best regards
Jens

  • ... would cut the above questions to one or even zero.

    Are these conversions are correct?

    _xdat (Tasking compiler) --> xdata (Keil compiler)

    _data (Tasking compiler) --> data (Keil compiler)
    yes, but the position may be different (char data vs data char)

    REENTRANT void function() (Tasking Compiler) --> void function() REENTRANT; (Keil Compiler)
    reentrant should be avoided for the '51 series of chips

    Moreover do you know which controller I've to add to the keil project if the "Intel MCS 51 family" is required?
    there is no such thing as the "Intel MCS 51 family" any more, the derivatives have derived far away. Keil has specific include files for most derivatives

    Erik

  • Hi Erik,

    thanks for your reply: I'm trying to create a working keil c51 programm to program the TUSB6250 controller from Texas Instruments. Unfortunately, they use the Tasking Compiler, but the free version has some code size restrictions so that I couldn't use it.

    Texas Instruments made these processor specifications:

    Processor Options:
    Processor: Intel MCS 51 family
    CPU (Special Function Registers): 8051
    On-chip Data RAM Size: 256 bytes
    External memory access allowed
    Disable all interrupts at startup
    

    So can I use anyone of the derivatives, using a 8051 processor?

    Another short conversion for checking:

    _rom (Tasking Compiler) --> code (Keil compiler)
    

    Moroever I don't know how I should change the Texas Instruments code at this position:

    typedef void (*pCALL)() REENTRANT;
    
    void function()
    {
      pCALL    pFunction;
      void  *pPara;
    //some code
      pFunction( pPara );      //????
    }
    
    

    best regards
    Jens

  • they use the Tasking Compiler, but the free version has some code size restrictions so that I couldn't use it.
    then I hope you have a full Keil

    typedef void (*pCALL)() REENTRANT;
    
    void function()
    {
      pCALL    pFunction;
      void  *pPara;
    //some code
      pFunction( pPara );      //????
    }
    

    do not change, get rid of. It uses just about anything that should be avoided when working with the '51. It is an unfortunate fact that many that do not have even an inkling of the differences between a PC and a '51 get published.

    Erik

  • they use the Tasking Compiler, but the free version has some code size restrictions so that I couldn't use it.
    then I hope you have a full Keil

    We only have the ARM version of the MDK. Do you know a free 8051 compiler where I can run the code for the TUSB6250?

    do not change, get rid of.
    Do you think that this code isn't needed or better said must be updated so that it works?

    best regards
    Jens

  • We only have the ARM version of the MDK. Do you know a free 8051 compiler where I can run the code for the TUSB6250?
    I do not know, maybe SDCC
    the keil eval is a)not for commercial purposes, b) linkes at 4k-up and c)limited to 2k

    do not change, get rid of.
    Do you think that this code isn't needed or better said must be updated so that it works?

    I, obviously, have no idea if it is 'needed, but it should be eliminated not "so that it works" but "so that the compiler has a chance to generate good code"

    Erik

  • A compiler doesn't run code - it just translates it.

    So, as long as this "TUSB6250" thing uses the standard 8051 instruction set (which it almost certainly does), you can use any compiler that generates standard 8051 output - that is the beauty of a standard architecture like the 8051 (or ARM)!

    When you select a target device in uVision, that is just configuring the tools for the "peripheral" features of the specific chip - SFRs, memory sizes, etc - it makes no difference to the basic instruction set!