- •Министерство образования украины
- •«Однокристальный микроконтроллер i8051»
- •Практическая часть
- •Лабораторная работа №1 изучение программных и аппаратных средств разработки и отладки систем на базе i8051 Практическая часть.
- •Порядок выполнения работы
- •Name sample
- •Задания.
- •Лабораторная работа №2.
- •III. Работа с внешней памятью данных (впд).
- •1. Запомнить в впд содержимое регистров банка 0.
- •IV.Операции со стеком.
- •Индивидуальное задание на лабораторную работу
- •Задания 2
- •Контрольные вопросы.
- •Лабораторная работа №3.
- •Задания 1.
- •Задания 2
- •Контрольные вопросы.
- •Лабораторная работа №4
- •X equ p1.2
- •V equ p1.1
- •Задания 1.
- •Задания 2.
- •Задания 3.
- •Контрольные вопросы.
- •Лабораторная работа №5 команды передачи управления. Практическая часть.
- •3. Временная задержка длительностью 1с:
- •4. Передать управление одной из восьми программ rout0 - rout7 при появлении нулевого уровня на соответствующем входе порта 0. Наивысшим приоритетом обладает вход р1.0:
- •5. Множественное ветвление программы:
- •6. Последовательная передача параметров
- •Задания 1.
- •Индивидуальные задания 2
- •Контрольные вопросы.
- •Лабораторная работа №6 изучение системы прерываний Практическая часть.
- •1. Сохранение состояния центрального процессора во время прерываний
- •End Задания 1.
- •Контрольные вопросы.
- •Устранение дребезга контактов
- •2. Формирование импульсных сигналов
- •Xcor: cpl p3.4
- •3. Измерение длительности импульса
- •5. Передача символьной строки через последовательный порт.
- •6. Ввод данных с тумблеров, подключенных к линиям 3 и 4 порта 1 и выдача их на светодиоды, подключенные к линиям 4 и 5 порта 3.
- •7. Воспроизведение звука через динамик, подключенный к p3.5.
- •Задание 1
- •Задание 2
- •Контрольные вопросы.
- •3. Считывание текущего состояния таймера без нарушения процесса синхронизации.
- •4. Измерение длительности сигнала.
- •Задания.
- •Контрольные вопросы.
- •Лабораторная работа №9 организация Динамической индикации Практическая часть.
- •Задания.
- •Контрольные вопросы.
- •Лабораторная работа №10 вВод информации с Клавиатуры
- •Mov numb,#8
- •Movx @dptr,a ; Вывод следующего знакоместа
- •Задания.
- •Контрольные вопросы.
Лабораторная работа №6 изучение системы прерываний Практическая часть.
1. Сохранение состояния центрального процессора во время прерываний
При распознавании запроса прерывания управление программой переходит к соответствующей сервисной подпрограмме путем выполнения центральным процессором команды длинного вызова (LCALL). Адрес программы охраняется в стеке. После завершения сервисной подпрограммы инструкция RETI возвращает процессор в основную программу в точку прерывания. Программа обработки прерывания не должна изменять значения переменных, используемых в основной программе, для возможности продолжения правильной работы последней. Инструкции PUSH и POP обеспечивают сохранение регистров в стеке.
LOC EQU $ ; Запоминание счетчика адреса
ORG 0C003H ; Начальный адрес подпрограммы прерывания
LJMP SERV
;Выполнение подпрограммы
ORG LOC ; Восстановление счетчика адреса SERV:
PUSH PSW ; Запоминание регистра PSW
PUSH AСС
PUSH В
PUSH DPI
PUSH DPH
MOV PSW,#1000B ; Выбор регистрового банка 1
;..................;Тело подпрограммы
POP DPH ; Восстановление регистров
POP DPL ; в обратном порядке
POP В
POP AСС
POP PSW
RETI ; Возврат к основной программе
2. Все биты, которые вызывают прерывания (IE0, IE1, TF0, TF1, RI, TI), могут быть программно установлены или сброшены с тем же результатом, что и в случае их аппаратной установки или сброса. Т. е. прерывания могут программно вызываться или ожидающие обслуживания прерывания могут программно ликвидироваться. Кроме того, прерывания по ~INT0, ~INT1 могут вызываться программной установкой Р3.2=0 и РЗ.З=0, как показано в приведенном ниже примере:
EA EQU IE.7
MAIN: MOV IE, #00000101b
MOV IP, #04H
SETB EA
MOV P3,#11110011B
В предложенном примере запросы прерывания ~INT0 и ~INT1, имеющие различный приоритет, поступают одновременно. При этом обслуживается прерывание с высшим приоритетом.
Пример простейшей организации обслуживания прерываний представлен в приведенной ниже демо-программе.
В этой программе с помощью директивы Ассемблера А51 ORG задаются векторы процедур обслуживания прерывания INT0, которое возникает по срезу сигнала на входе РЗ.2, и прерывания по переполнению таймера Т0. В основной программе производится разрешение и настройка этих прерываний. При пошаговом запуске программы в отладчике DS51 можно контролировать состояния системы прерываний и таймера, вызывая соответствующие команды мз меню Peripheral. Чтобы вызвать прерывание необходимо установить соответствующие флаги в регистре TCON: TF0 - TCON.5 или IE0 - TCON.1. Сделать это можно с помощью команды >ТСОN.1 = 1 в окне выполнения Ехе (смотри Приложение).
NAME InterruptTest
PUBLIC START
PROG SEGMENT CODE
RSEG PROG
jmp START ; переход к основной программе
ORG 03H
jmp sInt0 ; вектор прерывания INT0
ORG OBH
jmp sIntT0 ; вектор прерывания по
; переполнению таймера T0
ORG 30H ; основная программа
START: mov IE,#10000011b ; разблокирование всех
; прерываний (бит IE.7),
; разрешение прерываний T0
; (бит IE.1) и INT0 (бит IE.0)
setb TCON.0 ; установка типа прерывания INT0
; по срезу сигнала на входе P3.2
setb TCON.4 ; пуск таймера T0
LOOP: inc A ; инкремент аккумулятора
jnz LOOP ; переход, если не нуль
ORG 60H ; процедуры обслуживания
; прерываний
sInt0: push PSW ; сохранение в стеке регистров
push ACC
push B
push DPL
push DPH
inc R5
; ….
pop DPH ; восстановление регистров
pop DPL
pop B
pop ACC
pop PSW
reti ; возврат из обработки INT0
IntT0: push PSW ; сохранение в стеке регистров
push ACC
push B
push DPL
push DPH
mov 20H,R5
; ….
pop DPH
pop DPL
pop B
pop ACC
pop PSW ; восстановление регистров
reti ; возврат из обработки T0