![]() | |
|
Главная Радио и связь Ассемблирование программ Результат ассемблирования программ может выводиться в различных форматах. По умолчанию результат сохраняется в файл *.hex, именно этот формат файла (Intel Intellec 8/MDS) может использоваться программаторами для загрузки программ в память микроконтроллеров. Если формат файла был изменен и вы не можете найти файл *.hex, следует восстановить формат. Для изменения формата файла, получаемого при ассемблировании, откройте меню Project/AVR Assembler Setup, в открывшемся окне AVR Assembler в окошке Additional Output file format: выберите формат Intel Intellec 8/MDS. Для ассемблирования нашей программы можно воспользоваться меню Project/Build, кнопкой F7, кнопкой Build панели инструментов Project или, расположив курсор в окне Alarm.asm, нажать правую клавишу мышки и выбрать CTpoKyRebuild project. Далее я буду приводить только тот вариант, которым пользуюсь сам. По мере освоения AVR Studio вы сможете выбрать варианты, наиболее подходящие вам. Итак, для ассемблирования нажмем клавишу F7. В результате в окно Output (Рис. 6) выводится информация о результатах ассемблирования. Creating C;\avr\Aiarm\alarm.hex Creating С: \avr\A!arrfi\alarm. obi Creating С;\avr\Alafm\alaim.map Assembling C; avr\Alarm\Alarm.asm Including c; \avr\def\2313def. inc Program memory usage: Code ; 72 words Constants fdw/db); 0 words Unused ; 0 words i Total : 72 words i Assembly complete with no errors. ! Deleting C;\avr\Alarm\alarm.eep <ГГТТ»\В"<X Messages XFhdlnFBes / Puc. 6. Окно Output Интерес в этом окне представляет следующая информация: • имя ассемблируемого файла программы; • файлы, включенные в файл программы директивой .include; • использование памяти программ микроконтроллера; • сообщение о том, что ошибки не обнаружены. Обнаружение ошибок при ассемблировании Если в программе обнаружены ошибки, содержимое окна Output поможет локализовать их. Введем ошибку в директиву .deftmp = г16. Имя tmp назначим регистру гЗб, которого не существует в рассматриваемых микроконтроллерах: deftmp = гЗб. Снова ассемблируем программу (клавиша F7). В окне Output появились сведения об обнаруженных ошибках (Рис. 7). grtiuq vindov-. help BLiiHina project. h FA.n rt\F nu ( Ccpyngttt {Q 144 .;niii ATtlEL Corr Creating C;\avnAlarm)alarm.trex Creating Ci\avr\Alarm\alarm.obr .; Creating CiavrAlarmalarm.map Assembling C;\avr\AlariT\Alarm,asm i Induding ci\3vr\def\2313def inc ; «i C;\3vr\Alarm\Alarm.asm(4); errot f I # C;\3vr\Alarm\Alarm.asm(2S); error j # C:\avr\Alarm\Alarm,asm(26); error Ф C;\avr\Alarm\Alarm.a5m(27); error i # C;\avr\Alarm\Alarm,asm(2S); error . i # C;\avr\Alarm\Alarm.asm(29); error ; j # C:(avf(Alarm(Alarm.asim3l): error ! in.-lu cseg avr\det\2313det.inc" 361 ti«p door = PD2 code = PD3 open PD4 lock = PB2 alarm = PBl hi PBO ast . T EOCi Ha .401 Ha i«iil imerl imarO FT F II rdl-r ~e Handier >I 1 Puc. 7. Окно Output co сведениями об ошибках, обнаруженных в программе Каждой ошибке (error) соответствует сообщение, представленное одной строкой в окне Output. Например: C:\avr\Alarm\Alarm.asm(4): error: Register rO-rSl expected. Это значит, что в файле C:\avr\Alarm\4iarm.asm в строке 4 обнаружена ошибка: могут быть использованы регистры г0...г31, а мы попытались использовать гЗб. Поскольку в программу директивами .include может быть включено несколько файлов, в каждом из которых может обнаружиться ошибка, указание полного имени файла в сообщении не является лишним. Как быстро найти в программе строку с ошибкой? На приведенном выше рисунке представлен фрагмент окна AVR Studio с окном Output и окном программы Alarm.asm. Курсор находится в окне программы в строке с введенной нами ошибкой. Его местоположение указано в нижнем правом углу AVR Studio: Ln 4, Col 18, то есть, строка 4, колонка 18. Нужную строку можно быстро найти, перемещая курсор в окне программы клавишами управления курсором или мышкой (перемести мышку на строку, номер которой требуется определить, и щелкнуть левой клавишей). Почему обнаружилось так много ошибок, ведь мы ввели только одну? Теперь ошибка обнаруживается в каждой строке, содержащей имя tmp, которое мы попытались присвоить несуществующему регистру Перед дальнейшей работой устраните ошибку, восстановив программу Определение опций симулятора Вновь ассемблируйте программу (F7), не содержащую ошибок. Для выполнения пошаговой отладки откроем меню Debug/Start Debugging, в окне программы слева от первой команды появится желтая стрелка, индицирующая ход выполнения отладки. Теперь можно определить опции симулятора AVR Studio. Для этого откроем окно Simulator Options (меню Debug/AVR Simulator Options, Рис. 8). Заметим, что до начала отладки данная строка отсутствовала в меню Debug. Выполним первый шаг отладки, нажав клавишу F11 (меню Debug/Trace into FU). Simulatior Options Device selection Stimuli and logging Device Fteqijencjf- !AT 3052313 Flash Size 21548 bytes EepiomSize: 128Wes Inleinal SRAM Size: Ш 10 Size: 64 bytes Мак Speed: 8,00 MHz bytes Cancel Puc. 8. Окно Simulator Options Здесь можно определить тип микроконтроллера, для которого написана программа. Для этого щелкните мышкой по стрелке, расположенной справа в конце окошка Device, в открывшемся списке выберите микро- 0 1 2 3 4 [ 5 ] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 0.0074 |