This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

using External Memory Addressing on DS80C390 with Chip Enables

Hello,

I am writing code for a PCB with a DS80C390 to assert ~PCE1 via xdata memory accesses so I can read/write to the registers of a UART on a piggy-back board. I have set the Port 4 Control Register to enable ~CE0 and ~CE1 and also set P4.4 to be used as A16. I have also set the Port 5 Control Register to enable ~PCE0 and ~PCE1 (thus ~PCE0 should be asserted for xdata memory accesses in 0h-1FFFFh and ~PCE1 should be asserted for 20000h-3FFFFh.) My problem is, when I have a loop in the middle of my code as such:

while(1)
{
temp = *((unsigned char xdata *)0x02C000);
temp = *((unsigned char xdata *)0x02B000);
temp = *((unsigned char xdata *)0x02A000);
__WATCHDOG_RESET;
}

When I use a scope to check the signals, the xdata memory accesses are only asserting ~PCE0, instead of ~PCE1.

In my "Target Settings", I am currently using the A51 & BL51, "Small" memory model, and the "Code Rom Size" is set to "Compact: 2K functions, 64K program."

I have read a few application notes that describe using the LX51 and AX51 instead and the "Code Rom Size" set to Contiguous mode. However, I do not want to change these settings since my code rom size is still only 64K and I am trying to access the XDATA memory space in the extended address range.

Do I need to have these Target settings in order to assert ~PCE1 for xdata memory accesses?? Can I simply assert ~PCE1 by accessing xdata memory between 0x20000-0x3FFFF without setting the 22-bit contiguous addressing settings by setting "DS390 = 1" in the Init.A51 file??

I am brand new to programming for 8051 and would really appeciate any help you could provide.

Thank you very much in advance.....

A. Rawat

Parents
  • The 80C390's Continuous addressing mode can't be turned on separately for code and XRAM memory spaces. That leaves you two choices, I think:

    1) Go to continuous mode and the compiler will handle it all automatically

    2) Stay in classic 8051 mode and write your own handlers for XDATA banking to wiggle the PCE lines according to where your addresses are.

Reply
  • The 80C390's Continuous addressing mode can't be turned on separately for code and XRAM memory spaces. That leaves you two choices, I think:

    1) Go to continuous mode and the compiler will handle it all automatically

    2) Stay in classic 8051 mode and write your own handlers for XDATA banking to wiggle the PCE lines according to where your addresses are.

Children
No data