Главная  Микроконтроллеры 

[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]

.DEVrZCE A.TS09eSQS

. С9Св .ORG 0>c3.1

OUT EECTR, R30

STACK COXNTER INITIАЫ ЭАТZ OM

L.DX R30, bOW(0>cSSF)

OUT SBL., R30

LDI R30, HIGH <Ома9Г>

OUT SRK,R3Q

DATA STACK POINTER INITIAblZA

LDI RS e. LOW < OhDE >

LDI R2S, НХвН <OxDF>

PORTA-OxOOr

CLR R30

OUT OxXB.RQO

DDRA-ОмГГr

Ск-ва«±п0 TUTOR. HEX*

CK-aMine -TUTOR.ОВД»

CreMlng -TUTOR. bST»

Рис. 4.2. Вид экрана транслятора ассемблера с двумя окнами

Поиск и исправление ошибок

Глядя на окно сообщений, можно сделать вывод, что в процессе трансляции программы были обнаружены ошибки. В окне сообщений ошибки показываются следующим образом: в строке подряд идут название файла, в скобках номер строки, в которой обнаружена

лагаться поверх окна с исходным текстом программы на ассемблере, поэтому удобно предпринять некоторые действия по настройке расположения окон. Перейдите в окно с исходным текстом программы (просто щелкнув левой кнопкой мышки в любом месте текста программы) и выберите команду меню Windows»Tile Horizontal. Кроме того, полезно увеличить размер окна с исходным текстом программы и уменьшить окно сообщений. Для этого следует переместить верх окна сообщений с помощью мышки ниже. В результате на экране должна получиться картинка, похожая на изображенную на рис. 4.2.



ошибка, и, наконец, краткое текстовое сообщение о характере ошибки. Естественно, ошибку следует найти и исправить. Щелкните левой кнопкой мышки на первом сообщении об ошибке в окне сообщений (которая находится на 7-й строке). Обратите внимание, что в окне с исходным текстом на строке 7 появится вертикальная красная линия. Сообщение об ошибке говорит о том, что как имена регистров можно использовать только имена г0...г31. Это верно, так как микроконтроллеры семейства AVR имеют 32 регистра общего назначения, а в строке 7 программы указано имя регистра г39, которого не существует. Фотография окна программы с описанной ситуацией показана на рис. 4.3.

.XHCLUDE -eSSSdaf.inc"

.DEVICE Атвоэваэа


CbR «.n.p

OUT EECR.R30

STACK POINTER INITIALISATION

bCX Rao, LOW <0>c2SF)

OUT SBb, R30

LDI R30, HIGH СОмаЗП

OUT SPH,R3 0

DATA STACK POINTER INITIALISATION

LDI Rao,LOW(OkDE>

L.DI p2S, HIGH <OmDE>

Bin:

- »ORTA-0><:00>

CLR R3 0

OUT OkIB.RSO

DDRA-OmFE/

у H«*

AB*«nk>ld.ng • TUTOR . ASM •

АваапЫу oenpl*«a wi-cb

Рис. 4.3. Окно программы с выделенной строкой с ошибкой

Двойной щелчок на сообщении ошибки в окне сообщений приводит к тому, что окно текстового редактора исходного текста становится активным, а курсор устанавливается в начало строки с ошибкой. Исправьте г39 на г19.



Ниже в окне сообщений показано еще сообщение об ошибке. Щелкните левой кнопкой мышки по следующему сообщению об ошибке.

Сообщение Illegal argument type or count говорит о том, что что-то неправильно в аргументах команды. Обратите внимание, что один из аргументов - тот самый, который мы только что исправили. Просмотрев все сообщения об ошибках, можно прийти к выводу, что все остальные ошибки были связаны с первой.

Чтобы определить, все ли ошибки исправлены, имеет смысл снова запустить трансляцию программы. Если ошибки остались, следует их исправить. Если ошибок больше нет, в окне сообщений появится сообщение об успешном завершении трансляции.

Формат программы на ассемблере

Программа на ассемблере представляет собой текстовый файл, который состоит из мнемоник - символьных обозначений команд микроконтроллера, меток и директив.

Любая строка может начинаться с метки - строки из символов и (или) цифр, заканчивающейся двоеточием.

Метки используются для обозначения текущей строки некоторым именем (меткой) для использования в командах условного или безусловного перехода, а также для обозначения участка в памяти для обращения к данным.

Строка исходного текста может иметь один из следующих видов:

1. [метка:] директива [аргументы директивы] [комментарий]

2. [метка:] мнемоника команды [аргументы команды] [комментарий]

3. Комментарий

4. Пустая строка

Комментарии всегда начинаются с символа «;».

Элементы, заключенные в квадратные скобки, могут отсутствовать. Текст, расположенный после символа «точка с запятой» до конца строки, полностью игнорируется ассемблером. Использование ме-



[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.001