C251 User's Guide

C51 Version 5 Differences

The differences between the C251 Compiler and the C51 Version 5 are:

  • Register Bank Dependent Code is No Longer Necessary
    The 251 instruction set promotes efficient code which is independent of the selected registerbank. The directives AREGS, NOAREGS, and REGISTERBANK are not required to support the 251 architecture.
  • Support for Source Mode and Binary Mode
    The C251 compiler supports the MODSRC and MODBIN directives for selecting the source and binary mode of the MCS® 251 architecture. Both modes generate different code which is optimized for the operating mode of the 251 MCU. The binary mode allows you to interface with existing 8051 code written with the C51 compiler, the A51 assembler, the Intel PL/M 51 compiler, or the Intel ASM51 assembler. Refer to MODBIN for more information.
  • HOLD Directive
    The C251 compiler lets you override the memory model defaults with the HOLD directive. This lets you use the SMALL model for your application even when the memory requirements exceed the limits of this memory model.
  • PARM51 and PARM251 Directives
    The C251 compiler optimizes parameter passing for the MCS® 251 architecture. This differs from the parameter passing performed by the C51 compiler. The PARM51 directive instructs the C251 compiler to pass parameters like the C51 compiler. The PARM251 directive instructs the C251 compiler to optimize parameter passing for the MCS® 251. Refer to PARM51 and PARM251 for more information.
  • INTR2 Directive
    By default, the C251 compiler assumes that the 251 pushes a 3 byte stack pointer and PSW1 onto the stack when entering an interrupt. Use the INTR2 directive to instruct the C251 compiler to assume that the 251 pushes only the 2 byte stack pointer (like the 8051). Refer to INTR2 for more information.
  • OBJECTEXTEND No Longer Required
    The C251 compiler always stores type information in the object file. This allows the linker to perform complete type checking of all declarations in an application. The OBJECTEXTEND directive is no longer required.