| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Машинные коды команд AT90S2313? |
| Автор: Коляй 19.10.2005, 20:04 |
| Ребята, пособите у кого есть машинные коды команд для этого кристала? Дока то есть, но там я ни-чо не понимаю. Приходится сначала похожую команду найти или несколько команд с разными регистрами, а потом экспериментально уже подбирать какой надо. Неудобно. Ещё есть ли в природе какой-нибудь редактор попроще? А то в АВР-Студио не поменять ничего (файл НЕХ). Приходится в Студио работать, а изменения вносить Пони-Прог - ом, что тоже не удобно, в Пони-Прог адреса надо удваивать и байты каждый раз местами переставлять и обратно не забывать перед сохранением. З.Ы. Я не программист, просто возникла необходимость демо-прошивку чуть доработать. Так что прошу сильно не ругаться и отнестись снисходительно к моим, может быть, детским вопросам. |
| Автор: PILOT 19.10.2005, 21:24 |
| Вопрос не детский. Изменить bin файл под свои нужды это не так просто. Я вообще уважаю тех у кого это получается хорошо, таких правда немного. Короче тебе нужно провести приличную работу, а именно: 1) получить бин-файл 2) загнать его в дисассемблер и получить ассемблерный исходник 3) попытаться определить и назвать метки, процедуры, прерывания, область констант, чтобы уловить структуру программы. 4) изменить то, что необходимо. 5) откомпилировать код и перепрошить кристалл. СУВ. ЗЫ. Утилита дисассемлера: http://www.avrfreaks.net/index.php?module=FreaksTools&func=viewItem&item_id=272 |
| Автор: Guest 19.10.2005, 22:56 |
| Спасибо большое! Попробую поразбираться. |
| Автор: Коляй 24.10.2005, 16:42 |
| Вот попробовал одну команду перевести в коды. Самая обычная - загрузка регистра константой LDI. И сразу увидел сколько заморочек. Команда состоит 4-х значного кода. Первый знак - буква Е, второй - первое (16) число загружаемой константы. Третий - номер регистра от 0 до F(что соответствует регистрам от 16 до 31), и четвёртый - второе число константы. Например, записать в регистр 17 константу BC - EB1C. Другие команды уже как то по-другому. С завистью вспоминаю систему команд на 8080, когда было всё просто и понятно. И по цвету всё отличалось и на двойном листе умещалось. |
| Автор: PILOT 24.10.2005, 18:45 |
| Во первых не четырехзначного а двухбайтового. Во вторых AVR менее распространен чем х80, поэтому отладочные штуковины тоже малораспространены. Система команд АВР весьма гибкая, и позволяет делать очень много (если не почти все), все сделано для пользователя, для компиляторов. Ядро так вообще замечательное 16 РОН, + 16РОН с неполной математикой. Это просто здорово! СУВ. |
| Автор: Коляй 13.11.2005, 11:34 |
| Какой же всё таки язык лучше начать изучать Си или АСЕМ? Или оба потихоньку? Вчера взял примеры на AVR123.by.ru попробовал написать в СИ короткую программку - 8 светодиодов включает через порт B. Провозился до обеда. А потом то же самое на АСЕМе сделал за час, только правильнее. Диоды включаются по порядку 1,2,3... а не так как там было 1,2,1и2,3,... Мой код занял около 15 строчек, а тот что СИ откомпеллил заметно больше, причём пять команд CALL совершенно непонятных. Или может в СИ надо грамотно писать по особому порядку? А главное что в АСМе всё просто и понятно. Это при том что я не соображаю в программировании вообще и не разу ничего не писал сам. |
| Автор: PILOT 13.11.2005, 12:57 |
| Сначала лучше учить асм, потом Си, потому что на Си писать объемные программы быстрее, и отлаживать программы на Си быстрее. Зная асм, всегда можно предугадать во что(в какой ассебмлерный кусок) траслируется то или иное действие на Си. СУВ. |
| Автор: Коляй 13.11.2005, 18:05 |
| Спасибо. |
| Автор: Коляй. 23.11.2005, 20:28 | ||
А что в AVR-studio4 аналог. компоратор не поддерживается? (2313) А то включены в компораторе "захват таймера1 по переключению" и ничего не происходит как не включай. Пилот, и спасибо за утилитки! Должен признать - очень полезные "штучки" оказались! |
| Автор: PILOT 1.12.2005, 01:39 |
| На здоровье! В AVR-Studio должна быть вся периферия выбранного контроллера. СУВ. |