Как в PIC 16f877 переключать страницы памяти?
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
Пишу примитивную прогу в CCS_PCWHD компиляторе. Дописал до 25% памяти и все - пишет типа нехватка памяти и т.д. Подскажите как в программе написать чтобы пошло обращение к след странице? И потом в конце всей проги надо опять к первой возвращаться или он сам вернеться?
- Реклама
может, все-таки банки, а не страницы ??? 
я совсем не знаю ццс, чтобы что-то толковое советовать, но попробуйте на какой-нить объемный массив в оперативке навесить не unsigned char array[] ,а bank1 unsigned char array[]
Компилятор распоряжается "автоматически" только 0 банком, остальные нужно подключать ручками.
я совсем не знаю ццс, чтобы что-то толковое советовать, но попробуйте на какой-нить объемный массив в оперативке навесить не unsigned char array[] ,а bank1 unsigned char array[]
Компилятор распоряжается "автоматически" только 0 банком, остальные нужно подключать ручками.
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
мне не переменную туда надо писать а текст программы... У меня оператор switch на всю память 2к залазит с большим вложением. Вот мне надо чтобы прога пошла в 4к область памяти. Как это сделать?
- Сообщения: 81
- Зарегистрирован: Пн мар 29, 2010 21:34:12
Память программ на банки не делится, а делится память данных.
Была когда-то проблема с каким-то компилятором - если файл, скажем, main.c , занимает больше какого-то размера, компиляция не происходит. Лечилось разбиением на несколько файлов.
и 2-х килобайтовый свитч... это нечто...
размер функции желательно выбирать такой, чтобы она влезала в размер экрана. Если не влазит - бить на отдельные функции.
Отладка ускоряется и ошибок меньше.
и 2-х килобайтовый свитч... это нечто...
размер функции желательно выбирать такой, чтобы она влезала в размер экрана. Если не влазит - бить на отдельные функции.
Отладка ускоряется и ошибок меньше.
- Реклама
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
Хорошо, память данных. Но от этого суть проблемы не меняется ))
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
разбивал функцию по 1му кейсу. Всего 8 кейсов в свиче. ничего
я предложить разбить файл на несколько, что тогда ?
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
никогда не разбивал. Как это правильно сделать? Создать несколько Си файлов, подключить к проекту и компилятор потом сам откомпилит?
- Сообщения: 81
- Зарегистрирован: Пн мар 29, 2010 21:34:12
Регистр PCLATH используется для адресации требуемой страници.
Им надо переключать страница.
Им надо переключать страница.
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
как к этому регистру обращаться из моего компилятора? RA0 RA1 в этом регистре страницы переключает. Но как это записать?
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
- Сообщения: 81
- Зарегистрирован: Пн мар 29, 2010 21:34:12
На асемблере так
BSF PCLATH,3 ; устанавливаем бит 3 в 1 выбор страницы 1 (800h-FFFh)
CALL метка ; переход на траницы 1 (800h-FFFh)
.
.
метка
.
RETURN ; назад
BSF PCLATH,3 ; устанавливаем бит 3 в 1 выбор страницы 1 (800h-FFFh)
CALL метка ; переход на траницы 1 (800h-FFFh)
.
.
метка
.
RETURN ; назад
- Сообщения: 81
- Зарегистрирован: Пн мар 29, 2010 21:34:12
- Сообщения: 60
- Зарегистрирован: Вт авг 24, 2010 17:07:25
я незнаю как в этом компиляторе напрямую к регистрам обратиться.... Может кто знает подскажите... В атмегах такой проблемы не встречал...((((((((
Посмотрел код. Ну ужас.
Попробуйте воспользоваться массивами 4 байтных слов.
Попробуйте воспользоваться массивами 4 байтных слов.
Здесь дело попахивает "палённым" компилятором, что-то вроде демо-версии или подобное.miwutka07 писал(а):Пишу примитивную прогу в CCS_PCWHD компиляторе. Дописал до 25% памяти и все - пишет типа нехватка памяти и т.д. Подскажите как в программе написать чтобы пошло обращение к след странице? И потом в конце всей проги надо опять к первой возвращаться или он сам вернеться?
В подобных случаях ограничен размер кода, обычно до 2К.
Нормальный компилятор всё сам должен "переключать" и вообще в ум не может прийти заниматься переключением страниц, если, конечно, это не вызвано какими-то другими соображениями.
©"Good indian is dead one!"


