Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРабота_1.docx
Скачиваний:
21
Добавлен:
04.05.2019
Размер:
170.42 Кб
Скачать

3.5. Методы преодоления трудностей

Если в процессе построения проекта появились ошибки, то в окне Output появится сообщение BUILD FAILED, информирующее о невозможности создания проекта вследствие ошибок. Типичные варианты ошибок и методы их устранения следующие.

  1. Если ошибка имеет синтаксический характер, то строка в окне Output может выглядеть как “Error: syntax error”. Двойной щелчок левой кнопкой мыши по этой строке перенесет мигающий курсор в окно редактора на строку исходной программы, где имеется синтаксическая ошибка.

Примечание. Компилятор сообщает о синтаксических ошибках вместе с номером строки, в которой присутствует ошибка. Если номера строк в тексте программы не отображаются, то они могут быть включены. Для этого нужно выбрать пункт меню Edit > Properties… В открывшемся окне Editor Properties надо выбрать вкладку ‘C’ File Types, и в раскрывшемся новом окне щелкнуть по кнопке с надписью Line Numbers. Затем следует щелкнуть по кнопке OK для подтверждения выбора.

  1. Ошибка, которая читается как “could not find stdio.h”, обычно означает, что неверно указан путь для заголовочных файлов. Обратитесь к пункту 3.3 для установки правильного пути.

  2. Ошибка, которая читается как “could not find file ‘c018i.o’ ”, может означать, что путь к библиотечным файлам установлен неправильно. Обратитесь к пункту п.3.3 для информации об установленных путях к библиотекам.

  3. Если ошибка читается как “could not find definition of symbol ...”, то это обычно вызывается неправильным сценарием линкера. Убедитесь, что используется файл 18f242.lkr из папки MCC18\lkr. MPLAB IDE имеет также подобные файлы сценариев линкера для проектов, строящихся с использованием ассемблерных файлов. Всегда выбирайте файлы сценариев линкера из папки MCC18\lkr, когда используется компилятор MPLAB C18.

3.6. Тестирование программы с помощью симулятора mplab sim

3.6.1. Для активизации симулятора выберите пункт меню Debugger > Select Tool > MPLAB SIM . При этом появится графическое меню отладчика со значками управления.

3.6.2. С помощью пункта меню View > Watch откройте окно наблюдения Watch и занесите в него переменные counter, PORTB, а также счетчик команд PCL (младший байт). Для выбора переменной counter щелкните по стрелке из строки Add Symbol, в раскрывшемся списке найдите строку counter и выделите ее. Затем щелкните по кнопке Add Symbol. Для выбора переменной PORTB щелкните по стрелке из строки Add SFR, в раскрывшемся списке найдите строку PORTB и выделите ее. Затем щелкните по кнопке Add SFR. Аналогично выберите переменную PCL.

С помощью бегунка в нижней части окна Watch переместите переменные таким образом, чтобы они отображались в 16-ом и двоичном форматах. Если отсутствует отображение в двоичном формате, то поставьте стрелку курсора на строку Symbol Name и щелкните правой кнопкой мыши. В раскрывшемся списке выделите строку Binary и щелкните по ней левой кнопкой мыши.

3.6.3. Используя значок Reset из меню на панели отладчика, выполните сброс МК. При этом счетчик команд PCL сбросится в нуль. Одновременно на экране MPLAB IDE откроется окно программы c018i.c. Эта программа автоматически создается компоновщиком (линкером). Она выполняет определенную инициализацию МК, необходимую для правильной работы программы на языке Си.

3.6.4. Выполните программу в пошаговом режиме, щелкая по значку Step Into. После каждого шага зеленая стрелка в окне программы c018i.c будет перемещаться вниз. После нескольких шагов начнется выполнение исходной программы primer1.c, что можно увидеть по перемещению зеленой стрелки по тексту. В окне наблюдения Watch можно убедиться, что значения переменных counter и PORTB увеличилось на 1. Начиная с этого места выполнение программы будет бесконечным в цикле while(1).

3.6.5. Вновь осуществите сброс МК, щелкнув по значку Reset. Теперь выполните программу в режиме Animate. Наблюдайте, как сначала выполняется программа c018i.c, а затем происходит переход на программу primer1.c. После зацикливания программы содержимое counter и PORTB будет непрерывно инкрементироваться. Остановите выполнение программы, щелкнув по значку Halt.

3.6.6. Выберите пункт меню View > Disassembly Listing. На экране появится одноименное окно, в котором можно увидеть исходный код на Си и заменивший его код на Ассемблере. Левая колонка hex-чисел – это адреса ячеек памяти программ, рядом с которыми находятся коды команд.

Можно заметить, что некоторые строки кода на Си были транслированы в одну строку Ассемблера. Однако в большинстве случаев одна строка на Си заменяется несколькими строками Ассемблера. Это первый признак того, что при программировании на Си создаются более простые исходные файлы. По мере того, как увеличивается сложность кода на Си, коэффициент масштабирования между кодом на Си и листингом дизассемблирования становится все большим.

Из листинга можно также увидеть, что адрес ячейки памяти данных 0x8a (8ah) в банке 0 предназначен для переменной counter. Пересылка содержимого counter в PORTB выполняется командой Ассемблера

MOVFF 0x8a, 0xf81 ,

где 0xf81 – адрес порта В.

3.6.7. После тестирования программы закройте проект, выбрав пункт меню Project > Close… . На экране останется пустое окно MPLAB IDE.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]