ARM Technical Support Knowledge Articles
C51 C Compiler Knowledge Articles
Knowledge Articles in this section
#PRAGMA MESSAGE AND #PRAGMA ERROR
'N' DOES NOT WORK IN PRINTF() STATEMENTS
16-BIT MULTIPLY WITH 32-BIT RESULT
16MB XDATA RAM WITH ANALOG DEVICES MICROCONVERTER
256 GLOBAL SYMBOLS LIMIT
4K-LIMITED COMPILER FOR THE PHILIPS LPC FAMILY
64-BIT FLOATING-POINT OPERATIONS
8051 PORT FOR JEAN LABROSSE'S MICRO C/OS-II RTOS
8051 SERIAL I/O IN C
80C517A MA-STEP SHIFT BUG
80C751.LIB IS MISSING FROM EVALUATION CD-ROM
80C751.LIB MISSING FROM RELEASE TOOLS
8K LIMIT ON MEMORY ALLOCATION
?C? LIBRARY ROUTINES
?C? LOAD AND STORE LIBRARY ROUTINES
?C? LONG/FLOAT MATH LIBRARY ROUTINES
?C?COPYXX UNRESOLVED EXTERNAL FROM EVAL VERSION
ABSOLUTE ACCESS FOR FAR VARIABLES
ABSOLUTE ADDRESSES
ABSOLUTE FAR VARIABLES DO NOT CALL IBANKING FUNCTIONS
ABSOLUTE FUNCTION ADDRESS
ABSOLUTE MEMORY ACCESSES TO DALLAS 390'S FAR MEMORY
ABSOLUTE REGISTERS AND USING DIRECTIVE
ACCESS LOW/HIGH BYTES OF A INTEGER VARIABLE
ACCESS TO PAGED SFR REGISTERS
ACCESSING A POINTER IN ASSEMBLER
ACCESSING A STRUCTURE VIA A POINTER
ACCESSING ASSEMBLY VARIABLES FROM C
ACCESSING BITS ON P5 OF PHILIPS 552
ACCESSING EXTERNAL SFR'S IN A C PROGRAM
ACCESSING I/O PORTS IN C
ACCESSING INTERNAL EEPROM ON ATMEL 89S9252
ACCESSING REGISTER BANKS IN C
ACCESSING SPECIAL FUNCTION REGISTERS IN C
ACCESSING SPECIFIC MEMORY BYTES
ACCESSING THE DS390 ON-CHIP 4K SRAM AND STACK
ADDING C FUNCTIONS TO EXISTING ASSEMBLER CODE
ADDING INTRINSIC FUNCTIONS
ADDING TO THE STARTUP CODE
ADDRESS SPACE OVERFLOW WITH FAR CONST
ADUC812 COMPATIBILITY
ADUC812 EXAMPLE PROGRAM
AFTER REGLIVE SUCCESS MESSAGE
ALTERNATE STARTUP CODE
ANALOG DEVICES ADUC812 EXTERNAL CODE PROBLEMS
ARE 32-BIT SFRS SUPPORTED?
ARE CHECKSUM LIBRARY ROUTINES INCLUDED?
ARE CODE AND DATA OBJECTS RELOCATABLE?
ARE LINK AND MAKE FUNCTIONS AVAILABLE?
ARE RAM BIT-ADDRESSABLE REGISTERS SUPPORTED?
ARE UNIONS SUPPORTED IN C51
AREGS/NOAREGS DIRECTIVE
ARITHMETIC PROBLEMS WITH CHAR TYPES
ARRAY INDEX USES BYTE INSTEAD OF WORD
ASM/ENDASM DIRECTIVE
ASSIGNING AN I/O ADDRESS TO A VARIABLE
ATMEL EEPROM PROGRAMMING SUPPORT
ATMEL T89C51CC01 INTERNAL EEPROM SUPPORT
ATOF LIBRARY ROUTINE USES BIT VARIABLES
AVOIDING ACALL PROBLEMS IN DS80C390 REV BX DEVICES
AVOIDING MOVC FETCHES FROM CODE SPACE
AVOIDING STARTUP INITIALIZATION OF STATIC VARIABLES
BAD JUMP IN .SRC FILE
BANK SWITCHING COMMON AREA
BANK SWITCHING USING ASSEMBLY
BANK TABLE ENTRIES FOR INDIRECTLY CALLED FUNCTIONS
BATTERY-BACKED NON-VOLATILE MEMORY
BIT ADDRESSABLE ARRAYS
BIT FIELD UNIONS DON'T WORK AS EXPECTED
BIT FIELD UNIONS GIVE STRANGE RESULTS
BIT FORMAT SPECIFIERS FOR PRINTF
BITS USED FOR BANK SELECTION
BOOTLOADER AND ISP FOR THE CYGNAL C8051FXX DEVICES
BROWSER INFORMATION IN OMF51 FILE MAKES EMULATOR FAIL
CALCULATING BAUD RATES FOR THE 8051 SERIAL PORT
CALCULATING CODE SPACE FOR BANK SWITCHING
CALCULATING STACK SIZE
CALCULATING TIMER SETTINGS FOR SERIAL I/O
CALL C FUNCTIONS WITHIN STARTUP CODE
CALLING ASSEMBLY ROUTINES FROM C
CALLING FUNCTIONS FROM INTERRUPTS
CALLING PRINTF IN AN INTERRUPT
CAN STRUCT MEMBERS RESIDE IN DIFFERENT MEMORY SPACES?
CANNOT FIND DEMO USB DRIVERS
CHANGING L51_BANK TO OUTPUT INVERTED SIGNALS
CHANGING OPTIMIZER LEVEL FOR A SINGLE FUNCTION
CHANGING THE ORDER OF OBJ FILES MAKES PROGRAM CRASH
CHECKING FOR STACK UNDERFLOW AT RUNTIME
CHECKING TOOL FOR XC800 CHIP BUG
CLEARING THE SCANF INPUT STREAM
CODE BANKING LATCH ON EXTRA ADDRESS LINES
CODE BANKING WITH ON-CHIP AND OFF-CHIP MEMORY
CODE DIRECTIVE
CODE GENERATOR SUPPORT FOR MULTIPLE DATA POINTERS
CODE STRINGS IN STRUCTS ARE NOT MERGED
COMMAND LINE GLOBAL REGISTER OPTIMIZATION
COMMENTS IN ASSEMBLY BLOCKS
COMPACT DIRECTIVE
COMPILER DIRECTIVE FOR LINKER-LEVEL OPTIMIZATION
COMPILER DIRECTIVE FOR OMF-51 EXTENDED FORMAT
COMPILER DIRECTIVE FOR OMF2 FILE FORMAT
COMPILER DOES NOT INITIALIZE R1/R2/R3 FOR ?C?CSTOPTR
COMPILER DOESN'T WORK WITH BORLAND MAKE
COMPILER GENERATES ZERO LENGTH JUMP
COMPILER IS UNABLE TO FIND INCLUDE FILES
COMPILER OPTIMIZES OUT NECESSARY XDATA READS
COMPILER USES DPL AND DPH FOR VARIABLES
COND/NOCOND DIRECTIVE
CONFIGURABLE SFR BIT ACCESSES
CONFIGURING FOR THE DALLAS 390 CONTIGUOUS MODE
CONFIGURING PPAGE AND PPAGEENABLE
CONFIGURING XDATA BANKING
CONST VARIABLE BANKING WITH SILABS C8051F12X DEVICES
CONST VARIABLE STORAGE LOCATION
CONSTANT ARRAYS LARGER THAN 64KB
CONSTANT FLOATING POINT NUMBER '0E'
CONSTANT VALUES AT FIXED ADDRESSES IN CODE SPACE
CONTENTS OF THE ?C_INITSEG SEGMENT
CONTROL DIRECTIVES
CONVERTING BIG ENDIAN TO LITTLE ENDIAN
CONVERTING IAR BANKED CODE TO KEIL
CONVERTING PORT.BIT CODE FROM IAR
CORRECTED SETJMP.H FOR CX51
CORRECTLY DECLARING VARIABLES WITH MEMORY SPACES
CORRUPTION OF DPTR WHEN USING MODP2
CREATE A PATCH VECTOR TABLE
CREATING A FIXED STACK SEGMENT
CREATING CODE BANKING PROGRAMS
CREATING CPU HEADER FILES
CREATING HEX FILES FOR THE CYPRESS USB DEVICES
CREATING OUTPUT FILES FOR OLDER PHILIPS PDS51 EMULATORS
DALLAS 390 HANGS ON MATH OPERATIONS
DALLAS 390 MATH ACCELERATOR OPERATIONS
DALLAS 390/400 INTERRUPTS IN ALTERNATE 64K CODE PAGE
DALLAS 390/400/520 STRUCTURE POINTER INCREMENT PROBLEM
DALLAS 390/400/5240 REENTRANT FUNCTION
DALLAS 80C420 OR 89C420 HEADER FILE?
DALLAS DS5240 MODULO-ARITHMETIC ACCELERATOR
DALLAS TINI BOARD SOFTWARE PROBLEMS
DASHES IN FILENAMES
DATA OVERLAYING PROBLEM WITH STRUCT PARAMETERS
DATA OVERLAYING WITH RTOS APPLICATIONS
DATA TYPE QUESTION
DATA_GROUP AND STACK PROBLEMS
DEBUG DIRECTIVE
DEBUGGER WON'T STOP ON BREAKPOINTS, ON ST UPSD33XX
DECLARING 2 VARIABLES AT THE SAME ADDRESS
DECLARING BDATA AND SBIT VARIABLES
DECLARING EXTERNAL SBITS
DEFAULT PAGELENGTH IS 68, NOT 60
DEFAULT STARTUP AND INITIALIZATION CODE
DEFINE DIRECTIVE
DEFINING THE MINIMUM STACK SIZE
DETERMINING THE LOCATION OF ASSEMBLER INSTRUCTIONS
DIFFERENCES BETWEEN C51 V7.50 AND V7.50A
DIFFERENCES BETWEEN V6.10 AND V6.10A
DIRECTING PRINTF OUTPUT TO SECOND SERIAL PORT
DISABLE DIRECTIVE
DISABLING INTERRUPTS ON SILICON LABS F12X/F13X DEVICES
DIVISION DOESN'T WORK
DIVISION PROBLEMS WITH THE DALLAS 390 / DALLAS 400
DO THE KEIL TOOLS WORK WITH ALL 8051 CHIPS?
DO XDATA AND CODE MEMORY OVERLAP?
DOES ENUM TYPE CHECKING WORK?
DOES THE RUN-TIME LIBRARY DISABLE INTERRUPTS?
DOUBLE PRECISION MATH ROUTINES
DS5000 REAL-TIME CLOCK EXAMPLE CODE
DS80C320.H INCLUDE FILE IS INCORRECT
DS80C390 ARITHMETIC ACCELERATOR
DUAL DATA POINTER PERFORMANCE INCREASE
DUAL DATA POINTERS AND CYPRESS EZ-USB
DUAL DATA POINTERS AND PHILIPS
DUAL DATA POINTERS FOR DALLAS PARTS
EFFICIENT CODE FOR BYTE ACCESS CONVERSION TO LONG
ELIMINATING 16-BIT POINTER INCREMENTS
EMPTY RELOCATABLE SEGMENT
ENUM EXAMPLES
ERROR 146 (INVALID BASE ADDRESS)
ERROR 166 (ARRAY OF FUNCTIONS)
ERROR 200 (LEFT SIDE OF '.' REQUIRES STRUCT/UNION)
ERROR 230 (UNKNOWN STRUCT/UNION/ENUM TAG)
ERROR 258 (MSPACE ILLEGAL IN STRUCT/UNION)
ERROR 274 (ABSOLUTE SPECIFIER ILLEGAL)
ERROR C202 USING XBYTE ABSOLUTE ADDRESSING
ERROR C249 (SPECIAL INITIALIZATION EXCEEDS 8K)
ERROR C267 ('FUNCTION': REQUIRES ANSI-STYLE PROTOTYPE)
ERRORS USING SBITS AND SFRS
EVAL AND THE FLOATING-POINT LIBRARY
EVALUATION COMPILER FOR CYPRESS EZ-USB FAMILY
EXAMPLE PROGRAMS FOR THE DALLAS 390 CONTIGUOUS MODE
EXAMPLE PROGRAMS FOR THE PHILIPS MX DEVICES
EXECUTING SPECIAL INSTRUCTIONS IMMEDIATELY AFTER RESET
EXPECT LCALL BUT SEE LJMP
EXPORTING SYMBOLS FOR EMULATORS
EXTERN DECLARATIONS USING _AT_
EXTERN VARS AND INLINE ASSEMBLY
EXTERNAL MEMORY ACCESSED FOR DATA MEMORY POINTER
EXTERNAL SFR ACCESS FOR 8051 PROGRAMS
EZ-USB STARTUP CODE
FAR DATA POINTER BOUNDARIES
FAR VAR _AT_ COMPARED TO CAST VALUE
FASTER INTEGER DIVISION
FATAL ERROR (CANNOT OPTIMIZE FUNCTION)
FATAL ERROR (MORE THAN 256 SEGMENTS)
FATAL ERROR 210 (RTX51.LIB NOT FOUND)
FATAL ERROR WHEN USING #PRAGMA SRC
FLASH MEMORY ON THE ADUC812
FLOATFUZZY DIRECTIVE
FLOATING POINT LIBRARY ROUTINES REGISTER USAGE
FLOATING-POINT REENTRANCY IN ISR?
FORMAT OF ?C_INITSEG SEGMENT
FORMAT OF __DATE__ MACRO HAS CHANGED
FORMFEEDS IN LISTING FILES
FULL VERSION OF TOOLS SHOW CODE SIZE LIMIT
FUNCTION OF ?C?ICALL AND ?C?ICALL2
FUNCTION POINTERS IN CONTIGUOUS MODE
FUNCTION PROTOTYPES FOR REENTRANT FUNCTIONS
FUNCTIONS THAT ARE REENTRANT
GAPS IN DATA SPACE
GENERAL PURPOSE SFR INTERFACE
GENERATING HEX FILES FOR CODE BANKING PROGRAMS
GET ERROR A45: USING IN-LINE ASSEMBLER
GETCHAR ECHOS CHARACTERS
GETTING EVAL VERSION USING SILABS IDE
GETTING INLINE ASSEMBLY TO WORK
GETTING INTERRUPTS WORKING
GETTING MANUALS
GETTING THE CODE BANK OF A FUNCTION
GETTING THE CURRENT BANK NUMBER
GLOBAL OR STATIC VARIABLES NOT BEING INITIALIZED
GLOBAL VARIABLE PROBLEM WITH DALLAS 390 CONTIGUOUS MODE
HALT BUTTON DOES NOT STOP SIMULATOR EXECUTION
HANDLING UNUSED INTERRUPTS
HEADER FILE FOR THE PHILIPS 87C554
HOW ARE FUNCTION PARAMETERS HANDLED?
HOW BIG CAN A BINARY NUMBER BE?
HOW DO I READ A LATCH?
HOW TO DIRECTLY ADDRESS MULTIPLE CONSECUTIVE SFRS
HOW TO GIVE DESCRIPTIVE NAMES TO PORT PINS
HOW TO USE 256 BYTES DATA SPACE
HYPHENS ARE NOT ALLOWED IN INCLUDE FILE FILENAMES
IDATALOOP NEVER ENDS
IMPLEMENTING XDATA BANKING
IN-APPLICATION PROGRAMMING (IAP) ON PHILIPS LPC9XX
IN-LINE ASM GIVES COMPILER WARNINGS
IN-SYSTEM FLASH PROGRAMMING (PART 1)
IN-SYSTEM FLASH PROGRAMMING (PART 2)
IN-SYSTEM FLASH PROGRAMMING WITH ROM SIZE > 64KB
INCLUDE FILE FOR ATMEL 89S8252
INCLUDE FILES IN THE DEPENDENCY CHECK
INCORRECT ACCESSING OF 2D ARRAY IN STRUCTURE
INCORRECT OPERATION OF PRINTF AND SIZEOF
INCORRECT VALUE STORED IN CHAR
INDENTIFY UNCALLED LIBRARY ROUTINES
INDIRECT FUNCTION CALLS WITH CODE BANKING
INDIRECTLY ACCESSING 8051 SFRS
INDIRECTLY CALLED REENTRANT FUNCTIONS
INFINEON C517A A/D EXAMPLE PROGRAM
INFINEON WATCHDOG TIMER RESETS SIMULATOR
INFINEON XC800 MDU SUPPORT
INITIALIZING AN ABSOLUTELY LOCATED VARIABLE
INITIALIZING FAR DATA
INITIALIZING THE 320/520 2ND SERIAL PORT
INITIALIZING XDATA OVER FF00H
INIT_MEMPOOL REQUIRES MORE MEMORY THAN IS ACTUALLY USED
INLINE ASSEMBLY
INLINE ASSEMBLY GENERATES TARGET OUT OF RANGE
INTEGER PROMOTION
INTERFACE FOR IAP FUNCTIONS ON PHILIPS DEVICES
INTERRUPT CODE NOT IN CORRECT SPACE
INTERRUPT SERVICE ROUTINES LOCATED AT WRONG ADDRESSES
INTERRUPT VECTOR NUMBERS
INTERRUPT-DRIVEN SERIAL I/O
INTERRUPTS AND LOCAL VARIABLES
INTERRUPTS NOT GENERATED
INTERVAL DIRECTIVE
INTPROMOTE/NOINTPROMOTE DIRECTIVE
INTVECTOR/NOINTVECTOR DIRECTIVE
INVALID SERIAL NUMBER/UNABLE TO INSTALL FROM CD
IS RETURN REQUIRED FOR VOID FUNCTIONS?
IS STARTUP.A51 REQUIRED?
IS THE PHILIPS XA SUPPORTED?
IS THERE A LITTLE ENDIAN/BIG ENDIAN COMPILER OPTION?
IS THERE A TRANSLATOR FOR PL/M-51 TO C?
IS V5.1 REALLY V5.1?
KBHIT LIBRARY ROUTINE IS MISSING
L51_BANK.A51 ASSEMBLES WITH ERRORS
LARGE DIRECTIVE
LATENCY OF INTERRUPT SERVICE ROUTINES
LIBRARY PROBLEMS WITH DALLAS CONTIGUOUS MODE
LIMITS ON FUNCTIONS WITH VARIABLE-LENGTH ARGUMENT LISTS
LINK INTERBANK CALL TABLE ?BANK?SELECT
LINKER WARNINGS AFTER UPGRADING SOFTWARE
LINKING PROGRAMS FOR DS80C400 USING START400.A51 FAILS
LINKING V6 LIBRARIES WITH V5 PROGRAMS
LISTINCLUDE DIRECTIVE
LITTLE-ENDIAN CAN REGISTERS, BIG-ENDIAN COMPILER
LJMP & LCALL INSTEAD OF AJMP & ACALL
LJMP INSTRUCTIONS IN INLINE ASSEMBLER CORRUPTED
LOCAL VARIABLES PRESERVE VALUES BETWEEN FUNCTION CALLS
LOCATE STRUCT TO SFR SPACE
LOCATING A TABLE OF POINTERS AT A SPECIFIC ADDRESS
LOCATING A VARIABLE IN A REGISTER
LOCATING DATA STRUCTURES IN XDATA IN THE ORDER DEFINED
LOCATING FUNCTION TABLES IN CODE MEMORY
LOCATING INITIALIZED VARIABLES AT ABSOLUTE ADDRESSES
LOCATING INTERRUPTS IN EVAL SOFTWARE
LOCATING OBJECT FILES AT SPECIFIC STARTING ADDRESSES
LOCATING THE STACK AFTER IDATA VARIABLES
LOCATING VARIABLES IN MULTIPLE XDATA AREAS
LOCATING VARIABLES TO FAR CONST SPACE
LOG AND POW FUNCTION PROBLEMS
LONG FILE NAMES
LONG POINTER ARITHMETIC
LROL AND LROR FUNCTIONS ARE NOT INTRINSIC
Library is not created
MATH FUNCTIONS
MATH OPERATIONS SUPPORTED
MAXARGS DIRECTIVE
MEMORY ALLOCATION
MEMORY CLASSES FOR STRINGS AND STRING POINTERS
MEMORY TYPES FOR THE DALLAS 390 CONTIGUOUS MODE
MISSING UART SFR DEFINITIONS FOR PHILIPS 8XC51MX
MIXING C AND ASSEMBLY
MIXING MEMORY MODELS
MIXING MEMORY MODELS AND MEMORY AREAS
MIXING REENTRANT FUNCTIONS AND NON-REENTRANT FUNCTIONS
MIXING SRAM AND NVRAM
MOD517/ NOMOD517 DIRECTIVE
MODDP2/NOMODDP2 DIRECTIVE
MODIFYING CONSTANT STRUCTURES
MODIFYING THE STARTUP ROUTINES
MULTIPLE LARGE OBJECTS IN HDATA
MULTIPLE VARIABLES AT THE SAME ADDRESS
Missing Multiple DPTR support for some ATMEL Devices
NAMING CONVENTIONS FOR FUNCTION SYMBOLS
NO SIMULATION OF A/D CONVERTER
NOAMAKE DIRECTIVE
NOEXTEND DIRECTIVE
NOEXTEND DOES NOT WORK PROPERLY
NON-REENTRANT PRINTF
NOREGPARMS DOES NOT WORK ON REENTRANT FUNCTIONS
NULL POINTER COMPARE FAILS WHEN MIXING MEMORY TYPES
NULL POINTER COMPARE FAILS WITH MALLOC AND CALLOC
OBJECT/NOOBJECT DIRECTIVE
OBJECTEXTEND DIRECTIVE
OBTAINING THE PARITY OF A CHARACTER
OFFSETS WITH FAR MEMORY ACCESS
ON-CHIP BANKED PDATA SUPPORT
ON-CHIP MEMORY CONFIGURATION FOR STM UPSD DEVICES
OPTIMIZED C WITH INLINE ASSEMBLER
OPTIMIZER LEVELS AND VOLATILE VARIABLES
OPTIMUM CODE FOR BIT TO BYTE CONVERSION
ORDER DIRECTIVE
ORDER OF BITFIELDS
OUT OF STACK SPACE
OVERLAYABLE SEGMENTS AND MEMORY MODELS
PAGELENGTH DIRECTIVE
PAGEWIDTH DIRECTIVE
PASSING PARAMETERS TO INDIRECTLY CALLED FUNCTIONS
PERFORMING A SOFTWARE RESET
PHILIPS 87C51RC 512-BYTE INTERNAL RAM SUPPORT
PHILIPS LPC SUPPORT
PHILIPS P8XC557E8 2KB INTERNAL RAM SUPPORT
PHYSICAL LOCATION OF REGISTERS
PLACING FAR VARIABLES AT ABSOLUTE LOCATIONS
POINTER ASSIGNMENT CRASHES IN THE CONTIGUOUS MODE
POINTER STORAGE SIZE
POP INTRINSIC GENERATES UNRESOLVED EXTERNAL
PORTING CODE FROM PL/M-51
PORTING FROM OLDER TO NEWER TOOLS
PORTING IAR XMEM TO KEIL XDATA
POST INCREMENT ON LONG FAR TYPES
PREPRINT DIRECTIVE
PREVENTING COMMON BLOCK OPTIMIZATION
PRINT/NOPRINT DIRECTIVE
PRINTF GIVES WRONG VALUES
PRINTF LIBRARY ROUTINE PROBLEM WITH 0-LENGTH PRECISION
PROBLEMS IN SCANF AND SSCANF
PROBLEMS INITIALIZING BITFIELD WITH POINTER
PROBLEMS SOLVED IN C51 V5.50
PROBLEMS SOLVED IN C51 V6.01
PROBLEMS SOLVED IN C51 V6.02
PROBLEMS SOLVED IN C51 V6.02 - V6.14
PROBLEMS SOLVED IN C51 V6.12
PROBLEMS SOLVED IN C51 V6.20 - V6.23
PROBLEMS SOLVED IN C51 V7.00 - V7.01
PROBLEMS USING PRINTF
PROBLEMS WHEN LOCATING FUNCTIONS IN CODE BANKS
PROBLEMS WITH #PRAGMA ASM
PROBLEMS WITH FUNCTION POINTERS OVERWRITING VARIABLES
PROBLEMS WITH HYPHENS IN FILENAMES AND PROJECT NAMES
PROBLEMS WITH LONG COMPARISONS TO 0 IN V6.21
PROBLEMS WITH REGISTER OPTIMIZATION IN V6.22
PROGRAM HANGS CASTING INT TO FLOAT ON DALLAS 400
PROGRAM NEVER REACHES MAIN
PROGRAM-WIDE SOURCE/ASSEMBLY LISTING FILE
PROGRAMMING THE CYPRESS CY3671 FOR GPIF ACCESS
PROGRAMS THAT USE ONE REGISTERBANK
PURPOSE OF THE INIT.A51 FILE
RAMSIZE FOR THE PHILIPS 87C528
RE-USE LIBRARY FUNCTIONS FROM A BOOT APPLICATION
READ-MODIFY-WRITE REGISTERS
READING CODE SPACE
READING FROM AN INPUT PORT
READING PORT INPUT VERSUS PORT LATCH
REDIRECTING INTERRUPT VECTORS
REDIRECTING SERIAL I/O TO OTHER UARTS
REENTRANCY ISSUES WITH THE DALLAS 390 MATH ACCELERATOR
REENTRANT FUNCTIONS AND THE REENTRANT STACK POINTER
REENTRANT FUNCTIONS AND VARIABLES
REENTRANT STACK NEEDED FOR REENTRANT LIBRARY FUNCTIONS?
REGFILE DIRECTIVE
REGISTER USAGE OVER XBANKING.A51 FUNCTIONS
REGISTER VARIABLES
REGISTERBANK DIRECTIVE
RELOCATING AUTOVECTOR INTERRUPTS ON THE CYPRESS EZ-USB
RELOCATING INTERRUPT VECTOR TABLES
RELOCATING PROGRAM CODE IN C
REMOVING AND DISABLING WARNING 13 (RECURSIVE CALL)
REMOVING LINKER WARNING L16 (UNCALLED SEGMENT)
REPLACE AJMP/ACALL WITH LJMP/LCALL
REPLACING MEM AND STR LIBRARY ROUTINES
RESERVE MEMORY AT ABSOLUTE BANK ADDRESSES
RESERVING CODE SPACE
RESERVING MEMORY ACCESSED WITH XBYTE AND XWORD
RESERVING SPACE IN CODE BANKS
RESERVING SPACE IN CODE MEMORY
RESET VECTOR DOES NOT JUMP TO C CODE
RET_ISTK DIRECTIVE
RET_PSTK DIRECTIVE
RET_XSTK DIRECTIVE
ROM DIRECTIVE
ROM(COMPACT)
RTX51 AND TRISCEND BANKING WITH CUSTOM L51_BANK.A51
RUNTIME DETERMINATION OF LAST XDATA ADDRESS USED
SAVE/RESTORE DIRECTIVE
SAVING EXTRA VARIABLES ON THE STACK
SAVING REGISTERS IN INTERRUPTS
SBIT MODIFICATIONS NOT CORRECTLY WRITTEN TO MEMORY
SCANF %F FAILS WITH USER-DEFINED GETKEY FUNCTION
SCANF() BEHAVES INCORRECTLY
SELECTING DIFFERENT REGISTER BANKS IN A FUNCTION
SETTING OR CLEARING BITS IN THE ACCUMULATOR
SETTING PROGRAM START ADDRESS
SETTING THE LOCATION OF THE REENTRANT STACK POINTER
SIDE-EFFECTS OF VPRINTF AND VSPRINTF
SIGNED BIT FIELD NOT SUPPORTED
SMALL DIRECTIVE
SOFTWARE RESET IN C
SOME HLP FILES DON'T WORK UNDER WINDOWS
SOURCE CODE DOESN'T DISPLAY IN MY EMULATOR
SPECIFYING HEADER PATHS FROM THE COMMAND LINE
SPLITTING CODE BETWEEN EPROM AND FLASH/EEPROM
SRC DIRECTIVE
SROM MACROS RETURN INCORRECT ADDRESSES
SSCANF RETURNS INCORRECT NUMBER OF PARAMETERS SCANNED
STACK AND REENTRANT STACK SYMBOLIC NAMES
STACK POINTER INITIALIZATION IN STARTUP CODE
STACK REQUIREMENTS OF RUN-TIME LIBRARY FUNCTIONS
STACK UTILIZATION
STARTING A FUNCTION AT A SPECIFIC ADDRESS
STARTUP CODE UNRESOLVED EXTERNAL (?B_SWITCH0)
STATIC DATA VARIABLES
STATIC POINTERS VS EXPLICITLY PLACED VARIABLES
STDARG.H QUESTIONS
STDDEF.H CREATES WARNING
STORAGE OF LOCAL VARIABLES
STRING TABLE IN XDATA
STRUCTURE MEMORY SPACE DETAILS IN LISTING FILES
SUPPORT FOR -I AND -D MAKEFILE COMMANDS
SUPPORT FOR C505 DATA POINTERS
SUPPORT FOR DEVICES WITH UNDER 2K CODE SPACE
SUPPORT FOR FLOATING-POINT NUMBERS
SUPPORT FOR INLINE KEYWORD
SUPPORT FOR PHILIPS P89C51RC & P89C51RC2
SUPPORT FOR THE 515C EIGHT DATA POINTERS
SUPPORT FOR THE 8744 SDLC MICROCONTROLLER
SUPPORT FOR THE ATMEL AT89C
SUPPORT FOR THE ATMEL T80C51 DEVICES
SUPPORT FOR THE DALLAS 390
SUPPORT FOR THE PHILIPS 80C51RX
SUPPORT FOR THE PHILIPS 87C652
SUPPORT FOR THE PHILIPS 87LPC764
SUPPORT FOR THE PHILIPS P89C66X DEVICES
SUPPORT FOR THE SIEMENS DECT472X
SUPPORT FOR THE SST89C5X
SUPPORT FOR THE WINBOND W77C32
SUPPORT OF NON-STANDARD CHIP FEATURES
SUPPORTED DATA TYPES
SUPPRESSING CALLS TO FUNCTION FROM COMMON CODE BLOCKS
SWITCH/CASE STATEMENTS
SYMBOLS DIRECTIVE
TCP/IP SUPPORT
TRANSMITTING FLOATING-POINT NUMBERS
TYPEDEF ENUM
UNABLE TO FIND INCLUDE FILES USING LONG DIRECTORY NAMES
UNRESOLVED EXTERNAL ?C?CLDOPTR
UNRESOLVED EXTERNAL ERROR USING ASSEMBLER AND C
UNRESOLVED EXTERNAL SYMBOL '?C?LIMUL'
UNRESOLVED EXTERNAL SYMBOL ?C?XPAGE1SFR
UNRESOLVED EXTERNAL WITH FAR MEMORY TYPE
UNUSED OPCODES
UPDATING THE PROGRAM COUNTER ON THE STACK
USB DONGLE NOT RECOGNIZED
USE OF DUAL DATA POINTERS
USE OF F0 AND F1 IN PSW
USE SPECIFIC ADDRESS RANGE FOR MOVC
USING #IF TO TEST CONDITIONS
USING 1K SRAM ON DALLAS DS89C420
USING > 64KB EXTERNAL SRAM WITH C8051F12X DEVICES
USING AUTO-DECREMENT/AUTO-TOGGLE WITH DALLAS 390 & 400
USING C51 V7.50 WITH A C51 V8 PSN
USING DONGLES WITH WINDOWS NT/2000
USING LIBRARY FUNCTIONS
USING MDU_F120 AND MDU_R515 IN UVISION
USING MEMORY FROM 00H TO 1FH
USING MEMORY-MAPPED DEVICES
USING MICROCONTROLLERS WITH ON-CHIP XDATA
USING MORE THAN 2K OF CODE SPACE
USING MOVX TO UPDATE FLASH ON C8051F320
USING MULTI-FUNCTION PINS ON ATMEL AT89C51RD2
USING NON-REENTRANT FUNCTION IN MAIN AND INTERRUPTS
USING NOOVERLAY WITH UVISION2
USING NOP IN C
USING ONLY ONE REGISTERBANK
USING PDATA MEMORY
USING PDATA ON ADUC83X AND ADUC84X DEVICES
USING PDATA VARIABLES ON INFINEON XC800
USING PHILIPS MX DEVICE WITH C51 / BL51
USING ROM LIBRARY IN INFINEON XC8XX DEVICES
USING SETJMP AND LONGJMP WITH CODE BANKING AND RTX51
USING SFR16 FOR 16-BIT SFRS
USING SIO0 AND SIO1 WITH THE DALLAS 320
USING THE 517 MULTIPLY/DIVIDE UNIT IN INTERRUPTS
USING THE C509 MULTIPLY/DIVIDE UNIT
USING THE CODEWRIGHT EDITOR
USING THE DS87C520 INTERNAL SRAM
USING THE ON-CHIP XDATA OF THE INFINEON C515C
USING THE PHILIPS 87C751
USING TIMED ACCESS REGISTERS ON DALLAS PARTS
USING VERSION 6.12 WITH A VERSION 8 INSTALLATION
USING XRAM ON THE PHILIPS 80C66X AND 80C51RX DEVICES
V6.0 INSTALLATION PROBLEMS WITH CD-ROM RELEASE 12.99
V6.00 OPTIMIZATIONS CAUSE LINKER ERRORS/WARNINGS
V6.02 UPDATE SAYS V6.01
VARIABLE BANKING CONFIGURATION OPTIONS
VARIABLE ZERO INITIALIZIATION
VARIABLES CREATED IN XDATA USING SMALL MODEL
VARIABLES IN LARGE AND COMPACT MEMORY MODEL DON'T WORK
VERIFYING LOOK-UP TABLE VALUES
VERSION 6 RELEASE NOTES
WARNING 173 (MISSING RETURN-EXPRESSION)
WARNING 182 (POINTER TO DIFFERENT OBJECTS)
WARNING 185 (DIFFERENT MEMORY SPACE)
WARNING 196 (MSPACE PROBABLY INVALID)
WARNING 198 (SIZEOF RETURNS ZERO)
WARNING 206 (MISSING FUNCTION PROTOTYPE)
WARNING 209 (TOO FEW ACTUAL PARAMETERS)
WARNING 219 (LONG CONSTANT TRUNCATED TO INT)
WARNING 245 (UNKNOWN PRAGMA, LINE IGNORED)
WARNING 258 (MSPACE ILLEGAL ON STRUCT/UNION MEMBER)
WARNING 259 (POINTER: DIFFERENT MSPACE)
WARNING 259 (POINTER: DIFFERENT MSPACE)
WARNING 260 (POINTER TRUNCATION)
WARNING 261 (BIT IN REENTRANT FUNCTION)
WARNING 265 (RECURSIVE CALL TO NON-REENTRANT FUNCTION)
WARNING 271 (MISPLACED ASM/ENDASM CONTROL)
WARNING 275 (EXPRESSION WITH POSSIBLY NO EFFECT)
WARNING 276 (CONSTANT IN CONDITION EXPRESSION)
WARNING 277 (DIFFERENT MSPACES TO POINTER)
WARNING 280 (UNREFERENCED SYMBOL/LABEL)
WARNING 307 (MACRO 'NAME': PARAMETER COUNT MISMATCH)
WARNING 317 (MACRO 'NAME': INVALID REDEFINITION)
WARNING 317 (REDEFINITION OF MACRO)
WARNING 322 (UNKNOWN IDENTIFIER)
WARNING 323 (NEWLINE EXPECTED EXTRA CHARACTERS FOUND)
WARNING 324 (PREPROCESSOR TOKEN EXPECTED)
WARNING 500 (BAD OR MISSING COMPILER OVERLAY)
WARNING C259 (DIFFERENT ENUMERATION TYPES)
WARNING C500 (MISSING DEVICE) AFTER UPDATE
WARNINGLEVEL DIRECTIVE
WHAT ARE THE LIMITS FOR FLOATING-POINT NUMBERS?
WHAT C51 KIT SHOULD I BUY TO WORK WITH CYPRESS EZ-USB
WHAT CAUSES HEX FILES TO CHANGE BETWEEN VERSIONS?
WHAT IS ?C?LIB_DATA USED FOR?
WHAT IS THE ADDRESS RANGE ACCEPTABLE BY XBYTE MACRO
WHAT'S IN THE ?CO? SEGMENTS?
WHAT'S THE BEST WAY TO DISABLE/REENABLE INTERRUPTS
WHEN ARE FUNCTIONS REENTRANT
WHEN/WHERE ARE GLOBAL AND STATIC VARIABLES INITIALIZED?
WHERE IS THE ABSOLUTE OMF OBJECT MODULE?
WHICH 8051-BASED CHIPS ARE SUPPORTED?
WHICH STARTUP CODE TO USE
WHY DOES C51 V6.01 INCLUDE C51 V5.50A?
WHY DOES VA_ARGS WORK?
WHY NUMBER OF BYTES PASSED TO PRINTF IS LIMITED
WIDE CHARACTER SUPPORT
WRITING INTERRUPT ROUTINES
WRITING TO THE OUTPUT PORTS
WRONG CODE GENERATED FOR DOUBLE INDIRECTION
WRONG HEADER FILE FOR PHILIPS P89C664
XC800: 'Use multiple DPTR registers' may cause runtime errors
XDATA BANKING WITH R8051XC
XDATA OVERLAYING
XDATA PROBLEMS PORTING C51 CODE TO C251
XOR GIVES INCORRECT RESULTS
XWORD MACRO QUESTIONS
_CHKFLOAT_ RETURNS STRANGE VALUES
__DATE__ AND __TIME__ MACROS
Link to this index