C51 Version 9.02a Product Update
The C51 Version 9.02a product update replaces components of your current Tool Set with the latest versions.
What's New?
- [Cx51 Compiler]
Improved: access to bit-field members with size 1 bit. The compiler uses bit instructions to access such bit-field members. When objects are defined with the bdata memory type, direct bit addressing is used.
Example:
struct bf { unsigned char b0:1; unsigned char b1:1; };
struct bf a;
struct bf bdata b;
:
if (a.b0 && b.b1) b.b1 = 0;
- [Cx51 Compiler]
Corrected: multiplication long = int * int is potentially incorrect in Dallas 390 mode.
- [Cx51 Compiler]
Corrected: explicit cast to unsigned char was ignored with complex address arithmetic.
Example:
unsigned char far table[256];
unsigned char i, v;
:
v = table[(unsigned char)(16+i+20)]; // index now truncated to 8-bit
- [Cx51 Compiler]
Corrected: when using conditional operators (? :) in complex parameter lists, there is a potential for unbalanced PUSH / POP instructions. This typically creates a application program crash at the function call.
- [C Run-Time Library]
Corrected: the function toint did not detect the value range 0x59 - 0x40 as invalid. Now the function returns -1 for these values.
- [C Run-Time Library]
Corrected: timing of Multiplication Division Unit (MDU) in Evatronix R8051XC2 device is faster and now reflected in the C Library. The MDU timing for int/long multiplication and long division is adjusted.
- [New Supported Devices]
Infineon XC835MT-2F , XC836-2F , XC836M-1F , XC836M-2F , XC836MT-2F , and XC836T-2F devices.
- [Device Simulation]
Corrected: SiLabs C8051F41x devices: SMBus simulation when using I2C generator.
- [Device Simulation]
Corrected: SiLabs C8051F12x devices: automatic page switch for interrupts and timing of timer 2/3/4.
- [Device Simulation]
Corrected: SiLabs C8051F12x devices: on I²C the receive of more than 256 bytes now generates a stop.
- [Device Simulation]
Corrected: SiLabs C8051F36x devices: crossbar did not connect the right I/O signals under some circumstances.
- [Device Simulation]
Corrected: Evatronix T8051: CPU instruction timing.
C51 v9.01
- [New Supported Devices]
Infineon XC822T-0F, XC822M-1F, XC822MT-1F, XC824MT-1F, and XC824M-1F devices.
- [Device Support]
Added: debug support for Infineon XC82X devices.
- [Cx51 Compiler]
Corrected: when MODDA is used and int numbers are multiplied and assigned to long, the result was potentially incorrect.
C51 v9.00
- [µVision4]
C51 now includes the new µVision4 IDE.
- [New Supported Devices]
Evatronix R8051XC(1 DPTR), R8051XC2(1 DPTR), R8051XC2(2 DPTR), R8051XC2(8 DPTR), R8051XC2-A(1 DPTR), R8051XC2-A(2 DPTR), R8051XC2-A(8 DPTR), R8051XC2-AF, R8051XC2-B(1 DPTR), R8051XC2-B(2 DPTR), R8051XC2-B(8 DPTR), and R8051XC2-BF devices.
- [New Supported Devices]
- Nordic nRFLU1P-F16 and nRFLU1P-F32 devices.
- [New Supported Devices]
- NXP P89LPC9361 device.
- [New Supported Devices]
- Silabs C8051F580, C8051F581, C8051F582, C8051F583, C8051F584, C8051F585, C8051F586, C8051F587, C8051F588, C8051F589, C8051F590, and C8051F591 devices.
- [Device Support]
Corrected device settings for Infineon XC888-6FF, XC888CM-8FF, XC888LM-6FF, XC886-6FF, XC866L-1FR, XC866L-2FR, XC866L-4FR, and XC864-1FRI devices.
- [Device Support]
Corrected: device settings for Nordic Semiconductor nRF24E1, nRF24E2, nRF9E5, nRF24LU1, and nRF24LE1 devices.
- [Cx51 Compiler]
Corrected: constant folding of two negative array index values. For example:
unsigned char arr[512];
unsigned int i;
i = arr[i-1-5]; // incorrect in C51 V8: arr[i-4] instead of arr[i-6]
- Corrected: when using the NOAREGS directive, complex arithmetic with nested calls may create incorrect results. For example:
#pragma NOAREGS
int result;
extern char f(unsigned char idx);
result = (f(1)*0x100+f(0)) - (f(3)*0x100+f(2)); // incorrect result. POP destroys value in ACC
- [Lx51 Linker]
Corrected: when using OPTIMIZE(10) or above, there was a potential that common code blocks are called incorrectly. Therefore programs may have operated incorrectly.
- [BL51 Linker/Locater]
Corrected: when using RTX51 user interrupt functions were overlapping with RTX ISR vectors which resulted in a linker warning.
- [BL51 Linker/Locater]
Corrected: data overlaying may not work when the last input module contains an interrupt function; the linker incorrectly issues WARNING 16: main uncalled.
| Get in touch! |
Need a Logic solution?
Contact our expert engineers!
- Quick
- To the point
- Experienced
- Customer-oriented

|
| Supplier information |
About Keil:
Keil, an ARM company, makes C compilers, macro assemblers, real-time kernels, debuggers, simulators, integrated environments, and evaluation boards for ARM7/ARM9™/Cortex-M3, XC16x/C16x/ST10, 251, and 8051 processor-based microcontroller families. Products available from Keil include embedded development tools, evaluation software, product updates, application notes, example code and technical support.
|
|