AT89C4051 -> 2051. Помогите уменьшить программу
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
AT89C4051 -> 2051. Помогите уменьшить программу
Всем доброго вечера. Понадобился мне генератор с DDS
. Там стоит по схеме AT89C4051. Но у меня есть C2051. И вот я подумал что можно и его применить , тем более что они отличаются только объемом памяти 4k-2k. В прилагаемой программе весом примерно 3.6к надо убрать лишнее (например там килобайт занимают логотипы, которые выводяться на экран от нокии 3310). Подскажите как и что удалить чтобы программа осталась рабочей. Думаю надо удалить логотипы и вывод на экран лишней информации.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Реклама
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
логотипы занимают всего 536 байт. остальные функции так или иначе связаны с обращением к DDS генератору или LCD дисплею. имхо лучше не ипать себе (и другим!!!) мозг и купить нужную микросхему.
мне кажется, если переписать эту программу на LCD с контроллером HD44780, прога может занять значительно меньше 2КБ кода. ну если Вы не можете, в разделе "Из лап в лапы" Вам помогут.
Лично я не знаю асм для х51 контроллеров, за сим откланиваюсь.
мне кажется, если переписать эту программу на LCD с контроллером HD44780, прога может занять значительно меньше 2КБ кода. ну если Вы не можете, в разделе "Из лап в лапы" Вам помогут.
Лично я не знаю асм для х51 контроллеров, за сим откланиваюсь.
Ставим плюсы: )
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Логотипы занимают явно более 500 байт, так как там порядка 60-70 строк db, по 16 констант в каждой...
Все эти строки нужно закомментировать, а в подпрограмме LCD_Init закомментировать все после строчки setb dc и до mov dptr,#header. Тогда заставки уберутся.
Все эти строки нужно закомментировать, а в подпрограмме LCD_Init закомментировать все после строчки setb dc и до mov dptr,#header. Тогда заставки уберутся.
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Спасибоibiza11 писал(а):если переписать эту программу на LCD с контроллером HD44780, прога может занять значительно меньше 2КБ кода.
Еще вопросик
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Наверняка где-нибудь в интернете валяется...Alexey_N писал(а):Еще вопросик: при компиляции в asm51, компилятор выдает ошибку что нет файла mod4051. Подскажите где его можно найти или как его написать.
Если самому, то нужно взять даташит на контроллер и из него выписать все SFR-ы вот в таком виде:
Код: Выделить всё
;MOD4051
P0 DATA 080H ;PORT 0
SP DATA 081H ;STACK POINTER
DPL DATA 082H ;DATA POINTER - LOW BYTE
DPH DATA 083H ;DATA POINTER - HIGH BYTE
...
...
...
IT0 BIT 088H ;TCON.0 - EXT. INTERRUPT 0 TYPE
IE0 BIT 089H ;TCON.1 - EXT. INTERRUPT 0 EDGE FLAG
IT1 BIT 08AH ;TCON.2 - EXT. INTERRUPT 1 TYPE
IE1 BIT 08BH ;TCON.3 - EXT. INTERRUPT 1 EDGE FLAG
...
...
...
- Реклама
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
В даташите такого нету. Или это для примера?Engineer_Keen писал(а):P0 DATA 080H ;PORT 0
И еще. Как отличить DATA от BIT ? В даташите просто таблица и непонятно что где

Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Это для примера, я просто взял строчки из MOD51.
Все что у вас в квадратиках, это байты, то есть DATA. А вот отдельные биты в них это BIT.
В принципе в MOD51 есть больше чем в mod4051, так как он общий для всех 51-х контроллеров. Можно даже 51 переименовать в 4051. В программе все равно не должны использоваться имена которых нет в 4051.
Попробуйте переименовать.
Все что у вас в квадратиках, это байты, то есть DATA. А вот отдельные биты в них это BIT.
В принципе в MOD51 есть больше чем в mod4051, так как он общий для всех 51-х контроллеров. Можно даже 51 переименовать в 4051. В программе все равно не должны использоваться имена которых нет в 4051.
Попробуйте переименовать.
- Вложения
-
- MOD51.rar
- (874 байт) 171 скачивание
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: AT89C4051 -> 2051. Помогите уменьшить программу
... по приведенной таблице - диапазон АСС 0E0h-0E7h. Значит обращение к ACC.2 - 0E0h+2=0E2hИ еще. Как отличить DATA от BIT ? В даташите просто таблица и непонятно что где
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Спасибо. Переименовал - все скомпилировалось. Только почему-то hex файл получился больше чем исходный, хотя я удалил лого. Может какие ключи надо asm51?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
дайте глянуть оба хекса
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
исходная версия
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Измененная версия - убран логотип как писал Engineer_Keen
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Вы сами видите что оба эти файла абсолютно идентичны? Вы точно тот исходник компилируете? Ошибок не было при компиляции?
А, пофиг, сам перекомпилировал, килобайт убрали, но все равно 2.6кБ, в 2051 не влезет...
А, пофиг, сам перекомпилировал, килобайт убрали, но все равно 2.6кБ, в 2051 не влезет...
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Ха ... и у меня наконец правильно скомпилировался. Вместо ddsfinal_modified.asm почему-то компилировался ddsfinal.asm. Переименовал - все ок. Осталось избавиться от 0.6Кб
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
asm51 просто не понимает длинные имена файлов.
А вот еще уменьшить врядли... Можно убрать строчные символы и везде писать заглавные буквы, это еще -150 байт. И все, далее нужно досконально ковырять программу и разбираться как она работает. В этом случае проще написать новую с нуля, и вряд-ли кто-то этим займется...
А вот еще уменьшить врядли... Можно убрать строчные символы и везде писать заглавные буквы, это еще -150 байт. И все, далее нужно досконально ковырять программу и разбираться как она работает. В этом случае проще написать новую с нуля, и вряд-ли кто-то этим займется...
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Спасибо. А на сколько удасться уменьшить программу если применить индикатор на HD44780. В нем знакогенератор встроенный вроде?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
В программе встроены 128 символов, каждый занимает 5 байт, следовательно весь шрифт - 640 байт.
Кстати, если поменять все переходы с LCALL и LJMP на ACALL и AJMP, можно освободить еще порядка 100 байт, так как LCALL и LJMP все равно нужны только если переходы делаются дальше чем на 2 килобайта.
О, мысль, R7 вроде нигде не используется, а вот MOV [место назначения] ,#00h много, можно еще сократить, если вместо константы 0 использовать R7...
Кстати, если поменять все переходы с LCALL и LJMP на ACALL и AJMP, можно освободить еще порядка 100 байт, так как LCALL и LJMP все равно нужны только если переходы делаются дальше чем на 2 килобайта.
О, мысль, R7 вроде нигде не используется, а вот MOV [место назначения] ,#00h много, можно еще сократить, если вместо константы 0 использовать R7...
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Замена ljmp и lcall на ajmp и acall уменьшила программу до 2.5Кб. Эхх... а дальше
.
Скажите, в HD44780 встроен знагокенератор или его загружать надо, а то я читал даташит на него а он на англицком
Скажите, в HD44780 встроен знагокенератор или его загружать надо, а то я читал даташит на него а он на англицком
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Встроенный. А английский в нашем деле нужно знать...Alexey_N писал(а):Скажите, в HD44780 встроен знагокенератор или его загружать надо, а то я читал даташит на него а он на англицком
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: AT89C4051 -> 2051. Помогите уменьшить программу
Спасибо. Будем идти в этом направлении 
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).


