Перейти к содержанию
    

Ну не знаю....2Кб это много. Очень много. Раньше на 2Кб делали текстовые операционные системы.

Сначала, наверное, нужно сделать все что касается математики и датчика температуры. Оптимизировать до предела, а потом думать что делать с менюшками.

Есть два пути.

Первый, перейти на ассемблер, и через JNZ, JZ сделать переходы меню.

Второй способ, использовать C, и его IF/ELSE или SWITCH/CASE.

Поставить максимальную оптимизацию по размеру и посмотреть, кто из них меньше памяти потребляет.

И после этого принимать решение, на чем писать и писать ли вообще.

Уверен, свободно можно уместиться в 2К на ассемблере, а возможно и на С, только нужно забыть

про такие понятия как структура, массив и косвенная адресация. Прямая и непосредственная адресация

дает максимальный выигрыш. Возможно, повторяю, возможно, накатать движок и к нему структуру,

которые вместе дадут больший выигрыш в размере при скажем десятке менюшек, в итоге. Но это и рискованно, можно время потерять без

толку и ненадежно, движок еще отладить нужно, а структуры так и норовят фигню подсунуть, все контролировать нужно. Поэтому

чем проще и корявее, тем как правило более некрасиво, но места занимает меньше....

Изменено пользователем rvk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм. У вас только СТРОКИ из самого меню забьют эту самую память программ (1 символ - 1 слово)

Эт точно. Там только через жо retlw можно символы сохранять :(

HI-TECH PICC, он пожалуй наилучший

Стремный он какой-то, этот Хайтек. То нельзя, это нельзя... Неудобно работать.

 

Первый, перейти на ассемблер, и через JNZ, JZ сделать переходы меню.

:maniac:

Вне зависимости от языка реализации меню делается именно через то, что в Си называется структурой.

А 2к должно хватить. Но может не хватить одного байта :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот только сегодня обсуждали зачатки меню на структурах и указателях http://www.microchip.su/showthread.php?t=4781

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стремный он какой-то, этот Хайтек. То нельзя, это нельзя... Неудобно работать.
Эээ, а чего в нем нельзя?

А 2к должно хватить. Но может не хватить одного байта :biggrin:
Угу, есть проект - таймер для солярия. Там некоторая интерактивная часть - для задания времени и количества интервалов загара, а так же для определения рабочих секций УФ ламп. Меню совсем немного, собственно таймера тоже немного, и остальной интерактив. Всего около 600 строк на С. Полностью забитая PIC16F628

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эээ, а чего в нем нельзя?

Навскидку, что запомнилось

for(char i=0;i<10;i++) do_something();

Низзя объявить в цикле переменную.

Работать с флешом/еепромом тяжко. Этого, конечно мало, чтоб предъявить :), но сейчас не вспомню.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не знаю....2Кб это много. Очень много. Раньше на 2Кб делали текстовые операционные системы.

 

возможно. только не на PIC-ах.

Сколько байт там займет

 

if ( x > y) {

..

}

 

 

- сначала он загрузит W

- потом получит STATUS через вычитание.

- потом сравнит C - переполнение и перейдет кудато если не так

- в неидеальном варианте без переполнения тоже перейдет

 

на операцию у нас скоко уходит? 2 байта?

итого - 6-8 ?

 

они ужасны, ети PIC-и (каску надел)

у самого штук 100 - и жаба давит и сделать ничего не могу.

 

 

Навскидку, что запомнилось

for(char i=0;i<10;i++) do_something();

Низзя объявить в цикле переменную.

Работать с флешом/еепромом тяжко. Этого, конечно мало, чтоб предъявить :), но сейчас не вспомню.

 

ето верно. в последдних gcc тоже вроде нельзя

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Навскидку, что запомнилось

for(char i=0;i<10;i++) do_something();

Низзя объявить в цикле переменную.

Это С++ (или С99). Ни один эмбеддед чистый С компилятор это не поддерживает :05:

Работать с флешом/еепромом тяжко.
Это есть, но не смертельно. Кроме того, в последних версиях уже появились переменные в EEPROM (вот только не помню, в PICC или только в PICC 18)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

экономить память можно следующим способом, как это делалось в старых играх для 8и битных компьютеров:

создается словарь слов, каждому слову назначается соответствующий индекс, в итоге предложение (текст) получается в виде цепочки индексов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может стоит поставить внешнюю Flash и написать нормальную менюшку с применением указателей. Потом кучу времени сэкономишь на разборке кода. Я поставил AT45.... 16Мбит. Для меню за глаза...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может стоит поставить внешнюю Flash и написать нормальную менюшку с применением указателей. Потом кучу времени сэкономишь на разборке кода. Я поставил AT45.... 16Мбит. Для меню за глаза...

Он же пишет, что все руки/ноги забиты(я ж надеюсь, ЛЦД полубайтами грузится ?). И потом, есть ли у этого PIC_a SPI ?, что то сдается мне, что АТ45 будет как корове седло на нем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он же пишет, что все руки/ноги забиты(я ж надеюсь, ЛЦД полубайтами грузится ?). И потом, есть ли у этого PIC_a SPI ?, что то сдается мне, что АТ45 будет как корове седло на нем.

 

Как говорил мой начальник всегда есть выход...

 

Вот одно богатое место (я про дисплей)...

 

А SPI можно и ручками написать один черт будет меньше чем хранить мену в PIC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможно. только не на PIC-ах.

Сколько байт там займет

if ( x > y) {

..

}

movf x,w

subwf y,w

bnc дальше

{

...

}

на операцию у нас скоко уходит? 2 байта?

итого - 6-8 ?

У PICов память в словах. Для того же 628-го 2к слов. 1 такт - одно слово. 4 машинных слова. Это много?

Изменено пользователем Eddy71

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...