Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Порядок создания простого проекта ⇐ ПредыдущаяСтр 5 из 5
Рассмотрим создание простого проекта, исходными файлами которого будут файл или файлы написанные на ассемблере. Для создания проекта выполняются следующие шаги: 1. Выбор папки проекта. Создайте на диске папку для своего проекта. Важное примечание! MPLAB не поддерживает корректно длинные и русские имена папок, то есть имя должно состоять из латинских букв и не более 8. Тоже самое относится и к названию проекта и к именам исходных файлов. В противном случае MPLAB откажется файлы редактировать и будет жаловаться, что не может их открыть при ассемблировании. 2. Выбор языка инструментальной среды.Выберите Project> Install Language Tool из меню. Выберите Language Suite: Microchip и Tool Name: MPASM. Если не указан путь к файлу ассемблера mpasmwin.exe, укажите. Затем установите опцию Windowed и нажмите OK. 3. Создание файла проекта. В MPLAB выберите Project> New Project, укажите путь к Вашей папке и введите имя файла проекта, желательно такое же, как и имя основного исходного файла. Возможно указание нескольких папок через точку с запятой, для примера, таким образом: c: \mplab\projects\mpproj\include; c: \include\h;..\sys. Нажмите OK. 4. Установка конфигурации. После перечисленных действий откроется окно редактирования проекта. Для простоты не будем добавлять дополнительные файлы, файлы библиотек и компоновки. Нажмите кнопку Change. в пункте Development Mode. Откроется окно с вкладками для установки. В дальнейшем это окно можно будет вызвать, выбрав Options> Development Mode. Остановимся подробнее: - Tools. Выберите инструментальную среду. Так как у Вас нет дополнительного оборудования, то придется довольствоваться симулятором MPLAB-SIM (установите признак) и выберите тип микроконтроллера. - Clock. Выберите тип генератора тактовых импульсов (кварцевый резонатор, внутренний или внешний RC-генератор, внешняя частота и т. д.) и его частоту. - Configuration. Конфигурация сторожевого таймера и памяти программ. Если Вы разрешаете использование сторожевого таймера, то задайте и коэффициент деления предделителя. А для микроконтроллеров 17-й серии необходимо указать какая память программ будет использоваться: внутренняя (microcontroller), внешняя (microprocessor) или обе (extended microcontroller). - Pins. Разрешите или запретите использование вывода внешнего сброса (MCLR). - Break option. Конфигурация прерываний и стека при отладке (лучше пока оставить по умолчанию). Нажимаете OK. 5. Конфигурация выходного файла. Щелкните, чтобы подсветить на файле < my project> [.hex]. При этом станет доступно меню Node Properties. В ранних версиях MPLAB без вызова окна конфигурации выходного файла нельзя было добавить в проект свой исходный файл. Можно попробовать изменить конфигурацию, а можно оставить по умолчанию. 6. Добавление исходного файла. Чтобы добавить свой исходный файл на ассемблере, который Вы скопировали и переименовали в папке своего проекта нажмите на кнопке Add Node. В открывшемся окне выберите свой файл и нажмите OK. После этого нажмите OK в окне редактирования проекта. Если нажмете Cancel, то проект записан не будет! В дальнейшем это окно всегда можно будет вызвать через Project> Edit Project. 7. Открытие исходного файла. Теперь можете открыть свой исходный файл для редактирования: File> Open или создать новый File> New. В проекте может быть несколько исходных файлов на ассемблере, но указывать необходимо при редактировании проекта один. Остальные включаются в основной исходный файл директивой ассемблера include. 8. Создание программы Напишите исходный текст вашей программы, используя команды выбранного микроконтроллера и директивы пакета MPASM. Программа должна начинаться с директивы List с названием выбранного устройства, и заканчиваться end. 9. Откомпилируйте программу (постройте проект). Откомпилируйте свою программу выбрав команду Project> Build All. После завершения процесса будет вызвано окно с генерированной коммандной строкой, перечнем предупреждений или ошибок (если есть) и результатом компиляции: были ли ошибки (build failed) или нет (build successful ). Помощь при исправлении ошибок может оказать файл-листинг, вызвать который можно из меню таким образом: Window> Absolute Listing. В результате выполнения данного этапа в папке с вашим проектом создастся ряд дополнительных файлов, имеющих отношение к вашему проекту (lst, hex). 10. Работа программы в пошаговом режиме. Проконтролируйте правильность выполнения программ, для чего выполните следующие действия: · вызовите окно просмотра Window> Watch Windows и внесите в него мнемоническое название регистров, используемых в проекте; · вызовите окно регистров общего назначения Window> File Registers; · вызовите окно памяти программ Window> Program Memory > ; · проведите сброс вашей программы выбрав команду Debug> Reset. В результате этого подсветится первая команда вашей программы, адрес которой является 0000; · выполните программу в пошаговом режиме, для чего выберете команду Debug> Run> Step (F7) или Debug> Run> Step Over (F8). Каждый выбор команды меню будет выполнять одну команду вашей программы. Результат выполнения вашей программы контролируется в соответствующих вызванных панелях - Watch Windows, File Registers, Program Memory.
Подготовка к выполнению работы 1. Согласно варианту из таблицы 5.5. нарисовать подробный алгоритм и написать программу по нахождению значения функции для соответствующего микроконтроллера семейства MicroChip. Таблица 7. Варианты задания
2. Создать проект и написать программу по нахождению значения функции для соответствующего микроконтроллера используя ППП MPLab. 3. Проконтролировать правильность выполнения программы в пошаговом режиме с фиксацией результатов в соответствующих панелях ППП MPLab.
Порядок выполнения работы Набор и запуск программы будет осуществляться с помощью ППП MPLab версии 4.99, который обладает всеми рассмотренными ранее компонентами: Запустите пакет IDE MPLab. Выполнение программы рассмотрим на примере: Пример1. Найти значение функции , где А, В, С – 1-но байтные числа. Результат сохранить в область регистров общего назначения по адресу 0х30. А. А=54, В=75, C=2А Ход работы: 1. Составляем алгоритм решения задачи. Параллельно определяем параметры настройки периферийных модулей и расположение переменных в области регистров общего назначения, необходимых для решения задачи. Расширенный алгоритм программы представлен на рисунке 12. Рисунок 12 - Алгоритм программы нахождения значения функции. 2. Затем, согласно пунктов 1 - 7 раздела 1.4. (Порядок создания простого проекта) создаем проект и сохраняем его в рабочую папку своей программы. Далее в проекте открываем созданный ранее файл и вносим туда согласно таблицы написанную программу. Программа, построенная в соответствии с алгоритмом, приведена в таблице 8. Таблица 8. Исходный код программы
3. Компилируем программу и проверяем ее работоспособность согласно пп. 9, 10 раздела 1.4. (Порядок создания простого проекта) Содержание отчета 1. Подробный алгоритм по нахождению значения функции для соответствующего микроконтроллера. 2. Распечатанный файл *.LST, сгенерированный из проекта программой MPASM. 3. Результат выполнения программы по нахождению значения функции. 5. Контрольные вопросы 1. Что такое гарвардская архитектура микроконтроллера. 2. Что такое RISC архитектура микроконтроллера. 3. Что представляет собой организация памяти микроконтроллера семейства MicroChip. 4. Что такое регистр специального назначения. 5. Регистр STATUS. Его назначение. 6. Биты конфигурации. Назначение. 7. Организация счетчика команд в микроконтроллерах семейства MicroChip. 8. Состав пакета MPLab. Организация работы. ЛИТЕРАТУРА 1. Предко М. Руководство по микроконтроллерам. Том 1, 2. / Пер. с англ. под ред. Шагурина И.И., Лужанского С.Б. – М.: Постмаркет, 2001. – 520с 2. Яценков В.С. Микроконтроллеры MicroCHIP. Практическое руководство. М.: Горячая линия – Телеком, 2002. – 296с. 3. Трамперт В. AVR-RISC микроконтроллеры. Архитектура. Аппаратные ресурсы, система команд, программирование, применен, МК Пресс., 2006. - 464 с 4. Белов А.В. Конструирование устройств на микроконтроллерах, Наука и техника, 2005. - 256 с ПРИЛОЖЕНИЕ МИКРОКОНТРОЛЛЕР PIC12C508 ПАМЯТЬ ДАННЫХ
Регистр OPTION
-GPWU – Разрешение выхода из режима SLEEP по изменению сигнала на входах GP0, GP1, GP3. 1 – запрещено; 0 – разрешено. -GPPU – Бит включения подтягивающих резисторов на входах GP0, GP1, GP3. 1 – выключено; 0 – включены. T0CS – Выбор тактового сигнала для TMR0. 1 – внешний тактовый сигнал с вывода T0CKI; 0 – внутренний тактовый сигнал. T0SE – Выбор фронта приращения TMR0 при внешнем тактовом сигнале. 1 – приращение по заднему фронту сигнала на выводе T0CKI; 0 - приращение по переднему фронту сигнала на выводе T0CKI. PSA – Выбор включения предделителя. 1 - предделитель включен перед WDT; 0 - предделитель включен перед TMR0/ PS2 - PS0 – Установка коэффициента деления предделителя (1: 2 – 1: 256). Регистр STATUS
GPWUF – Бит сброса GPIO. 1 – сброс произошел при выходе из режима SLEEP по изменению сигнала на входе; 0 – другой вид сброса. -TO – Флаг переполнения сторожевого таймера. 1 – после включения питания или выполнения команд CLRWDT или SLEEP; 0 – после переполнения WDT. -PD – Флаг включения питания. 1 - после включения питания или выполнения команд CLRWDT; 0 - после выполнения команды SLEEP. Z – Флаг нулевого результата. DC – Флаг десятичного переноса/заема между полубайтами (заем имеет инверсное значение). C - Флаг десятичного переноса/заема (заем имеет инверсное значение).
Регистр OSCCAL
CAL3 - CAL0 – Биты калибровки внутреннего RC генератора.
БИТЫ КОНФИГУРАЦИИ МИКРОКОНТРОЛЛЕРА. MCLRE – Бит выбора режима работы вывода –MCLR. 1 – MCLR включен; 0 - MCLR подключен к Vdd (внутресхемно). -CP – Бит защиты памяти программ. 1 - защита памяти программ выключена; 0 - защита памяти программ включена. WDTE – Бит разрешения работы сторожевого таймера. 1 –. WDT включен; 0 – WDT выключен. FOSC1, FOSC0 – Биты выбора режима тактового генератора. EXTRC – внешняя RC цепочка; INTRC – внутренняя RC цепочка; XT, LP – внешний резонатор. МИКРОКОНТРОЛЛЕР PIC16F84A
ПАМЯТЬ ДАННЫХ
Регистр STATUS
IRP - Зарезервирован, должен поддерживаться равным '0' RP1 - Зарезервирован, должен поддерживаться равным '0' RPO: Выбор банка памяти данных (используется при прямой адресации). 1 - Банк 1; 0 - Банк 0. -TO – Флаг переполнения сторожевого таймера. 1 – после включения питания или выполнения команд CLRWDT или SLEEP; 0 – после переполнения WDT. -PD – Флаг включения питания. 1 - после включения питания или выполнения команд CLRWDT; 0 - после выполнения команды SLEEP. Z – Флаг нулевого результата. DC – Флаг десятичного переноса/заема между полубайтами (заем имеет инверсное значение). C - Флаг десятичного переноса/заема (заем имеет инверсное значение).
Регистр OPTION_REG
-RBPU: Включение подтягивающих резисторов на входах портаВ. 1 - подтягивающие резисторы отключены; 0 - подтягивающие резисторы включены. INTEDG: Выбор активного фронта сигнала на входе внешнего прерывания INT 1 - прерывания по переднему фронту сигнала PB0/INT; 0 - прерывания по заднему фронту сигнала PB0/INT. TOCS: Выбор тактового сигнала для TMRO 1 - внешний тактовый сигнал с вывода PA4/TOCKI 0 - внутренний тактовый сигнал (CLKOUT) TOSE: Выбор фронта приращения TMRO при внешнем тактовом сигнале. 1 - приращение по заднему фронту сигнала на выводе PA4/TOCKI 0 - приращение по переднему фронту сигнала на выводе PA4/TOCKI PSA: Выбор включения предделителя. 1 - предделитель включен перед WDT; 0 - предделитель включен перед TMRO. PS2: PSO: Установка коэффициента деления предделителя(1: 2 – 1: 256). Регистр INTCON
GIE: Глобальное разрешение прерываний. 1 - разрешены все немаскированные прерывания; 0 - все прерывания запрещены. EEIE: Разрешение прерываний по окончанию записи в EEPROM/ 1 - прерывание по окончанию записи разрешено; 0 - прерывание по окончанию записи запрещено. TOIE: Разрешение прерывания по переполнению TMR0. 1 - прерывание разрешено; 0 - прерывание запрещено. INTE: Разрешение внешнего прерывания по входу INT. 1 - прерывание разрешено; 0 - прерывание запрещено. RBIE: Разрешение прерывания по изменению сигнала на входах порта В. 1 - прерывание разрешено; 0 - прерывание запрещено. TOIF: Флаг прерывания по переполнению TMR0 1 - произошло переполнение TMR0 (сбрасывается программно); 0 - переполнения TMR0 не было. INTF: Флаг внешнего прерывания по входу INT. 1 - выполнено условие внешнего прерывания на выводе RB0/INT (сбрасывается программно) 0 - внешнего прерывания не было RBIF: Флаг прерывания по изменению уровня сигнала на входах RВ7 – RВ4. 1 - зафиксировано изменение уровня сигнала на одном из входов RВ7 – RВ4 (сбрасывается программно); 0 - не было изменения уровня сигнала ни на одном из входов RВ7 – RВ4. Регистр EECON1
EEIF: Флаг прерывания по окончании записи в EEPROM. 1 = запись завершена (сбрасывается программно); 0 = запись не завершена или не начиналась. WRERR: Флаг ошибки записи в EEPROM память данных 1 - запись прервана преждевременно; 0 - запись завершена. WREN: Разрешение записи в EEPROM память данных. 1 - запись разрешена; 0 - запись запрещена. WR: Инициализировать запись в EEPROM память данных. 1 - инициализировать запись (программно может быть только установлен в 1, сбрасывается в 0 аппаратно); 0 - запись завершена. RD: Инициализировать чтение из EEPROM памяти данных. 1 - инициализировать чтение (программно может быть только установлен в 1, сбрасывается в 0 аппаратно); 0 - чтение завершено. БИТЫ КОНФИГУРАЦИИ МИКРОКОНТРОЛЛЕРА. PWRTE – Бит разрешения задержки при включении питания. 1 – задержка отключена; 0 - задержка включена. -CP – Бит защиты памяти программ. 1 - защита памяти программ выключена; 0 - защита памяти программ включена. WDTE – Бит разрешения работы сторожевого таймера. 1 –. WDT включен; 0 – WDT выключен. FOSC1, FOSC0 – Биты выбора режима тактового генератора. RC – внешняя RC цепочка; HS, XT, LP – внешний резонатор. МИКРОКОНТРОЛЛЕР PIC12CE673 ПАМЯТЬ ДАННЫХ
Регистр STATUS
IRP - Зарезервирован, должен поддерживаться равным '0' RP1 - Зарезервирован, должен поддерживаться равным '0' RPO: Выбор банка памяти данных (используется при прямой адресации). 1 - Банк 1; 0 - Банк 0. -TO – Флаг переполнения сторожевого таймера. 1 – после включения питания или выполнения команд CLRWDT или SLEEP; 0 – после переполнения WDT. -PD – Флаг включения питания. 1 - после включения питания или выполнения команд CLRWDT; 0 - после выполнения команды SLEEP. Z – Флаг нулевого результата. DC – Флаг десятичного переноса/заема между полубайтами (заем имеет инверсное значение). C - Флаг десятичного переноса/заема (заем имеет инверсное значение).
Регистр OPTION_REG
-RBPU: Включение подтягивающих резисторов на входах портаВ. 1 - подтягивающие резисторы отключены; 0 - подтягивающие резисторы включены. INTEDG: Выбор активного фронта сигнала на входе внешнего прерывания INT 1 - прерывания по переднему фронту сигнала PB0/INT; 0 - прерывания по заднему фронту сигнала PB0/INT. TOCS: Выбор тактового сигнала для TMRO 1 - внешний тактовый сигнал с вывода PA4/TOCKI 0 - внутренний тактовый сигнал (CLKOUT) TOSE: Выбор фронта приращения TMRO при внешнем тактовом сигнале. 1 - приращение по заднему фронту сигнала на выводе TOCKI 0 - приращение по переднему фронту сигнала на выводе TOCKI PSA: Выбор включения предделителя. 1 - предделитель включен перед WDT; 0 - предделитель включен перед TMRO. PS2: PSO: Установка коэффициента деления предделителя (1: 2 – 1: 256). Регистр INTCON
GIE: Глобальное разрешение прерываний. 1 - разрешены все немаскированные прерывания; 0 - все прерывания запрещены. PEIE: Разрешение прерываний от дополнительной встроенной периферии 1 - прерывание по окончанию записи разрешено; 0 - прерывание по окончанию записи запрещено. TOIE: Разрешение прерывания по переполнению TMR0. 1 - прерывание разрешено; 0 - прерывание запрещено. INTE: Разрешение внешнего прерывания по входу INT. 1 - прерывание разрешено; 0 - прерывание запрещено. RBIE: Разрешение прерывания по изменению сигнала на входах порта GP. 1 - прерывание разрешено; 0 - прерывание запрещено. TOIF: Флаг прерывания по переполнению TMR0 1 - произошло переполнение TMR0 (сбрасывается программно); 0 - переполнения TMR0 не было. INTF: Флаг внешнего прерывания по входу INT. 1 - выполнено условие внешнего прерывания на выводе INT (сбрасывается программно) 0 - внешнего прерывания не было RBIF: Флаг прерывания по изменению уровня сигнала на входах GP. 1 - зафиксировано изменение уровня сигнала на одном из входов GP (сбрасывается программно); 0 - не было изменения уровня сигнала ни на одном из входов RВ7 – RВ4. Регистр PIR1
ADIF: Флаг разрешения прерывания по завершению преобразования от АЦП. Регистр PIE1
ADIF: Битразрешения прерывания по завершению преобразования от АЦП. Регистр ADCON0
ADCS1, ADCS0: Выбор частоты преобразования АЦП; CHS1, CHS0: Выбор канала преобразования АЦП; GO/DONE: Бит статуса преобразования АЦП; ADON: Бит запуска преобразования АЦП. Регистр ADCON1
PCFG2- PCFG0: Биты конфигурации портов МК
БИТЫ КОНФИГУРАЦИИ МИКРОКОНТРОЛЛЕРА. PWRTE – Бит разрешения задержки при включении питания. 1 – задержка отключена; 0 - задержка включена. MCLRE –Бит выбора режима работы вывода –MCLR. 1 – MCLR включен; 0 - MCLR подключен к Vdd (внутресхемно). -CP – Бит защиты памяти программ. 1 - защита памяти программ выключена; 0 - защита памяти программ включена. WDTE – Бит разрешения работы сторожевого таймера. 1 –. WDT включен; 0 – WDT выключен. FOSC2, FOSC0 – Биты выбора режима тактового генератора. 111 = EXTRC, Clockout on OSC2 110 = EXTRC, OSC2 is I/O 101 = INTRC, Clockout on OSC2 100 = INTRC, OSC2 is I/O 010 = HS Oscillator 001 = XT Oscillator 000 = LP Oscillator Популярное:
|
Последнее изменение этой страницы: 2016-05-03; Просмотров: 717; Нарушение авторского права страницы