AT89C4051 -> 2051. Помогите уменьшить программу

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Всем доброго вечера. Понадобился мне генератор с DDS :)) . Там стоит по схеме AT89C4051. Но у меня есть C2051. И вот я подумал что можно и его применить , тем более что они отличаются только объемом памяти 4k-2k. В прилагаемой программе весом примерно 3.6к надо убрать лишнее (например там килобайт занимают логотипы, которые выводяться на экран от нокии 3310). Подскажите как и что удалить чтобы программа осталась рабочей. Думаю надо удалить логотипы и вывод на экран лишней информации.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение ibiza11 »

логотипы занимают всего 536 байт. остальные функции так или иначе связаны с обращением к DDS генератору или LCD дисплею. имхо лучше не ипать себе (и другим!!!) мозг и купить нужную микросхему.
мне кажется, если переписать эту программу на LCD с контроллером HD44780, прога может занять значительно меньше 2КБ кода. ну если Вы не можете, в разделе "Из лап в лапы" Вам помогут.
Лично я не знаю асм для х51 контроллеров, за сим откланиваюсь.
Ставим плюсы: )
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

Логотипы занимают явно более 500 байт, так как там порядка 60-70 строк db, по 16 констант в каждой...
Все эти строки нужно закомментировать, а в подпрограмме LCD_Init закомментировать все после строчки setb dc и до mov dptr,#header. Тогда заставки уберутся.
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

ibiza11 писал(а):если переписать эту программу на LCD с контроллером HD44780, прога может занять значительно меньше 2КБ кода.
Спасибо :)) Наверное так и поступлю.

Еще вопросик :)) : при компиляции в asm51, компилятор выдает ошибку что нет файла mod4051. Подскажите где его можно найти или как его написать.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

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. Помогите уменьшить программу

Сообщение Alexey_N »

Engineer_Keen писал(а):P0       DATA  080H  ;PORT 0
В даташите такого нету. Или это для примера?

И еще. Как отличить DATA от BIT ? В даташите просто таблица и непонятно что где :?

Изображение
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

Это для примера, я просто взял строчки из MOD51.
Все что у вас в квадратиках, это байты, то есть DATA. А вот отдельные биты в них это BIT.
В принципе в MOD51 есть больше чем в mod4051, так как он общий для всех 51-х контроллеров. Можно даже 51 переименовать в 4051. В программе все равно не должны использоваться имена которых нет в 4051.
Попробуйте переименовать.
Вложения
MOD51.rar
(874 байт) 171 скачивание
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение ChipKiller »

И еще. Как отличить DATA от BIT ? В даташите просто таблица и непонятно что где
... по приведенной таблице - диапазон АСС 0E0h-0E7h. Значит обращение к ACC.2 - 0E0h+2=0E2h
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Спасибо. Переименовал - все скомпилировалось. Только почему-то hex файл получился больше чем исходный, хотя я удалил лого. Может какие ключи надо asm51?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

:dont_know:
дайте глянуть оба хекса
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

исходная версия
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Измененная версия - убран логотип как писал Engineer_Keen
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

Вы сами видите что оба эти файла абсолютно идентичны? Вы точно тот исходник компилируете? Ошибок не было при компиляции?
А, пофиг, сам перекомпилировал, килобайт убрали, но все равно 2.6кБ, в 2051 не влезет...
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Ха ... и у меня наконец правильно скомпилировался. Вместо ddsfinal_modified.asm почему-то компилировался ddsfinal.asm. Переименовал - все ок. Осталось избавиться от 0.6Кб
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

asm51 просто не понимает длинные имена файлов.
А вот еще уменьшить врядли... Можно убрать строчные символы и везде писать заглавные буквы, это еще -150 байт. И все, далее нужно досконально ковырять программу и разбираться как она работает. В этом случае проще написать новую с нуля, и вряд-ли кто-то этим займется...
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Спасибо. А на сколько удасться уменьшить программу если применить индикатор на HD44780. В нем знакогенератор встроенный вроде?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

В программе встроены 128 символов, каждый занимает 5 байт, следовательно весь шрифт - 640 байт.
Кстати, если поменять все переходы с LCALL и LJMP на ACALL и AJMP, можно освободить еще порядка 100 байт, так как LCALL и LJMP все равно нужны только если переходы делаются дальше чем на 2 килобайта.

О, мысль, R7 вроде нигде не используется, а вот MOV [место назначения] ,#00h много, можно еще сократить, если вместо константы 0 использовать R7...
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Замена ljmp и lcall на ajmp и acall уменьшила программу до 2.5Кб. Эхх... а дальше :dont_know: .
Скажите, в HD44780 встроен знагокенератор или его загружать надо, а то я читал даташит на него а он на англицком :))
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Engineer_Keen »

Alexey_N писал(а):Скажите, в HD44780 встроен знагокенератор или его загружать надо, а то я читал даташит на него а он на англицком :))
Встроенный. А английский в нашем деле нужно знать...
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: AT89C4051 -> 2051. Помогите уменьшить программу

Сообщение Alexey_N »

Спасибо. Будем идти в этом направлении :))
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»