Введение в работу с MPLAB
После загрузки программы появляется рабочее окно. Вид программы обычен для Windows и, думаю, не требует особых пояснений.
Мы создадим новый проект в основном меню Project ^ New (Проект ^ Новый). Задаем название relay проекту в папке Relay, которую я советую создать в основном разделе диска в папке MPLAB. Неоднократно я сталкивался с проблемой, которая не всегда очевидна. Многие программы, да это и удобно, предлагают хранить проект в папке Мои документы. Проблемы не возникает, если вы пользуетесь англоязычной версией Windows или русскоязычной версией программы. Но многие специализированные англоязычные программы начинают вытворять чудеса, если вы работаете в русскоязычной версии операционной системы. Впервые я столкнулся с этим, когда одна из сред программирования при компиляции программы стала выдавать ошибку в строке -1. Что она имела в виду под строкой с отрицательным номером, я не знаю. Но отыскать ошибку в правильно написанной программе оказалось не так просто. Ошибка крылась в том, что программа, предлагая сохранить проект в папке Мои документы, при компиляции эту папку распознать не могла.
После создания нового проекта появляется окно навигатор проекта. Теперь выберем микросхему контроллера в разделе основного меню Configure Select Device (Конфигурация Выбор устройства). Выбираем PIC16F628A (рис. 1.37).
Завершив выбор, следует создать файл основной программы. Выбираем File ^ New (Файл Новый). Появляется окно редактора. Сохраним файл под именем relay. asm (File Save As (Файл ^ Сохранить как...)). Добавим этот файл в проект. Для этого щелкнем правой кнопкой мыши раздел Source Files (Исходные файлы) в окне навигатора. В открывшемся меню выберем Add Files (Добавить файлы) и укажем свой файл.
Для начала перенесем в окно редактора небольшой фрагмент программы: инициализацию, ожидание команды и две подпрограммы: CALL adrsim и CALL cmnd. Последние подпрограммы - в усеченном виде. В данный момент будем использовать адрес модуля «01». Не забудьте поставить END в конце программы!
Adrsim: CLRW ; Если адрес 1 запишем символы "О" "Iй (30h и 31h).
ADDLW 0x30 MOVWF 0x21 CLRW
ADDLW 0x31 MOVWF 0x22 MOVF 0x20, 0
BCF STATUS, Z XORLW 0x1 BTFSC STATUS, Z RETURN
Cmnd: BCF STATUS, Z MOVF RCREG, 0
XORLW 0x52 ; Проверим наш ли модуль R (52h).
BTFSS STATUS, Z ; Если нет, вернемся.
RETURN
Inl: BTFSS PIRl, RCIF ; Ждем прихода первого символа адреса.
GOTO inl ; Если совпадает, продолжим. MOVF RCREG, О BCF STATUS, Z
XORWF 0x21, 0 ; Первый символ адреса в регистре
21h.
BTFSS STATUS, Z RETURN
In2: BTFSS PIRl, RCIF ; Ждем прихода второго символа адреса.
GOTO in2 ; Если совпадает, продолжим. MOVF RCREG, 0 BCF STATUS, Z
XORWF 0x22, 0 ; Второй символ адреса в регистре
22h.
BTFSS STATUS, Z RETURN
Для отладки откроем окно наблюдения View Watch (Вид Наблюдение), в котором выберем регистры STATUS, WREG, PIRl, EEDATA, RCREG, 2Oh, 21h, 22h, 30h. Необходимые регистры открываются кнопкой с обозначением стрелки вниз, правее располагается названия регистра рядом с кнопкой ADD SFR (Добавить наблюдаемые). Ее следует щелкнуть после выбора регистра (рис. 1.38).
Регистры без имени (2Oh, 21h и т. д.) мы добавляем, просто вводя адрес в колонку Address (Адрес) на новой строке.
Добавим и EEPROM через выбор View EEPROM (Вид ■> EEPROM). Установим в качестве текущего симулятора программный (Debugger Select Tool MPLAB SIM (Отладчик"* Выбор средства MPLAB SIM)). Создадим два файла input. txt
Рис. 1.38. Окно наблюдения Watch |
И output. txt (File New (Файл Новый)). В файле input. txt, который открывается в окне редактора, запишем слово команды R01 $ в виде строки в кавычках. Сохраним этот файл (File Save (Файл Сохранить)). Теперь сделаем установки отладчика (Debugger Settings... (Отладчик Установки...)): зададим частоту процессора 4 МГц, на вкладке Uartl IO установим опцию Enable Uartl Ю, укажем входной файл input. txt (browse) и выходной output. txt. Подтвердим замену последнего файла и установим опцию Rewind Input. Изменим значение на вкладке Animation/Realtime на 1 мс. Щелкнем Применить и ОК. Включим в окна View Output (Вид Вывод). Создадим новый сценарий, который позволит ввести адрес, имитируя переключатель. Для этого выберем в основном меню Debugger Stimulus Controller New Scenario (Отладчик Управление симуляцией Новый сценарий). Выберем вывод RB4 в окне Pin/SFR (Вывод/Наблюдаемые). В окне Action (Действие) выберем Set High (Установить в высокое состояние). Щелкнем кнопку со стрелкой вправо в колонке Fire (Запустить).
Сохраним сценарий под именем relay и свернем его (не закроем, а свернем!). Теперь откроем окно (Configure Configuration Bits (Конфигурация ^ Биты конфигурации)), где установим биты, записываемые по адресу 2007h. Должно получиться слово 3FlAh. Закроем это окно (рис. 1.39).
Рис. 1.39. Установки наблюдения и отладки |
В завершение этих процедур упорядочим окна (Windows ^ Tile Horizontally (Окна ^ Расположить горизонтально)), сохраним все (File ^ Save All (Файл Сохранить все)) и добавим в проект файл todo. txt, который предварительно создадим и поместим в раздел Other Files (Другие файлы) менеджера проекта. В файле todo. txt будем вести план работы.
Теперь откомпилируем проект Project Build All (Проект Компоновать все). Сохраним и вид проекта File Save
Workspace (Файл Сохранить рабочую область). Мы готовы к отладке программы.
После выхода из программы MPLAB и подтверждения сохранения вида проекта, новой загрузки программы и открытия проекта (Project Open (Проект Открыть)) мне приходится обнулять адрес Oh в EEPROM, щелкать Fire (Запустить) в Scenario (Сценарий), и вводить адреса 20h, 21 h и т. д. в окне Watch (Наблюдение), которые, как пишет программа, Not Found (Не найдены). Я не уверен, что дернул за все веревочки, но... пока ничего лучшего не получилось.
Если вы правильно перенесли программу, то, щелкнув на инструментальной панели кнопку запуска программы, вы увидите анимацию, а в регистре RCREG (приемный регистр USART) появятся шестнадцатеричные коды символов из строки файла input. txt. Можно вписать в ячейку по адресу Oh EEPROM значение lh и увидеть, как оно переписывается в регистр 30h.
Есть еще несколько полезных возможностей. Одна из них - проверить работу с определенного места. Для этого остановим анимацию (кнопкой паузы на инструментальной панели), установим курсор в нужной строке и щелкнем правой кнопкой мыши. Выберем в раскрывающемся меню Set PC at Cursor (Установить счетчик команд к курсору). Теперь, щелкая значок Step Into (Шаг внутрь) на инструментальной панели, мы можем отследить все изменения.
В окончательном виде я работаю в среде, которая показана на рис. 1.40.
Кроме написания программы на ассемблере среда MPLAB поддерживает написание программ на языке С. Существуют компиляторы разных производителей. Я использую демонстрационную версию кросскомпилятора Hi-Tech. Посмотрим, не будет ли проще написать программу на языке С?
Рис. 1.40. Окончательный вид окна проекта |