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

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

  1. В чем заключается отличие команд JB и JNB ?

  2. В чем состоит отличие команд JMP и AJMP ?

  3. В чем состоит отличие команд JC и JNC ?

  4. Какие команды перехода влияют на флаги?

  5. Какая команда проверяет флаг Z на равенство "0"?

  6. Какие команды взаимодействуют с флагом Z?

  7. Какие действия выполняет команда CJNE ?

  8. Какие действия выполняет команда DJNZ ? Можно ли командой перехода изменить флаг Z?

  9. Существует ли разница между командами ACALL и LCALL ?

  10. Каково значение над стеком, если Вы находитесь в подпрограмме?

  11. Какие команды взаимодействуют с флагом С ?

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

13. По каким условиям возможно организовать ветвящиеся вычислительные процессы в МК51.

14. В чем отличие команд возврата из подпрограмм RET и RETI.

15. Какие процессы и источники могут вызвать ситуации прерываний в МК51.

16. Какие условия могут вызвать блокировку прерывания и его необслуживание.

17. Каков порядок опроса флагов прерываний (приоритет обслуживания) установлен по умолчанию в МК51. Каким образом можно изменить эти приоритеты.

Лабораторная работа №6 изучение системы прерываний Практическая часть.

1. Сохранение состояния центрального процессора во время прерываний

При распознавании запроса прерывания управление программой переходит к соответствующей сервисной подпрограмме путем выполнения центральным процессором команды длинного вызова (LCALL). Адрес программы охраняется в стеке. После завершения сервисной подпрограммы инструкция RETI возвращает процессор в основную программу в точку прерывания. Программа обработки прерывания не должна изменять значения переменных, используемых в основной программе, для возможности продолжения правильной работы последней. Инструкции PUSH и POP обеспечивают сохранение регистров в стеке.

LOC EQU $ ; Запоминание счетчика адреса

ORG 0C003H ; Начальный адрес подпрограммы прерывания

LJMP SERV

22

2. Ввести в аккумулятор данные из порта 2 и выделить требуемые биты по маске, находящейся в R0:

MOV A,P2 ; Ввод из порта 2

ANL A,R0 ; Маскирование

3.Выполнить логический сдвиг влево двухбайтного слова, расположенного в (R2) (A):

SHIF: RLC A ; Сдвиг младшего байта

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

RLC A ; Сдвиг старшего байта

XCH A,R2 ; Обмен

4. Выполнить арифметический сдвиг двухбайтного слова (R2) (A) вправо:

SHIF: SETB C ; Установка флага переноса

XCH A,R2 ; Обмен байтами

B A.7,NO ; Если R2.7 не равно 1, то сброс

CLR C ; флага переноса

NO: RRCA ; Сдвиг флага переноса в расширитель

XCH A,R2 ; Обмен

RRC A ; Сдвиг младшего байта

5. Умножить аккумулятор на число 2 в степени Х, где Х – число не более 8, хранящееся в R2. Умножение на 2 заменяется арифметическим сдвигом влево аккумулятора и расширителя R1:

MOV R1,#0 ; Сброс R1

CLR C ; Сброс флага переноса

L: RLC A ; Арифметический сдвиг влево объединенного

XCH A,R1 ; 16-битного результата в

RLC A ; регистровой паре (R1)(A)

XCH A,R1

DJNZ R2,L

6. Определить четность числа единиц в аккумуляторе :

CLR F0 ; Сброс F0

MOV R7,#9 ; Число повторов

L: RRC A ; Пересылка бита А.0 в перенос

JNC N ; Пропустить, если бит равен 0

CPL F0 ; Подсчет паритета

N: DJNZ R7,L

После выполнения программы аккумулятор сохранит свое значение, флаг F0 будет установлен, если число единиц в аккумуляторе было нечетно. Флаг F0 входит в состав PSW и в данном примере специфицирован пользователем для выполнения функций флага паритета.

15

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