- •Содержание
- •Введение
- •Лабораторная работа 1 Изучение интегрированной среды разработки mplab
- •Методика выполнения работы
- •Создание нового проекта
- •Создание файла с исходным текстом программы
- •Добавление файла к проекту
- •Компиляция исходного текста программы в машинные коды
- •Запись кода программы во внутреннюю flash память микроконтроллера
- •Отладка (выполнение) программы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 2 Изучение запоминающих устройств микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Постановка задачи
- •Разработка алгоритма программы
- •Написание текста программы на языке Ассемблер
- •Трансляция исходного текста программы в машинные коды
- •Тестирование и отладка
- •Сопровождение
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 3 Изучение работы параллельных портов микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 4 Изучение работы последовательных портов микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Лабораторная работа 5 Изучение работы таймеров микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 6 Изучение работы аналого-цифрового преобразователя микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Постановка задачи
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 7 Изучение работы модуля захвата/сравнения/шим микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Библиографический список
- •Приложение 1. Схема лабораторного макета
- •Приложение 2. Краткое описание набора инструкций pic16
- •Приложение 3. Список команд pic16 и их подробное описание
- •Addlw – Сложение рабочего регистра w и константы k
- •Addwf – Сложение рабочего регистра w и регистра f
- •Andlw – Побитное «и» рабочего регистра w и константы k
- •Andwf – Побитное «и» рабочего регистра w и регистра f
- •Bтfsc – Условный переход при нулевом бите b регистра f
- •Bтfss – Условный переход при единичном бите b регистра f
- •Call – Вызов подпрограммы
- •Clrf – Обнуление регистра f
- •Clrw – Обнуление рабочего регистра w
- •Clrwdt – Сброс сторожевого таймера
- •Comf – Инверсия регистра f
- •Decf – Декремент регистра f
- •Decfsz – Декремент регистра f и пропуск в случае нулевого результата
- •Goto – Переход по адресу
- •Incf – Декремент регистра f
- •Incfsz – Декремент регистра f и пропуск в случае нулевого результата
- •Iorlw – Побитное «или» w и константы k
- •Iorwf – Побитное «или» w и регистра f
- •Movf – Пересылка регистра f
- •Movlw – Пересылка константы k
- •Movwf – Пересылка из регистра w в регистр f
- •Retfie – Возврат из подпрограммы с включением прерываний
- •Retlw – Выход из подпрограммы с загрузкой в регистр w константы k
- •Return – Выход из подпрограммы
- •Sleep – Перейти в спящий режим
- •Sublw – Вычитение w из константы k
- •Subwf – Вычитание w из регистра f
- •Swapf – Обмен местами ниблов в регистре f
- •Xorlw – Побитное «Исключающее или» w и константы k
- •Xorwf – Побитное «Исключающее или» w и регистра f
- •Основы микропроцессорной техники
- •620034, Екатеринбург, ул. Колмогорова 66.
Написание текста программы на языке Ассемблер
Исходный текст программы приведен далее:
; предварительные настройки
#include p16f873a.inc
CONFIG _HS_OSC ;
ORG H'000' ;вектор сброса
CNT EQU H'A0' ;определение регистра счетчика
;с адресом А0 (банк 1)
; запись возрастающих чисел в ОЗУ
BCF STATUS,RP1 ; ┬ выбираем банк регистров 1
BSF STATUS,RP0 ; ┘
MOVLW H'20' ;загрузка в рабочий регистр адреса
;первого РОН в банке 0
MOVWF FSR ;записываем начальный адрес
;в регистр косв. адресации
CLRF CNT ;обнуляем регистр счетчик
M10: MOVF CNT,W ;загружаем значение счетчика в рабочий регистр
MOVWF INDF ;сохраняем очередной отсчет в косвенно адресуемый РОН
INCF FSR,F ;увеличение адреса РОН
;в регистре косвенной адресации
INCF CNT,F ;увеличение счетчика на 1
MOVF CNT,W ;загружаем новое значение счетчика
;в рабочий регистр
XORLW H'60' ;сравниваем его с последним значением +1
BTFSS STATUS,Z ;если совпадают то скачек через одну команду
GOTO M10 ;если не совпадают, то возврат
;к записи следующей ячейки
;копирование из ОЗУ в EEPROM
MOVLW H'20' ;загрузка в рабочий регистр
;адреса первого РОН в банке 0
MOVWF FSR ;записываем начальный адрес
;в регистр косв. адресации
CLRF CNT ;обнуляем регистр счетчик адреса EEPROM
M20: BSF STATUS,RP1 ; ┬ выбираем банк регистров 3
BSF STATUS,RP0 ; ┘
BTFSC EECON1,WR ; ┬ проверка окончания предыдущей
; │ записи в EEPROM
GOTO M20 ; ┘
BCF STATUS,RP1 ; ┬ выбираем банк регистров 1
BSF STATUS,RP0 ; ┘
MOVF CNT,W ;загружаем значение счетчика в рабочий регистр
BSF STATUS,RP1 ; ┬ выбираем банк регистров 2
BCF STATUS,RP0 ; ┘
MOVWF EEADR ;сохраняем адрес очередной ячейки в регистре адреса
MOVF INDF,W ;считываем данные из очередного РОН
;в рабочий регистр
MOVWF EEDATA ;и сохраняем их в регистре данных EEPROM
BSF STATUS,RP1 ; ┬ выбираем банк регистров 3
BSF STATUS,RP0 ; ┘
BCF EECON1,EEPGD ;выбираем EEPROM
BSF EECON1,WREN ;разрешаем запись
BCF INTCON,GIE ;запрещаем прерывания
MOVLW H'55' ; ┐
MOVWF EECON2 ; │
MOVLW H'AA' ; ├ обязательная последовательность из пяти команд
MOVWF EECON2 ; │
BSF EECON1,WR ; ┘
BCF EECON1,WREN ;запрещаем запись
BCF STATUS,RP1 ; ┬ выбираем банк регистров 1
BSF STATUS,RP0 ; ┘
INCF FSR,F ;увеличение адреса РОН
;в регистре косвенной адресации
INCF CNT,F ;увеличение счетчика на 1
MOVF CNT,W ;загружаем новое значение счетчика
;в рабочий регистр
XORLW H'60' ;сравниваем его с последним значением +1
BTFSS STATUS,Z ;если совпадают то скачек через одну команду
GOTO M20 ;если нет, то переход к копированию
;очередной ячейки
M30: GOTO M30 ;зацикливаемся здесь
END ;конец программы