Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
microproc_lab.doc
Скачиваний:
9
Добавлен:
23.04.2019
Размер:
290.82 Кб
Скачать
  1. Подпрограмма обслуживания 8-и разрядного семисегментного индикатора.

Подпрограмма работает от прерывания таймера 0 и выводит на индикатор содержимое ячеек РПД по адресам 31h-38h. Ячейка 39h используется подпрограммой

ORG 030H

MAS DS 9

NUMB DS 1

ORG 0C00BH

JMP TIMERENT

ORG 0C100H

MOV NUMB,#8

ORL TMOD,#00000010B ;Установка режим 2 таймера 0

MOV TL0,#0 ; Загрузка таймера

MOV TH0,#0

SETB TR0 ; Старт Т/С0

SETB IE.1 ; Разрешение прерывания от Т/С0

SETB EA ; Разрешение прерываний

JMP $

TIMERENT: PUSH ACC ; Запоминание в стеке необх. регистров

PUSH 0

PUSH DPH

PUSH DPL

PUSH PSW

MOV DPTR,#8000H

MOV A,#0

MOVX @DPTR,A ; Гашение сегментов

DEC P1

DJNZ NUMB,NEXT

MOV NUMB,#8

MOV P1,#0F7H

NEXT: MOV A,#MAS ; Вычисление адреса символа

ADD A,NUMB

MOV R0,A

MOV A,@R0

MOVX @DPTR,A ; Вывод следующего знакоместа

POP PSW

POP DPL

POP DPH

POP 0

POP ACC

RETI

END

32

Задания.

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

ORG 0С100H

MOV A,#21H

INC A

ADDC 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

5

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

6

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