Keil Logo

C51 C Compiler

C51: #pragma Message and #pragma Error
C51: ?C? Library Routines
C51: ?C? Load and Store Library Routines
C51: ?C? Long/Float Math Library Routines
C51: '\N' Does Not Work in printf() Statements
C51: __DATE__ and __TIME__ Macros
C51: 16-bit Multiply with 32-bit Result
C51: 16MB xdta RAM with Analog Devices Microconverter
C51: 64-bit Floating-point Operations
C51: 8051 Serial I/O in C
C51: 80C517: Using the 517 Multiply / Divide Unit in Interrupts
C51: 80C517A MA-STEP Shift Bug
C51: 80C751.LIB is Missing From Evaluation Version
C51: A/D Examples for the ADUC812
C51: Absolute Access for Far Variables
C51: Absolute Addresses
C51: Absolute Memory Accesses to Maxim 390 Far Memory
C51: Absolute Registers and USING Directive
C51: Access Low/High Bytes of a Integer Variable
C51: Access to Paged SFR Registers
C51: Accessing a Pointer in Assembler
C51: Accessing an External SFR in a C Program
C51: Accessing Assembly Variables From C
C51: Accessing Bits on P5 of NXP 552
C51: Accessing I/O Ports in C
C51: Accessing Internal EEPROM on Atmel 89LS8252
C51: Accessing Register Banks in C
C51: Accessing Special Function Registers in C
C51: Accessing Specific Memory Bytes
C51: Accessing the Maxim DS390 On-chip 4k SRAM and Stack
C51: Adding C Functions to Existing Assembler Code
C51: Adding Intrinsic Function to C51 Library
C51: Adding to the Startup Code
C51: Address Space Overflow With Far Constant
C51: ADUC812 Compatibility
C51: Alternate Startup Code
C51: Analog Devices ADuC812 Example Program
C51: Analog Devices ADUC812 External Code Problems
C51: Are 32-bit SFRs Supported?
C51: Are Checksum Library Routines Included?
C51: Are Code and Data Objects Relocatable?
C51: Are Link and Make Functions Available?
C51: Are RAM Bit-addressable Registers Supported?
C51: Are Unions Supported In C51
C51: Arithmetic Problems with CHAR Types
C51: array Index uses Byte instead of Word
C51: Assigning an I/O Address to a Variable
C51: Atmel EEPROM Programming Support
C51: ATOF Library Routine Uses BIT Variables
C51: Avoiding ACALL Problems in Maxim DS80C390 Rev BX Devices
C51: Avoiding MOVC Fetches from Code Space
C51: Avoiding Startup Initialization of Static Variables
C51: Bank Switching Common Area
C51: Bank Table Entries for Indirectly Called Functions
C51: Battery-backed Non-volatile Memory
C51: Bit Addressable Arrays
C51: Bit Field Unions Don't Work as Expected
C51: Bit Field Unions Give Strange Results
C51: BIT Format Specifiers for Printf
C51: Bits Used for Bank Selection
C51: BL51 Linker Produces No Binary File
C51: Bootloader and ISP for the Silicon Labs C8051Fxx Devices
C51: Browser Information in OMF51 File Makes Emulator Fail
C51: Calculating Baud Rates for the 8051 Serial Port
C51: Calculating Code Space for Bank Switching
C51: Calculating Stack Size
C51: Calculating Timer Settings for Serial I/O
C51: Call C Functions within Startup Code
C51: Calling Assembly Routines from C
C51: Calling Functions from Interrupts
C51: Calling Printf In An Interrupt
C51: Can Struct Members reside in different Memory Spaces?
C51: Changing L51_BANK to Output Inverted Signals
C51: Changing Optimizer Level for a Single Function
C51: Changing the order of obj-files crashes Program
C51: Checking for Stack Underflow at Runtime
C51: Checking Tool for XC800 Chip Bug
C51: Clearing the Scanf Input Stream
C51: Code Banking Latch on Extra Address Lines
C51: Code Banking with On-chip and Off-chip Memory
C51: Code Banking With SiLabs C8051F12x/F13x Devices
C51: Code Generator Support for Multiple Data Pointers
C51: Command Line Global Register Optimization
C51: Comments in Assembly Blocks
C51: Compare 'char' Variable with Const Value is Never True
C51: Compiler Directive for Linker-level Optimization
C51: Compiler Directive for OMF2 File Format
C51: Compiler Directive for OMF-51 Extended Format
C51: Compiler Is Unable to Find Include Files
C51: Compiler Optimizes Out Necessary XDATA Reads
C51: Compiler Uses DPL and DPH for Variables
C51: Configurable SFR Bit Accesses
C51: Configuring Dallas 390 and 400 for Contiguous Mode
C51: Configuring PPAGE and PPAGEENABLE
C51: Configuring XDATA Banking
C51: Const Variable Banking With Silicon Labs C8051F12x Devices
C51: Const Variable Storage Location
C51: Constant Arrays Larger than 64KB
C51: Constant Values at Fixed Addresses in Code Space
C51: Contents of The ?C_INITSEG Segment
C51: Control Directives
C51: Converting Big Endian to Little Endian
C51: Converting IAR Banked Code to Keil
C51: Converting PORT.BIT Code From IAR
C51: Correctly Declaring Variables with Memory Spaces
C51: Create a Patch Vector Table
C51: Creating a Fixed Stack Segment
C51: Creating Code Banking Programs
C51: Creating CPU Header Files
C51: Creating HEX Files for Infineon/Cypress USB Devices
C51: Creating Output Files for older Philips PDS51 Emulators
C51: DALLAS DS5240 Modulo-Artihmetic Accelerator ACELERATOR
C51: Dashes In Filenames
C51: Data Overlaying Problem with Struct Parameters
C51: Data Overlaying with RTOS applications
C51: Data Type Question
C51: DATA_GROUP and Stack Problems
C51: Declaring BDATA and SBIT Variables
C51: Declaring External sbit Variables
C51: Declaring two Variables at the same Address
C51: Default Startup and Initialization Code
C51: Defining the Minimum Stack Size
C51: Determining the Location of Assembler Instructions
C51: Directing Printf Output to Second Serial Port
C51: Disabling Interrupts on Silicon Labs F12x/F13x Devices
C51: Displaying Integers with PRINTF
C51: Division Doesn't Work
C51: Do Keil Tools Work with all 8051 based Devices?
C51: Do XDATA and CODE Memory Overlap?
C51: Does CA51/PK51 support Sinowealth 8-Bit Flash MCUs?
C51: Does ENUM Type Checking Work?
C51: Does the Run-time Library Disable Interrupts?
C51: Double Precision Math Routines
C51: DS5000 Real-time Clock Example Code
C51: DS80C390 Arithmetic Accelerator
C51: Dual Data Pointer and Philips
C51: Dual Data Pointer Performance Increase
C51: Dual Data Pointers for DALLAS Parts
C51: Eliminating 16-Bit Pointer Increments
C51: Empty Relocatable Segment
C51: ENUM Example
C51: ERROR 146 (Invalid Base Address)
C51: Error 166 (Array of Functions)
C51: Error 200 (Left Side of '.' Requires Struct/Union)
C51: Error 230 (Unknown Struct/Union/Enum Tag)
C51: Error 258 (MSPACE ILLEGAL IN STRUCT/UNION)
C51: Error 274 (Absolute Specifier Illegal)
C51: Error C202 Using XBYTE Absolute Addressing
C51: Error C249 (Special Initialization Exceeds 8K)
C51: Error C267 ('function': Requires Ansi-style Prototype)
C51: Errors Using SBIT and SFR
C51: Eval and the Floating-Point Library
C51: Evaluation Compiler for Infineon/Cypress Devices
C51: Example Programs for the Philips MX Devices
C51: Executing Special Instructions immediately after Reset
C51: Expected LCALL But See LJMP
C51: Exporting Symbols for Emulators
C51: Extern Declarations Using _at_
C51: EXTERN Vars and Inline Assembly
C51: External SFR Access for 8051 Programs
C51: EZ-USB Startup Code
C51: Far Data Pointer Boundaries
C51: Far Var _at_ Compared to Cast Value
C51: Faster Integer Division
C51: Fatal Error (More Than 256 Segments)
C51: Fatal Error 210 (RTX51.LIB Not Found)
C51: Fatal Error When Using SRC Directive
C51: Flash Memory on the ADuC812
C51: FLOATFUZZY Directive
C51: Floating Point Library Routines Register Usage
C51: Floating-point Reentrancy in ISR?
C51: Format of ?C_INITSEG Segment
C51: Format of __DATE__ Macro Has Changed
C51: Formfeeds in Listing Files
C51: Full Version of Tools Show Code Size Limit
C51: Function of ?C?ICALL and ?C?ICALL2
C51: Function Pointers in Contiguous Mode
C51: Function Prototypes for Reentrant Functions
C51: Functions That Are Reentrant
C51: Gaps in DATA Space
C51: General Purpose SFR Interface
C51: Generating Hex Files for Code Banking Programs
C51: Get Error A45: Using in-Line Assembler
C51: GETCHAR Echoes Characters
C51: Getting Evaluation Version When Using the Silicon Labs IDE
C51: Getting Inline Assembly to Work
C51: Getting Interrupts Working
C51: Getting the Code Bank of a Function
C51: Getting the Current Bank Number
C51: Global or Static Variables Not Being Initialized
C51: Handling Unused Interrupts
C51: How are Function Parameters Handled?
C51: How big can a Binary Number be?
C51: How Do I Read a Latch?
C51: How to Directly Address Multiple Consecutive SFRS
C51: How To Give Descriptive Names To Port Pins
C51: How to Use 256 Bytes of Data Space
C51: IDATA loop Never Ends
C51: Identify Uncalled Library Routines
C51: Implementing XDATA Banking
C51: In-Application Programming (IAP) on Philips LPC9XX
C51: Include File for Atmel 89S8252
C51: Indirect Function Calls with Code Banking
C51: Indirectly Accessing 8051 SFRs
C51: Indirectly called Reentrant Functions
C51: Infineon Watchdog Timer Resets Simulator
C51: INIT_MEMPOOL requires more Memory than actually used
C51: Initializing an Absolutely Located Variable
C51: Initializing Far Data
C51: Initializing the Dallas 320/520 2nd Serial Port
C51: Initializing XDATA Over FF00h
C51: Inline Assembly
C51: Inline Assembly Generates Target Out of Range
C51: in-line assembly gives Compiler Warnings
C51: In-System Flash Programming (Part 1)
C51: In-System Flash Programming (Part 2)
C51: In-System Flash Programming with ROM size > 64KB
C51: Integer Promotion
C51: Interface for IAP Functions on NXP Devices
C51: Interrupt Code Not in Correct Space
C51: Interrupt Service Routines Located at Wrong Addresses
C51: Interrupt Vector Numbers
C51: Interrupt-driven Serial I/O
C51: Interrupts and Local Variables
C51: Interrupts Not Generated
C51: INTPROMOTE/NOINTPROMOTE Directive
C51: Is Return Required for Void Functions?
C51: Is STARTUP.A51 Required?
C51: Is There a Little Endian/Big Endian Compiler Option?
C51: Is There a Translator for PL/M-51 to C?
C51: kbhit Library Routine Is Missing
C51: Keil µVISION Debugger Won't Stop on Breakpoints With ST uPSD33XX
C51: Large Directive
C51: Latency of Interrupt Service Routines
C51: Library is not created
C51: Limits on Functions with Variable-length Argument Lists
C51: Line Splicing
C51: Link Interbank Call Table ?BANK?SELECT
C51: Linking Programs for DS80C400 Using Start400.a51 Fails
C51: Little-Endian CAN Registers, Big-Endian Compiler
C51: LJMP & LCALL Instead of AJMP & ACALL
C51: Local Variables Preserve Values Between Function Calls
C51: Locate a Function at an Absolute Address
C51: Locate struct to SFR Space
C51: Locating a Table of Pointers at a Specific Address
C51: Locating a Variable in a Register
C51: Locating Data Structures in XDATA un the Order Ddefined
C51: Locating Function Tables in Code Memory
C51: Locating Initialized Variables at Absolute Addresses
C51: Locating Interrupts with PK51 Evaluation Software
C51: Locating Object Files at Specific Starting Addresses
C51: Locating the Stack after IDATA Variables
C51: Locating Variables in Multiple XDATA Areas
C51: Locating Variables to Far Const Space
C51: Long Pointer Arithmetic
C51: LROL and LROR Functions are not Intrinsic
C51: Math Functions and Their Execution Time
C51: Math Operations Supported
C51: Maxim 390 Hangs on Math Operations
C51: Maxim 390 Math Accelerator Operations
C51: Maxim 390/400 Interrupts in Alternate 64k Code Page
C51: Memory Allocation
C51: Memory Classes for Strings and String Pointers
C51: Memory Types for Maxim 390 Contiguous Mode
C51: Microchip/Atmel T89C51CC01 Internal EEPROM Support
C51: Missing Multiple DPTR support for some ATMEL Devices
C51: Mixing C and Assembly
C51: Mixing Memory Models
C51: Mixing Memory Models and Memory Areas
C51: Mixing Reentrant Functions and Non-reentrant Functions
C51: Mixing SRAM and NVRAM
C51: Modifying the Startup Routines
C51: Multiple Large Objects in HDATA
C51: Multiple Variables at the Same Address
C51: Naming Conventions for Function Symbols
C51: Non-reentrant PRINTF
C51: Null Pointer Compare Fails When Mixing Memory Types
C51: Null Pointer Compare Fails With MALLOC and CALLOC
C51: NXP/Philips 87C51RC 512-byte Internal RAM Support
C51: Obtaining the Parity of a Character
C51: Offsets with Far Memory Access
C51: On-Chip Banked PDATA Support
C51: On-Chip Memory Configuration for  STM UPSD Devices
C51: Optimized C with Inline Assembler
C51: Optimizer Levels and Volatile Variables
C51: Optimum Code for Bit-to-Byte Conversion
C51: Order of Bitfields
C51: Out of Stack Space
C51: Passing Parameters to Indirectly Called Functions
C51: Performing a Software Reset
C51: Philips P8XC557E8 Internal AUX-RAM Support
C51: Physical Location of Registers
C51: Placing Far Variables at Absolute Locations
C51: Pointer Storage Size
C51: Porting Code from PL/M-51
C51: Porting From Older to Newer Tools
C51: Porting IAR xmem to Keil XDATA
C51: Preprint Directive
C51: Preventing Common Block Optimization
C51: PRINTF Gives Wrong Values
C51: Problems with #pragma ASM
C51: Problems with Function Pointers Overwriting Variables
C51: Program Never Reaches Main
C51: Programming the Infineon/Cypress CY3671 for GPIF Access
C51: Programs That Use One Registerbank
C51: Program-wide Source/Assembly Listing File
C51: Purpose of the INIT.A51 File
C51: RAMSIZE for the NXP 87C528
C51: Reading Code Space
C51: Reading from an Input Port
C51: Reading Port Input Versus Port Latch
C51: READ-MODIFY-WRITE Registers
C51: Redirecting Interrupt Vectors
C51: Redirecting Serial I/O to Other UARTs
C51: redistribution of Keil source files
C51: Reentrancy Issues With the Dallas 390 Math Accelerator
C51: Reentrant Functions and the Reentrant Stack Pointer
C51: Reentrant Functions and Variables
C51: Reentrant Stack Needed for Reentrant Library Functions?
C51: REGFILE  Directive
C51: Register Variables
C51: Relocating Autovector Interrupts on the Infineon/Cypress EZ-USB
C51: Relocating Interrupt Vector Tables
C51: Relocating Program Code in C
C51: Removing and Disabling Warning 13 (RECURSIVE CALL)
C51: Removing Linker Warning L16 (Uncalled Segment)
C51: Replace AJMP/ACALL With LJMP/LCALL
C51: Replacing MEM and STR Library Routines
C51: Reserve Memory at Absolute Bank Addresses
C51: Reserving Code Space
C51: Reserving Memory Accessed With XBYTE and XWORD
C51: Reserving Space in Code Banks
C51: Reserving Space in Code Memory
C51: Reset Vector Does Not Jump to C Code
C51: RET_ISTK Directive
C51: RET_PSTK Directive
C51: RET_XSTK Directive
C51: re-use Library Functions from a Boot Application
C51: ROM(COMPACT)
C51: Runtime Determination of Last XDATA Address Used
C51: Saving Registers in Interrupts
C51: Sbit Modifications Not Correctly Written to Memory
C51: Scanf %F fails with User-Defined GetKey function
C51: SCANF() Behaves Incorrectly
C51: Selecting Different Register Banks in a Function
C51: Setting or Clearing Bits in the Accumulator
C51: Setting Program Start Address
C51: Setting the Location of the Reentrant Stack Pointer
C51: Side-effects of VPRINTF and VSPRINTF
C51: Signed Bit Field Not Supported
C51: Software Reset in C
C51: Source Code Doesn't Display in My Emulator
C51: Specifying Header Paths from the Command Line
C51: Splitting Code Between EPROM and Flash/EEPROM
C51: Stack and Reentrant Stack Symbolic Names
C51: Stack Pointer Initialization in Startup Code
C51: Stack Requirements of Run-Time Library Functions
C51: Stack Usage
C51: Starting a Function at a Specific Address
C51: Static Data Variables
C51: Static Pointers vs Explicitly Placed Variables
C51: STDARG.H Questions
C51: Storage of Local Variables
C51: String Table in XDATA
C51: Support for Atmel AT89C
C51: Support for C505 Data Pointers
C51: Support for Devices with less than 2K Code Space
C51: Support for Floating-point Numbers
C51: Support for -I and -D Makefile Commands
C51: Support for Philips P89C51RC & P89C51RC2
C51: Support for the 8744 SDLC Microcontroller
C51: Support for the Microchip/Atmel T80C51 Devices
C51: Support for the Nuvoton(Winbond) W77C32
C51: Support for the NXP (Philips) 87C652
C51: Support for the SST89C5X
C51: Support of Non-standard Chip Features
C51: Supported Data Types
C51: Suppressing Calls to Function From Common Code Blocks
C51: Switch/Case Statements
C51: TCP/IP Support 8052
C51: Transmitting Floating-Point Numbers
C51: TYPEDEF ENUM
C51: Unable to Find Include Files Using Long Directory Names
C51: Unexpected Value When Assigning a Bitfield Value to a Bit
C51: Unresolved External ?C?CLDOPTR
C51: Unresolved External Error Using Assembler and C
C51: Unresolved External Symbol ?C?XPAGE1SFR
C51: Unresolved External with Far Memory Type
C51: Unused Opcodes
C51: Updating the Program Counter on the Stack
C51: Use of Dual Data Pointers
C51: Use of F0 and F1 in PSW
C51: Use Specific Address Range for MOVC
C51: Using #IF to Test Conditions
C51: Using 1K SRAM on Dallas DS89C420
C51: Using ACC, B, PSW, DPL, DPH and R0-R7 Register in C-Source Code
C51: Using Auto-decrement/auto-toggle With Dallas 390 & 400
C51: Using C51 6.12 with a Version 8 Installation
C51: Using C51 Version 7.50 with a C51 Version 8/9 PSN
C51: Using Memory From 00H To 1FH
C51: Using Memory-mapped Devices
C51: Using Microcontrollers With On-chip XDATA
C51: Using More Than 2K of Code Space
C51: Using MOVX to Update Flash on C8051F320
C51: Using Multi-Function Pins on ATMEL AT89C51RD2
C51: Using Non-reentrant Function in Main and Interrupts
C51: Using NOP in C
C51: Using Only One Registerbank
C51: Using PDATA Memory
C51: Using PDATA on ADuC83x and ADuC84x Devices
C51: Using PDATA Variables on Infineon XC800
C51: Using ROM Library in Infineon XC8XX Devices
C51: Using SETJMP and LONGJMP with Code Banking and RTX51
C51: Using sfr16 for 16-bit SFRS
C51: Using SIO0 and SIO1 with DALLAS 320
C51: Using the DS87C520 Internal SRAM
C51: Using the On-chip XDATA of the Infineon C515C
C51: Using TI/Chipcon CC Debugger With Keil µVISION
C51: Using Timed Access Registers on Dallas Parts
C51: Using XRAM on the NXP 80C66x and 80C51Rx Devices
C51: Variable Banking Configuration Options
C51: Variable Zero Initialization
C51: Variables Created in XDATA Using Small Model
C51: Variables in Large and Compact Memory Model Don't Work
C51: Verifying Look-Up Table Values
C51: Version 6 Release Notes
C51: Warning 206 (Missing Function Prototype)
C51: Warning 259 (Pointer: Different Mspace)
C51: Warning 276 (Constant in Condition Expression)
C51: Warning 317 (Redefinition of Macro)
C51: Warning C500 (Missing Device) After Update
C51: Warning C500: Serial Number Expired
C51: What Are the Limits for Floating-point Numbers?
C51: What Is ?C?LIB_DATA Used for?
C51: What Is the Address Range Acceptable by XBYTE Macro
C51: What is the Best Way to Disable/Re-Enable Interrupts?
C51: What's in the ?CO? Segments?
C51: When are Functions Re-Entrant?
C51: When/Where Are Global and Static Variables Initialized?
C51: Where can I find Evatronix devices in µVISION?
C51: Where Is the Absolute OMF Object Module?
C51: Which 8051-based Chips Are Supported?
C51: Which Startup Code to Use
C51: Why Does VA_ARGS Work?
C51: Why Number of Bytes Passed to Printf is Limited
C51: Wide Character Support
C51: Writing Interrupt Routines
C51: Writing to the Output Ports
C51: Wrong Code Generated for Double Indirection
C51: XC800: 'Use Multiple DPTR Registers' May Cause Runtime Errors
C51: xdata Banking with R8051XC
C51: XDATA Overlaying
C51: XDATA Problems Porting C51 Code to C251
C51: XWORD Macro Questions
  
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.