Лабораторная работа № 2
Исследование архитектуры однокристальных микроконтроллеров семейства MCS-51
Цель работы. Знакомство с организацией, программно-доступными элементами и системой команд однокристального микроконтроллера (ОМК) i8051 семейства MCS-51.
Описание лабораторного стенда. В качестве лабораторного стенда используется IBM-совместимый персональный компьютер с установленной интегрированной средой разработки программ Keil µVision.
Подготовка к работе
1. Изучить по конспекту лекций и приведенной ниже литературе следующие вопросы:
· состав и организация ОМК К1816ВЕ51;
· система команд ОМК;
· режимы работы узлов ОМК.
2. Настроить среду разработки программ Keil µVision
3. Выполнить задания по варианту 2.
Ход выполнения работы.
1.Настройка среды разработки программ
· Создать новый проект, используя Project -> New Project
· Создать новый файл для последующего ввода текста программы и сохранить его в папку проекта с расширением .asm
· Ввести текст программы
· Добавить файл с исходным текстом программы в проект.
· Далее необходимо выполнить компиляцию проекта, используя Project -> Built Target .
· Запустить отладку программы с помощью команды Debug -> Start / Stop Debug Session .
· Открыть окно памяти с помощью View -> Memory Window
· Затем, в открытом окне в поле Address ввести начальный адрес «дампа» резидентной памяти данных, например I: 20h
2.Выполнение задания
Задание 1. Обменять между собой содержимое ячеек 20Н и 22Н без потери содержимого аккумулятора.
org 0
XCH A, 20h ; обменять содержимое А и ячейки 20; A=4 20h=0;
XCH A, 22h ; обменять содержимое А и ячейки 22; A=7 22h=4;
XCH A, 20h ; обменять содержимое А и ячейки 20; A=0 20h=7;
END
Значение ячеек памяти перед выполнением программы.
Значение ячеек памяти после выполнением программы.
Задание 2. Вычислить выражение X1 div X2 + X3. Однобайтовые значения X1,X2,X3 хранятся в ячейках 20h,21h,22h соответственно; результат поместить в ячейку 23h.
org 0
MOV A, 20h ; загрузить значение из 20h в А
MOV B, 21h ; загрузить значение из 21h в В
DIV AB ; целая часть в А=A/B
MOV B, 22h ; загрузить значение из 22h в В
ADD A, B ; сложить значение хранящиеся в А и В
XCH A, 23h ; обменять А и ячейку 23h
END
Значение ячеек памяти перед выполнением программы:
Значение ячеек памяти после выполнения программы
Задание 3. Ввести из порта Р1 число (от 0 до 7) и, в зависимости от значения введенного числа, осуществить переход по адресу 40h, 58h, 60h, 32h, 56h, 36h, 65h, 20h (использовать команду косвенного перехода).
ORG 0
MOV @R0, P1
m0: CJNE R0,#0,m1 ; Если значение в R0 не равно 0 то перейти на метку m1
MOV A, #0 ; поместить в А 0
MOV DPTR, #40h; поместить в DPTR 40h
JMP @A+DPTR ; выполнить косвенный переход на A+DPTR
m1: CJNE R0,#1,m2
MOV A, #0
MOV DPTR, #58h
JMP @A+DPTR
m2: CJNE R0,#2,m3
MOV A, #0
MOV DPTR, #60h
JMP @A+DPTR
m3: CJNE R0,#3,m4
MOV A, #0
MOV DPTR, #32h
JMP @A+DPTR
m4: CJNE R0,#4,m5
MOV A, #0
MOV DPTR, #56h
JMP @A+DPTR
m5: CJNE R0,#5,m6
MOV A, #0
MOV DPTR, #36h
JMP @A+DPTR
m6: CJNE R0,#6,m7
MOV A, #0
MOV DPTR, #65h
JMP @A+DPTR
m7: CJNE R0,#7,m0
MOV A, #0
MOV DPTR, #20h
JMP @A+DPTR
END
Вывод: Приобретён опыт работы в IDE Keil uVision, а именно в написании программы под i8051микроконтроллеры и их отладки. Изучена и опробована система команд однокристального микроконтроллера i8051. Изучены принципы работы с портами и памятью.
Выполнил Кочубей П.М Мартынова А.С
Проверил: Онышко Д.А