Возможно, кто-то с большим знанием докажет, что я неправ, но я не думаю, что можно делать то, что ты хочешь. Если память на вашем устройстве разделена на сегменты по 256 байт, то вы не можете иметь массив, охватывающий их, AFAIK. Если бы вы это сделали, пришлось бы перепрыгивать через все виды обручей, чтобы позволить вам обращаться с массивом как с непрерывной памятью - он должен был бы проверять каждый индекс, который вы используете, чтобы выяснить, в каком сегменте он должен быть, затем вычислить смещение и получить или, если вы обращаетесь к массиву с помощью арифметики с указателями, он должен выяснить, к чему вы пытаетесь получить доступ, что может быть неочевидным или даже неизвестным во время компиляции. Я не думаю, что у него есть единая модель памяти, которую можно использовать при любых обстоятельствах, из-за того, что некоторые ячейки памяти являются общими для банков (я думаю, что счетчик программ является одним из таких мест) и т. Д. Я говорю в основном из знание типичной архитектуры PIC и некоторый опыт работы со сторонними компиляторами Си. У меня нет большого опыта работы с самой MPLAB, так что ответьте мне немного соли.
Возможно, вы сможете обойти ограничение, выделив массив указателей, а затем инициализируя каждый указатель на новый экземпляр любого типа данных, который вы хотите сохранить в нем (я предполагаю структуру или нечто большее, чем указатель), так как это не потребует непрерывной памяти. Динамическое выделение памяти на PIC, однако, является дорогостоящим, поэтому это может быть не лучшим вариантом для вас.