- •И.А. Дубров
- •Содержание
- •Введение
- •Лабораторная работа 1 Изучение интегрированной среды разработки mplab
- •Методика выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 2 Изучение запоминающих устройств микроконтроллеровPic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 3 Изучение работы параллельных портов микроконтроллеровPic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 4 Изучение работы последовательных портов микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 5 Изучение работы таймеров микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 6 Изучение работы аналого-цифрового преобразователя микроконтроллеровPic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 7 Изучение работы модуля захвата/сравнения/шим микроконтроллеровPic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Библиографический список
- •Приложение 1. Схема лабораторного макета
- •Bтfss— Условный переход при единичном битеbрегистраf
- •Call— Вызов подпрограммы
- •Goto— Переход по адресу
- •Incf— Декремент регистраf
- •Incfsz— Декремент регистраfи пропуск в случае нулевого результата
- •Iorlw— Побитное «или»Wи константыk
- •Retlw— Выход из подпрограммы с загрузкой в регистрWконстантыk
- •Return— Выход из подпрограммы
- •Rlf— Циклический сдвиг регистраfвлево через флаг переносаС
- •Rrf— Циклический сдвиг регистраfвправо через флаг переносаС
- •Sleep— Перейти в спящий режим
- •Основы микропроцессорной техники
- •620034, Екатеринбург, ул. Колмогорова 66.
Порядок выполнения работы
В данной лабораторной работе необходимо разработать и отладить программу, измеряющую напряжение на выходе потенциометра R1. Конкретное задание выдается преподавателем.
В качестве примера рассмотрим следующее задание. В исходном состоянии все светодиоды погашены. При повороте ручки потенциометра R1 на одно из делений с 1-го по 6-е включается соответствующий светодиод (HL1...HL6), остальные светодиоды гаснут.
Постановка задачи
Для решения данной задачи вполне достаточно 8-разрядной точности аналого-цифрового преобразования. Соответственно, весь диапазон цифровых отсчетов составляет 256 значений, а на одно деление шкалы потенциометра приходится 256/10=26 дискретных значений. Зависимость включения светодиодов от результатов аналого-цифрового преобразования можно представить в виде таблицы (см. табл. 6.1).
Таблица 6.1
Состояние светодиодов в зависимости от значения на выходе АЦП
Значение на выходе АЦП |
HL1 |
HL2 |
HL3 |
HL4 |
HL5 |
HL6 |
0...25 |
0 |
0 |
0 |
0 |
0 |
0 |
26...51 |
1 |
0 |
0 |
0 |
0 |
0 |
52...77 |
0 |
1 |
0 |
0 |
0 |
0 |
78...103 |
0 |
0 |
1 |
0 |
0 |
0 |
104...129 |
0 |
0 |
0 |
1 |
0 |
0 |
130...155 |
0 |
0 |
0 |
0 |
1 |
0 |
156...255 |
0 |
0 |
0 |
0 |
0 |
1 |
Разработка алгоритма программы
Алгоритм программы приведен на рис. 6.5.
В первом блоке осуществляется настройка портов ввода-вывода и аналого-цифрового преобразователя на соответствующие режимы работы и включение модуля АЦП. Нулевой разряд порта А настраивается на ввод информации, а остальные разряды порта А и порт С – на вывод. АЦП настраивается на работу с аналоговым входом AN0 и напряжением источника питания микроконтроллера в качестве источника опорного напряжения. При частоте кварцевого генератора 4 МГц выбирается FOSC/8. Для обеспечения 8-разрядного преобразования выбирается левое выравнивание результата, при этом достаточно анализировать значение регистра ADRESH.
Рис. 6.5. Блок-схема алгоритма основной программы
Во втором блоке запускается аналого-цифровое преобразование, а в третьем ожидается его завершение.
В блоках 4, 6, 8, 10, 12 и 14 производится сравнение результата аналого-цифрового преобразования с рассчитанными ранее порогами.
В блоке 5 выключаются все светодиоды, поскольку уровень измеряемого сигнала ниже первого порога.
В блоках 7, 9, 11, 13, 15 и 16 гасятся все светодиоды, кроме одного, в соответствии с табл. 6.1.
Далее программа возвращается к запуску следующего аналого-цифрового преобразования
Написание текста программы на языке Ассемблер
Исходный текст программы приведен далее:
;предварительные настройки
#include p16f873a.inc
__CONFIG _HS_OSC ;высокочаятотный кварцевый резонатор
ORG H'000' ;вектор сброса
GOTO BEGIN ;переход на начало основной программы
;начало основной программы
ORGH’005’
BEGIN: BSF STATUS,RP0 ;выбираем банк регистров 1
;задаем режимы работы параллельных портов
MOVLW B'00000001' ;PORTA, 7-1 выходы, PORTA, 0 вход
MOVWF TRISA ;программируем регистр направления PORTA
MOVLW B'11000000' ;PORTC,7-6 вход, PORTC,5-0 выходы
MOVWF TRISC ;программируем регистр направления PORTC
;задаем режим работы АЦП
MOVLW B'00001110' ;задаем аналоговый вход PORTA,0, левое выравн.
MOVWF ADCON1 ;программируем регистр АЦП 1
BCF STATUS,RP0 ;выбираем банк регистров 0
MOVLW B'01000001' ;задаем аналоговый вход PORTA,0 и включаем АЦП
MOVWF ADCON0 ;программируем регистр АЦП 0
NOP ;пауза 4 мкс
NOP ;|
NOP ;|
NOP ;|
;основная программа
M10: BSF ADCON0,GO ;запуск преобразования
M20: BTFSC ADCON0,GO ;ожидание окончания преобразования
GOTO M20 ;|
MOVLW D'26' ;первый порог сравнения
SUBWF ADRESH,W ;сравнение результата преобразования с порогом
BTFSS STATUS,C ;скачек, если выше порога
GOTO M30 ;переход к гашению всех светодиодов
MOVLW D'52' ;второй порог сравнения
SUBWF ADRESH,W ;сравнение результата преобразования с порогом
BTFSS STATUS,C ;скачек, если выше порога
GOTO M40 ;переход к вкюч. HL1 и гашению остальных светод.
MOVLW D'78' ;третий порог сравнения
SUBWF ADRESH,W ;сравнение результата преобразования с порогом
BTFSS STATUS,C ;скачек, если выше порога
GOTO M50 ;переход к вкюч. HL2 и гашению остальных светод.
MOVLW D'104' ;четвертый порог сравнения
SUBWF ADRESH,W ;сравнение результата преобразования с порогом
BTFSS STATUS,C ;скачек, если выше порога
GOTO M60 ;переход к вкюч. HL3 и гашению остальных светод.
MOVLW D'130' ;пятый порог сравнения
SUBWF ADRESH,W ;сравнение результата преобразования с порогом
BTFSS STATUS,C ;скачек, если выше порога
GOTO M70 ;переход к вкюч. HL4 и гашению остальных светод.
MOVLW D'156' ;второй порог сравнения
SUBWF ADRESH,W ;сравнение результата преобразования с порогом
BTFSS STATUS,C ;скачек, если выше порога
GOTO M80 ;переход к вкюч. HL5 и гашению остальных светод.
BCF PORTA,5 ;гашение HL1
CLRF PORTC ;гашение HL2...HL6
BSF PORTC,5 ;включение HL6
GOTO M10 ;возврат к началу основной программы
M30: BCF PORTA,5 ;гашение HL1
CLRF PORTC ;гашение HL2...HL6
GOTO M10 ;возврат к началу основной программы
M40: BSF PORTA,5 ;включение HL1
CLRF PORTC ;гашение HL2...HL6
GOTO M10 ;возврат к началу основной программы
M50: BCF PORTA,5 ;гашение HL1
CLRF PORTC ;гашение HL2...HL6
BSF PORTC,0 ;включение HL2
GOTO M10 ;возврат к началу основной программы
M60: BCF PORTA,5 ;гашение HL1
CLRF PORTC ;гашение HL2...HL6
BSF PORTC,1 ;включение HL3
GOTO M10 ;возврат к началу основной программы
M70: BCF PORTA,5 ;гашение HL1
CLRF PORTC ;гашение HL2...HL6
BSF PORTC,3 ;включение HL4
GOTO M10 ;возврат к началу основной программы
M80: BCF PORTA,5 ;гашение HL1
CLRF PORTC ;гашение HL2...HL6
BSF PORTC,4 ;включение HL5
GOTO M10 ;возврат к началу основной программы
END ;конец программы
Трансляция текста программы в машинные коды
Процесс создания нового проекта и компиляции программы подробно описан в лабораторной работе 1.
Тестирование и отладка
На этапе отладки программы необходимо выявить и устранить все возникшие на предыдущих этапах ошибки. Описание процесса программирования микроконтроллера и запуска программы приведен в лабораторной работе 1.
Сопровождение
Поскольку все программы, разрабатываемые при изучении курса ОМТ носят чисто учебный характер, то их работоспособность необходимо поддерживать лишь до момента защиты лабораторной работы преподавателю.