C51: AVOIDING ACALL PROBLEMS IN DS80C390 REV BX DEVICES
Information in this article applies to:
I'm using the Keil PK51 Professional Developer's Kit with a Dallas DS80C390 Rev Bx Device in Contiguous Mode. I'm using the ROM(D512K) directive to generate compact code using the extended ACALL instructions. However, there is a potential chip problem with ACALL instructions in the DALLAS SEMICONDUCTOR ERRATA SHEET DS80C390 Revision B4 under item 6:
What should I do?
The code generated by the Keil tools avoid this problem as follows:
Therefore, ACALL will not be the last instruction in a 64K Byte block and this chip problem cannot occur.
To be certain that no ACALL instructions are located at the end of a 64K Byte block by the assembler parts of your application code, you may reserve the last memory location in each code page using the LX51 Linker RESERVE directive. For example, in µVision under Options for Target - LX51 Locate - Reserve: enter:
C:0xFFFF-C:0xFFFF, C:0x1FFFF-C:0x1FFFF, C:0x2FFFF-C:0x2FFFF, C:0x3FFFF-C:0x3FFFF
This will ensure that there are no CPU instruction located at the last byte of a 64K Byte block in the memory segments 0, 1, 2, and 3.
Last Reviewed: Monday, July 18, 2005
of your data.