rvk 0 5 января, 2009 Опубликовано 5 января, 2009 (изменено) · Жалоба Ну не знаю....2Кб это много. Очень много. Раньше на 2Кб делали текстовые операционные системы. Сначала, наверное, нужно сделать все что касается математики и датчика температуры. Оптимизировать до предела, а потом думать что делать с менюшками. Есть два пути. Первый, перейти на ассемблер, и через JNZ, JZ сделать переходы меню. Второй способ, использовать C, и его IF/ELSE или SWITCH/CASE. Поставить максимальную оптимизацию по размеру и посмотреть, кто из них меньше памяти потребляет. И после этого принимать решение, на чем писать и писать ли вообще. Уверен, свободно можно уместиться в 2К на ассемблере, а возможно и на С, только нужно забыть про такие понятия как структура, массив и косвенная адресация. Прямая и непосредственная адресация дает максимальный выигрыш. Возможно, повторяю, возможно, накатать движок и к нему структуру, которые вместе дадут больший выигрыш в размере при скажем десятке менюшек, в итоге. Но это и рискованно, можно время потерять без толку и ненадежно, движок еще отладить нужно, а структуры так и норовят фигню подсунуть, все контролировать нужно. Поэтому чем проще и корявее, тем как правило более некрасиво, но места занимает меньше.... Изменено 5 января, 2009 пользователем rvk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 5 января, 2009 Опубликовано 5 января, 2009 · Жалоба Хм. У вас только СТРОКИ из самого меню забьют эту самую память программ (1 символ - 1 слово) Эт точно. Там только через жо retlw можно символы сохранять :( HI-TECH PICC, он пожалуй наилучший Стремный он какой-то, этот Хайтек. То нельзя, это нельзя... Неудобно работать. Первый, перейти на ассемблер, и через JNZ, JZ сделать переходы меню. :maniac: Вне зависимости от языка реализации меню делается именно через то, что в Си называется структурой. А 2к должно хватить. Но может не хватить одного байта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrd 0 5 января, 2009 Опубликовано 5 января, 2009 · Жалоба Вот только сегодня обсуждали зачатки меню на структурах и указателях http://www.microchip.su/showthread.php?t=4781 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 5 января, 2009 Опубликовано 5 января, 2009 · Жалоба Стремный он какой-то, этот Хайтек. То нельзя, это нельзя... Неудобно работать. Эээ, а чего в нем нельзя? А 2к должно хватить. Но может не хватить одного байта Угу, есть проект - таймер для солярия. Там некоторая интерактивная часть - для задания времени и количества интервалов загара, а так же для определения рабочих секций УФ ламп. Меню совсем немного, собственно таймера тоже немного, и остальной интерактив. Всего около 600 строк на С. Полностью забитая PIC16F628 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 5 января, 2009 Опубликовано 5 января, 2009 · Жалоба Эээ, а чего в нем нельзя? Навскидку, что запомнилось for(char i=0;i<10;i++) do_something(); Низзя объявить в цикле переменную. Работать с флешом/еепромом тяжко. Этого, конечно мало, чтоб предъявить :), но сейчас не вспомню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Ну не знаю....2Кб это много. Очень много. Раньше на 2Кб делали текстовые операционные системы. возможно. только не на PIC-ах. Сколько байт там займет if ( x > y) { .. } - сначала он загрузит W - потом получит STATUS через вычитание. - потом сравнит C - переполнение и перейдет кудато если не так - в неидеальном варианте без переполнения тоже перейдет на операцию у нас скоко уходит? 2 байта? итого - 6-8 ? они ужасны, ети PIC-и (каску надел) у самого штук 100 - и жаба давит и сделать ничего не могу. Навскидку, что запомнилось for(char i=0;i<10;i++) do_something(); Низзя объявить в цикле переменную. Работать с флешом/еепромом тяжко. Этого, конечно мало, чтоб предъявить :), но сейчас не вспомню. ето верно. в последдних gcc тоже вроде нельзя Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Навскидку, что запомнилось for(char i=0;i<10;i++) do_something(); Низзя объявить в цикле переменную. Это С++ (или С99). Ни один эмбеддед чистый С компилятор это не поддерживает :05: Работать с флешом/еепромом тяжко.Это есть, но не смертельно. Кроме того, в последних версиях уже появились переменные в EEPROM (вот только не помню, в PICC или только в PICC 18) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zksystem 0 24 января, 2009 Опубликовано 24 января, 2009 · Жалоба экономить память можно следующим способом, как это делалось в старых играх для 8и битных компьютеров: создается словарь слов, каждому слову назначается соответствующий индекс, в итоге предложение (текст) получается в виде цепочки индексов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chert_kol 0 1 февраля, 2009 Опубликовано 1 февраля, 2009 · Жалоба А может стоит поставить внешнюю Flash и написать нормальную менюшку с применением указателей. Потом кучу времени сэкономишь на разборке кода. Я поставил AT45.... 16Мбит. Для меню за глаза... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
INT1 0 2 февраля, 2009 Опубликовано 2 февраля, 2009 · Жалоба А может стоит поставить внешнюю Flash и написать нормальную менюшку с применением указателей. Потом кучу времени сэкономишь на разборке кода. Я поставил AT45.... 16Мбит. Для меню за глаза... Он же пишет, что все руки/ноги забиты(я ж надеюсь, ЛЦД полубайтами грузится ?). И потом, есть ли у этого PIC_a SPI ?, что то сдается мне, что АТ45 будет как корове седло на нем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chert_kol 0 4 февраля, 2009 Опубликовано 4 февраля, 2009 · Жалоба Он же пишет, что все руки/ноги забиты(я ж надеюсь, ЛЦД полубайтами грузится ?). И потом, есть ли у этого PIC_a SPI ?, что то сдается мне, что АТ45 будет как корове седло на нем. Как говорил мой начальник всегда есть выход... Вот одно богатое место (я про дисплей)... А SPI можно и ручками написать один черт будет меньше чем хранить мену в PIC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy71 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 (изменено) · Жалоба возможно. только не на PIC-ах. Сколько байт там займет if ( x > y) { .. } movf x,w subwf y,w bnc дальше { ... } на операцию у нас скоко уходит? 2 байта? итого - 6-8 ? У PICов память в словах. Для того же 628-го 2к слов. 1 такт - одно слово. 4 машинных слова. Это много? Изменено 11 февраля, 2009 пользователем Eddy71 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться