Если у вас действительно нет оперативной памяти для внешних данных, то опция PDATA вам не поможет. PDATA находится в другом логическом адресном пространстве от XDATA, но использует то же самое физическое пространство.
Например, используемый вами микроконтроллер содержит 1 КБ ОЗУ. Все 1024 байта могут быть доступны как память XDATA (Адреса XDATA: от 0x0000 до XDATA: 0x03FF). 256 байтов (за раз) могут быть доступны как память PDATA (Адреса PDATA: от 0x00 до PDATA: 0xFF). Предположим, что вы настроили микроконтроллер на использование первых 256 байтов ОЗУ в качестве памяти PDATA. Это означает, что PDATA: 0x00 и XDATA: 0x0000 указывают на один и тот же физический байт оперативной памяти. Если вы не будете осторожны, вы попытаетесь сохранить два разных значения в одном и том же физическом фрагменте памяти, и одно из них будет перезаписано и потеряно.
Если вы уже используете всю свою память XDATA, вам понадобится память DATA или память IDATA, чтобы получить больше. Если вы используете память IDATA, вам нужно быть очень осторожным , чтобы оставить достаточно свободного места, чтобы сохраняемые значения не были случайно перезаписаны стеком, который начинается с IDATA: 0xFF и растет к IDATA: 0x00
Редактировать: Извините, я не заметил, что этому вопросу было два года. Надеюсь, это кому-нибудь поможет.