Главная Микроконтроллеры [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.0018 |