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.
_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 ); //???? }
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
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.
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?
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"
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!