Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prn_ 51_pr1.doc
Скачиваний:
17
Добавлен:
19.02.2016
Размер:
370.18 Кб
Скачать

Задания.

Создать файл с программой на языке ассемблер :

ORG 0С100H

MOV A,#21H

INC A

ADD A,#11H

MOV B,#5

MUL AB

END

  1. Запустить транслятор и проверить программу на наличие ошибок.

  2. Выполнить пошаговую трассировку и убедиться в ее работоспособности.

  3. После выполнения программы в регистре А должно быть число FFh, в В – 00h.

Контрольные вопросы

1. Какими типами информационных объектов может оперировать АЛУ ИК51.

2. Дать описание формата слова состояния программы (PSW).

3. Охарактеризовать флаги PSW.

4. Какую емкость имеют резидентные ПЗУ и ОЗУ микроконтроллера МК51.

5. Для каких целей используется аккумулятор при работе контроллера.

6. Дать общую характеристику регистров специальных функций МК51.

7. Охарактеризуйте основные этапы программирования и отладки программного обеспечения для МК51.

Лабораторная работа №2.

КОМАНДЫ ПЕРЕСЫЛКИ ДАННЫХ.

Практическая часть.

I. Простые примеры использования программ передачи данных.

1. Записать в резидентную память данных (РПД) в ячейки с адресами 41H и 42H число 1С3АH:

MOV R0, #41H ; Загрузка в R0 указателя РПД

MOV @R0, #1CH ; Запись в РПД числа 1СН

INC R0 ; Продвижение указателя адреса РПД

MOV @R0, #3AH ; Запись в РПД числа 3AH

2. Передать содержимое буфера УАПП в РПД по косвенному адресу из R0:

MOV @R0,SBUF ; Передача принятого по последовательному каналу байта в РПД

3. Загрузить в указатель данных начальный адрес 7F00H массива данных, расположенного в внешней памяти данных (ВПД) :

MOV DPTR,#7F00H ; Загрузка начального значения указателя данных

4. Загрузить управляющее слово в регистр управления таймером:

MOV TCON,#00000101B

5. Обмен данными:

XCH A,R0 ;Обмен аккумулятора с регистром

XCHD A,@R0 ;Обмен младшей тетрады аккумулятора с младшей тетрадой байта РПД

6. Cбросить все флаги пользователя (область РПД с адресами 20H-2FH):

MOV R0,#20H ; Задание начального адреса области флагов

MOV R1,#0FH ; Счетчик (длина области флагов)

L: MOV @R0,#0 ; Сброс одного байта (8 флагов)

INC R0 ; Переход к следующему байту

DJNZ R1,L ; Цикл

II. Обращение к памяти программ.

1. Часто необходимо иметь в памяти программ таблицы готовых решений. Для возможности работы с такими таблицами, хранящимися в резидентной памяти программ (РПП) и внешней памяти программ (ВПП), имеются специальные команды обращения к памяти – MOVC. Поясним использование этих команд на следующем примере. Требуется составить подпрограмму вычисления синуса угла Х ( 00<X<890 с дискретностью 10). Наиболее быстрое вычисление функции можно получить путем выборки готового значения синуса из таблицы. Такая таблица для диапазона 00 - 890 займет 90 байтов с погрешностью 0,4%. Исходным параметром для подпрограммы служит значение угла Х, находящееся в аккумуляторе:

; Вычисления Sin(x) по таблице

; Вход: В (А) – X в пределах от 0 до 89 градусов

; Выход: (А) – дробная часть значения синуса

SINX: INC A ; Инкремент аккумулятора

MOVC A,@A+PC ; Загрузка значения синуса из таблицы

RET ; Возврат

; Таблица значений синуса

SINUS: DB 0 ; SIN(0)=0

DB 00000100B ; SIN(1)=0.017

DB 00001001B ; SIN(2)=0.035

DB 11111111B ; SIN(89)=0.999

Примечательно, что данная программа обходится без использования указателя данных DPTR. Инкремент А перед обращением к таблице необходим из-за наличия однобайтной команды возврата, расположенной между командой MOVC и началом таблицы значений синуса.

2. Вычислить произведение двух 4-х битных чисел, расположенных в младших тетрадах регистров R0 и R1. Для вычисления используется таблица произведений для всех комбинаций сомножителей (всего 256). Произведение двух младших тетрад имеет формат 1 байт.

; Вычисление Z=X*Y

; R0=0000.XXXX

; R1=0000.YYYY

; X и Y принимают значения 0 и 1

ORG 0C100H ; Директива ассемблера, задающая

; начальный адрес программы

MOV DPTR, #MAS ; Загрузка адреса массива

; в регистр-указатель данных

MOV A,R0 ; Пересылка множимого в аккумулятор

SWAP A ; Обмен тетрад аккумулятора

ORL A,R1 ; Формирование в аккумуляторе адреса

; произведения

MOVC A,@A+DPTR ; Загрузка в аккумулятор произведения

ORG 0C300H ; Директива ассемблера, задающая

; начальный адрес таблицы

; Директивы ассемблера, формирующие таблицу произведений

MAS DB 0,0,0,0,0,0,0,0 ; Z=0*Y

DB 0,0,0,0,0,0,0,0

DB 0,1,2,…..,0FH ; Z=1*Y (1*0,1*1,1*2,…,1*0FH)

DB 0,0FH,1EH,…,0E1 ; Z=0F*Y

; (0FH*0,0FH*1,0FH*2,…,0FH*0FH)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]