Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Цифровые вычислительные устройства и микропроцессоры приборных комплексов

Тип Реферат
Предмет Коммуникации и связь
Просмотров
470
Размер файла
101 б
Поделиться

Ознакомительный фрагмент работы:

Цифровые вычислительные устройства и микропроцессоры приборных комплексов

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

Уфимский государственный авиационный технический университет

Кафедра авиационного приборостроения

Лабораторный практикум

по теме

«Цифровые вычислительные устройства и микропроцессоры приборных комплексов»

Выполнил студент гр. АП-540

Табулдин Р.А.

Проверил преподаватель

Неретина В.В.

Кумертау 2010


ЛАБОРАТОРНАЯ РАБОТА № 1

ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ КОМБИНАЦИОННОГО ТИПА

1.1 Цель работы

Целью работы является ознакомление студентов с математическим аппаратом, описывающим действия цифровых устройств, развитие навыков составления логических уравнений, их минимизации, а также реализации на основе полученных уравнений комбинационных устройств с учетом имеющегося набора логических элементов.

Компьютерные модели логических схем устройства:

1)

2)

3)


4)

5)


6)

Вывод: ознакомился с математическим аппаратом, описывающим действия цифровых устройств, а также реализовал на основе полученных уравнений комбинационных устройств с учетом имеющегося набора логических элементов.


ЛАБОРАТОРНАЯ РАБОТА № 2

ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ ПОСЛЕДОВАТЕЛЬНОСТНОГО ТИПА

2.1 Цель работы

Целью работы является ознакомления студентов с принципами функционирования последовательностных устройств, а также изучение методов анализа и синтеза синхронных счетчиков с различными коэффициентами счета.

Компьютерные модели логических схем устройства:

1)

3)

Вывод: ознакомился с принципами функционирования последовательностных устройств и изучил метод анализа и синтеза синхронных счетчиков.


ЛАБОРАТОРНАЯ РАБОТА № 3–6

ИЗУЧЕНИЕ СТРУКТУРНОЙ ОРГАНИЗАЦИИ И ПРИЕМОВ ПРОГРАММИРОВАНИЯ ОДНОКРИСТАЛЬНОГО

МИКРОКОНТРОЛЛЕРА К1816ВЕ48

3.1 Цель работы

Целью работы является изучение структурной организации, физического интерфейса, системы команд и средств расширения внутренних ресурсов однокристальных микроконтроллеров семейства МК48, а также освоение приемов программирования на языке ассемблера задач ввода и обработки данных, передачи управления, реализации средств реального времени.

Пример 1.1. Записать в РПД в ячейки с адресами 31Н и 32Н число 1C3FH:

LOAD: MOV R0,#31 ; загрузка в R0 указателя РПД

MOV @R0,#1C ; запись в РПД числа 1C

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

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

Пример 1.2. Передать содержимое регистров банка 0 в ВПД, начиная с адреса 30H:

SEL RB1 ; выбор банка регистров 1

MOV R0,#30h ; определение начального адреса ВПД

MOV R1,#0 ; определение начального адреса банка

; регистров

MOV R2,#8 ; счетчик регистров (циклов) = 8

LOOP: MOV A,@R1 ; пересылка байта из регистра в ВПД

MOVX @R0,A ; через аккумулятор

INC R0 ; продвижение указателей

INC R1

DJNZ R2,LOOP ; продолжить, если переданы не все регистры

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

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

; R0 = 0000XXXX

; R1 = 0000YYYY

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

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

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

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

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

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

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

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

ORG 0300 ; директива ассемблера, задающая начальный

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

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

DB 1*0,1*1,1*2,…,1*0F ; Z=0*Y

DB 0F*0, 0F*1, 0F*2,…, 0F*0F ; Z=0*Y

Сложение положительных двоичных чисел. Выполнение этой операции покажем на примере:

Переносы 1 1 1

Первое слагаемое 0 0 1 1 0 1

Второе слагаемое 0 0 1 1 0 1

Сумма 0 1 1 0 1 0

Пример 1.4. Сложить содержимое регистра R7 и ячейки РПД с адресом 30Н:

MOV R0,#30h ; загрузка в R0 адреса РПД

MOV A,R7 ; загрузка операнда в аккумулятор

ADD A,@R0 ; сложение

Суммирование десятичных чисел. Способ суммирования десятичных чисел зависит от того, какой двоичный код выбран для представления десятичных цифр. Ниже рассматривается операция суммирования при использовании кода 8421.

Двоичные представления десятичных цифр суммируются по обычным правилам сложения двоичных чисел. Если полученная сумма содержит десять или более единиц, то формируется единица переноса, передаваемая в следующий десятичный разряд, а из суммы вычитаются десять единиц. Полученный результат есть цифра соответствующего разряда суммы. Наличие в полученной сумме десяти или более единиц выявляется по следующим признакам: появление переноса из разряда 8, возникающего при суммировании цифр; наличие единиц одновременно в разрядах 8 и 4 либо 8 и 2 в полученной сумме. При этом требуется коррекция суммы прибавлением к ней шести единиц (числа 01102).

Покажем эти действия на примерах.

– Сложить десятичные цифры 6 и 2 и перенос 1, поступающий из предыдущего десятичного разряда.

Десятичная система Код 8421

Переносы 1 1 1 1

Первая цифра 6 0 1 1 0

Вторая цифра 2 0 0 1 0

Сумма 9 1 0 0 1

Коррекция —

Результат 1 0 0 1

В этом случае полученное в результате суммирования число 10012 меньше десяти и коррекция суммы не требуется.

– Сложить десятичные цифры 8 и 9.

Десятичная система Код 8421

Переносы 1 0 1 0

Первая цифра 8 1 0 0 0

Вторая цифра 9 1 0 0 1

Сумма 7 0 0 0 1

Коррекция 0 1 1 0

Результат 0 1 1 1

– Сложить десятичные цифры 6 и 7.

Десятичная система Код 8421

Переносы 1 0 1 1 1 0

Первая цифра 6 0 1 1 0

Вторая цифра 7 0 1 1 1

Сумма 3 1 1 0 1

Коррекция 0 1 1 0

Результат 0 0 1 1

Пример 1.5. Сложить десятичные двоично-кодированные числа (BCD-числа), расположенные в A и R7:

ADD A,R7 ; двоичное сложение

DA A ; коррекция результата

Алгебраическое сложение с использованием дополнительного кода. Для сложения чисел со знаком необходимо отрицательное число перевести в дополнительный код. В двоичной системе счисления дополнительный код отрицательного числа формируется по следующему правилу: инвертируются (путем замены 0 на 1 и 1 на 0) цифры всех разрядов, кроме знакового, и в младший разряд прибавляется единица. Например, если =1 101102, то = 1 010102 (знаковые разряды выделены полужирным шрифтом). Обратное преобразование из дополнительного кода в прямой код производится по тому же правилу.

Рассмотрим примеры выполнения операции сложения.

Пусть =0 10110, =1 01101.

Переносы 1 1 1 1

Первое слагаемое 0 1 0 1 1 0

Второе слагаемое 1 1 0 0 1 1

Сумма 0 0 1 0 0 1

Как указывалось выше, перенос, возникающий из знакового разряда, отбрасывается.

Изменим на обратный знаки слагаемых (по отношению к предыдущему примеру): =1 10110, =0 01101. Очевидно, ожидаемый ответ = 1 01001.

Переносы 1

Первое слагаемое 1 0 1 0 1 0

Второе слагаемое 0 0 1 1 0 1

Сумма 1 1 0 1 1 1

Сумма 1 0 1 0 0 1

Таким образом, если результат сложения есть отрицательное число, то оно оказывается представленным в дополнительном коде.

Для вычитания 8-разрядных чисел без знака может быть использовано выражение , где – поразрядная инверсия . Другой способ вычитания может быть основан на следующем выражении: .

Пример 1.6. Вычитание байтов. Операция вычитания может быть выполнена двумя способами: переводом вычитаемого как отрицательного числа в дополнительный код с последующим сложением; переводом уменьшаемого в обратный код с последующей инверсией суммы.

Пусть требуется вычесть из A содержимое регистра R6. Вычитание выполнить в соответствии с выражением . Установка флага C после выполнения сложения будет свидетельствовать об отрицательном переполнении.

CPL A ; инверсия аккумулятора

ADD A,R6 ; сложение

CPL A ; инверсия суммы (получение разности)

Пример 1.7. Получить разность 2-байтных чисел без знака. Операнды располагаются в РПД. Адрес уменьшаемого хранится в R1, а вычитаемого – в R0. Результат поместить на место уменьшаемого:

; вычисление Z = X–Y

; X, Y – РПД

; R0 – адрес Y

; R1 – адрес X

; результат на место X

SUBSTR: MOV A,@R0 ; загрузка младшего байта Y

CPL A ; получение дополнительного кода Y

INC A ;

ADD A,@R1 ; вычитание младших байт

MOV @R0,A ; запоминание младшего байта разности

INC R0 ; переход к старшим байтам X и Y

INC R1 ;

MOV A,@R0 ; загрузка старшего байта Y

CPL A ; обратный код Y

ADDC A,@R1 ; вычитание старших байт

MOV @R0,A ; запоминание результата

Умножение двоичных чисел. Пусть производится умножение чисел 11012 и 10112.

1 1 0 1 множимое

1 0 1 1 множитель

1 1 0 1 1-е частичное произведение

1 1 0 1 2-е частичное произведение

0 0 0 0 3-е частичное произведение

1 1 0 1 4-е частичное произведение

1 0 0 0 1 1 1 1 произведение

Как видно из примера, при выполнении умножения формируются частичные произведения (произведения множимого на цифры разрядов множителя), которые суммируются с соответствующими сдвигами друг относительно друга. В цифровых устройствах процессу суммирования частичных произведений придают последовательный характер: формируется одно из частичных произведений, к нему с соответствующим сдвигом прибавляется следующее частичное произведение, к полученной сумме двух частичных произведений прибавляется с соответствующим сдвигом очередное частичное произведение, и так далее, пока не будут просуммированы все частичные произведения. Этот процесс суммирования можно начинать с младшего либо старшего частичного произведения.

Ниже показаны процессы при умножении с суммированием частичных произведений, начиная со старшего частичного произведения (используется приведенный выше пример умножения чисел 11012 и 10112).

1 1 0 1 4-е частичное произведение

1 1 0 1 0 сдвиг на один разряд влево

0 0 0 0 3-е частичное произведение

1 1 0 1 0 сумма 4- и 3-го частичных произведений

1 1 0 1 0 0 сдвиг на один разряд влево

1 1 0 1 2-е частичное произведение

1 0 0 0 0 0 1 сумма 4-, 3- и 2-го частичных произведений

1 0 0 0 0 0 1 0 сдвиг на один разряд влево

1 1 0 1 1-е частичное произведение

1 0 0 0 1 1 1 1 произведение

Рассмотрим выполнение операции умножения с суммированием частичных произведений, начиная с младшего частичного произведения на примере умножения чисел 11012 и 10112.

1 1 0 1 1-е частичное произведение

0 1 1 0 1 сдвиг на один разряд вправо

1 1 0 1 2-е частичное произведение

1 0 0 1 1 1 сумма 1- и 2-го частичных произведений

1 0 0 1 1 1 сдвиг на один разряд вправо

0 0 0 0 3-е частичное произведение

1 0 0 1 1 1 сумма 1-, 2- и 3-го частичных произведений

1 0 0 1 1 1 сдвиг на один разряд вправо

1 1 0 1 4-е частичное произведение

1 0 0 0 1 1 1 1 сумма частичных произведений

1 0 0 0 1 1 1 1 сдвиг вправо, произведение

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

Пример 1.8. Умножить однобайтные целые числа без знака. В регистре R1 размещен множитель, в регистре R2 – множимое. Двухбайтный результат умножения будет размещен в аккумуляторе (старший байт) и в R1 (младший байт) вместо множителя. В регистр R3, выполняющий функции счетчика программных циклов, загружается число 8 (число бит множителя). Умножение выполняется младшими битами вперед со сдвигом вправо частичного произведения. Последовательность действий при этом методе умножения следующая:

– Содержимое аккумулятора и регистра-расширителя R1 сдвигается вправо на один бит так, что младший бит множителя, выдвигаемый из регистра R1, помещается в триггер флага C.

– Если C = 1, то множимое добавляется к содержимому аккумулятора, в противном случае никаких операций не производится.

– Декрементируется счетчик циклов R3, и если его содержимое не равно нулю, то все действия повторяются.

– Перед выходом из подпрограммы формируется окончательный результат сдвигом частичного результата на один бит вправо:

MPL: MOV R3,#8 ; загрузка счетчика циклов

CLR A ; очистка аккумулятора

CLR C ; очистка признака переноса

SHIFT: RRC A ; сдвиг аккумулятора вправо

XCH A,R1 ; обмен аккумулятора и R1

RRC A ; сдвиг множителя с занесением

; выдвигаемого бита в C

XCH A,R1 ; обмен аккумулятора и R1

JNC RESULT ; если C = 1, то суммирование

ADD A,R2 ; прибавление множимого

RESULT: DJNZ R3,SHIFT ; декремент счетчика и проверка

; окончания операции (R3 = 0)

RRC A ; сдвиг аккумулятора

XCH A,R1 ; обмен

RRC A ; сдвиг содержимого R1

XCH A,R1 ; обмен

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

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

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

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

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

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

XCH A,R1 ;

DJNZ R2,LOOP ; цикл

3.4.2. Изучение команд манипуляции флажками и передачи управления

1) Изучить организацию стека микроконтроллера ВЕ48;

2) Рассмотреть систему команд манипуляции флажками, условных и безусловных переходов, вызова подпрограмм;

3) Ознакомиться с приведенными ниже примерами программ на языке ассемблера;

4) Произвести ввод, отладку и трансляцию в объектный код этих программ;

5) Выполнить программы по шагам с просмотром результатов выполнения в регистрах и оперативной памяти.

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

CLR F0 ; сброс F0

MOV R7,#8 ; число повторов

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

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

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

NEXT: DJNZ R7,LOOP ; повторить 8 раз

Пример 2.2. Передать управление по метке LL, если переключатель банка регистров (бит PSW.4) установлен:

JBSET: MOV A,PSW ; передача PSW в аккумулятор

JB4 LL ; переход, если A.4 = 1

LL: … ;

Пример 2.3. Осуществить переход из нулевого банка памяти программ к программе с именем ROUT, расположенной в первом банке памяти программ:

SEL MB1 ; установка флага MB

JMP ROUT ; переход к программе ROUT

Пример 2.4. Множественное ветвление программы. Допустим, что результатом работы некоторой программы является число X (в пределах от 0 до 15). Необходимо организовать передачу управления 16 различным программам с именами ROUT0–ROUTF в зависимости от вычисленного значения X:

ORG 0 ; задание начального адреса программы

ANL A,0F ; сброс старшей тетрады A

; во избежание ошибки перехода

JMPP @A ; обращение к таблице векторов переходов

; таблица векторов переходов

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

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

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

Преобразование чисел из одной системы счисления в другую. Перевод шестнадцатеричных чисел в двоичную систему счисления достигается представлением цифр шестнадцатеричного числа четырехразрядными двоичными числами. Например,

A7B = 1010 0111 1011

A 7 B

Перевод в десятичную систему счисления. Так как перевести числа из двоичной системы в шестнадцатеричную и обратно нетрудно, то для простоты выкладок рассмотрим перевод чисел из шестнадцатеричной системы и обратно.

В качестве примера перевода числа из шестнадцатеричной системы в десятичную систему выберем число 9A5F:

9A5F16 = (9∙163 + 10∙162 + 5∙161 + 15∙160)=(((9∙16+10)∙16+5)∙16+15) = 3951910

9 A 5 F

Здесь путем группировки членов вычисление полиномов представлено в форме так называемой схемы Горнера, обеспечивающей минимальное число выполняемых операций умножения.

Покажем действия по переводу чисел из десятичной системы счисления в шестнадцатеричную на примере преобразования десятичного числа 3951910 в шестнадцатеричную систему счисления

39519 |16

39504 2469 |16

15 2464 154.................................................................. |16

F 5 144 9

10

A

Отсюда 3951910 = 9A5F16. Таким образом, последовательно деля на 16 целую часть десятичного числа и образующиеся частные, получаем в последнем частном и остатках цифры всех разрядов шестнадцатеричного представления числа.

Пример 2.5. Преобразование кодов из одной системы счисления в другую. Преобразование кода из одной позиционной системы счисления в другую осуществляется делением исходного числа на основание новой системы счисления. При этом деление должно выполняться по правилам исходной системы счисления. Например, для преобразования двоичного числа в двоично-десятичное исходное двоичное число должно быть поделено на 10 (10102). Деление должно осуществляться по правилам двоичной арифметики.

Пусть требуется выполнить преобразование 8-битного двоичного числа в двоично-десятичное. Исходный двоичный код хранится в аккумуляторе. Результат преобразования состоит из 12 бит: младшие 4 бита – единицы, представляют собой остаток от деления исходного числа на 10; следующие 4 бита – десятки, представляют собой остаток от деления на 10 полученного частного; старшие 4 бита – сотни, являются частным от второго деления:

BBD: CALL DIV10 ; деление исходного кода на 10

MOV R7,A ; сохранение остатка в R7

MOV A,R1 ; загрузка в аккумулятор частного

CALL DIV10 ; деление частного на 10

SWAP A ; передача остатка в старшую тетраду A

ORL A,R7 ; передача R7 в младшую тетраду A

JMP EXIT ; выход из процедуры

; подпрограмма деления на 10

; исходный двоичный код в аккумуляторе

; результат: в R1 – частное, в аккумуляторе – остаток

DIV10: MOV R1,#0 ; сброс R1

SUB10: ADD A,#(NOT(10)+1) ; вычитание 10 из делимого

INC R1 ; инкремент частного

JC SUB10 ; цикл, если остаток >= 0

DEC R1 ; восстановление частного

ADD A,#10 ; восстановление остатка

RET ; возврат

EXIT: … ;

В результате выполнения процедуры в младшей тетраде R1 хранятся сотни, в аккумуляторе – десятки и единицы двоично-десятичного эквивалента исходного двоичного числа.

3.4.3. Изучение аппаратных и программных средств ввода/вывода информации микроконтроллера ВЕ48

1) Изучить организацию каналов ввода/вывода информации микроконтроллера ВЕ48, интерфейс расширения ввода/вывода;

2) Рассмотреть команды, которые обслуживают пространство ввода/вывода;

3) Ознакомиться с приведенными ниже примерами программ на языке ассемблера;

4) Произвести ввод, отладку и трансляцию в объектный код этих программ;

5) Выполнить программы по шагам с просмотром результатов выполнения в регистрах и оперативной памяти.

Пример 3.1. Ввести байт из порта 1 и передать его в порт 2:

TRAN: MOV A,#0FF ; настройка порта 1 на ввод

OUTL P1,A ;

IN A,P1 ; ввод байта из порта 1

OUTL P2,A ; вывод байта в порт 2

Пример 3.2. Ввести данные из порта P7:

INPUT: MOVD A,P7 ; пересылка четырех битов из порта 7

; в младшую тетраду аккумулятора

Пример 3.3. Маскирование при вводе. Ввести в регистр R7 информацию из линий 0, 1, 3, 4 и 7 порта 1:

IN A,P1 ; ввод байта из порта 1

ANL A,#10011011B ; маскирование

MOV R7,A ; передача

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

IN A,P2 ; ввод байта из порта 2

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

Пример 3.5. Выдать содержимое аккумулятора в последовательном коде через нулевую линию порта 1, оставляя без изменения остальные биты порта. Передачу вести, начиная с младшего бита:

MOV R1,#8 ; счетчик бит

LOOP: JB0 ONE ; переход, если бит A.0 = 1

ANL P1,#(NOT 1) ; сброс P1.0

JMP NEXT ;

ONE: ORL P1,#1 ; установка P1.0

JMP NEXT ; избыточная команда для выравнивания

; времени передачи 0 и 1

NEXT: RR A ; сдвиг аккумулятора вправо (подготовка к

DJNZ R1,LOOP ; передаче очередного бита)

Пример 3.6. Настроить биты 0–3 порта 1 на ввод:

ORL P1,#0F ; установка битов P1.0… P1.3

Пример 3.7. Очистить биты 4–7 порта 2:

ANL P2,#0F ; сброс битов P2.4… P2.7

Пример 3.8. Организовать ожидание появления нулевого уровня на входе T0:

WAIT: JT0 WAIT ; переход на WAIT, если на входе T0 единица

Пример 3.9. Организовать ожидание появление единичного уровня на входе в предположении, что внешние прерывания запрещены:

DIS I ; запрет прерываний по INT

WAIT: JNI WAIT ; переход на WAIT, если на входе INT нуль

3.4.4. Изучение средств реального времени микроконтроллера ВЕ48

1) Изучить организацию таймера/счетчика и системы прерываний микроконтроллера ВЕ48;

2) Рассмотреть команды управления средствами реального времени;

3) Ознакомиться с приведенными ниже примерами программ на языке ассемблера;

4) Произвести ввод, отладку и трансляцию в объектный код этих программ;

5) Выполнить программы по шагам с просмотром результатов выполнения в регистрах и оперативной памяти.

Пример 4.1. Дождаться поступления на вход T1 100 импульсов и перейти по метке PULSE:

MOV A,#156D ; A = (256-100)

MOV T,A ; предустановка счетчика

STRT CNT ; запуск счетчика

WAIT: JTF PULSE ; переход, если прошло 100 импульсов

JMP WAIT ;

PULSE: …

Пример 4.2. Запретить прерывания от таймера, но разрешить прерывание после восьми сигналов переполнения таймера. При переходе к процедуре обработки прерывания остановить таймер. Сигналы переполнения подсчитывать в регистре 5:

START: DIS TCNTI ; запрет прерываний от таймера

CLR A ; сброс аккумулятора

MOV T,A ; сброс таймера

MOV R5,A ; сброс регистра R5

STRT T ; запуск таймера

M1: JTF COUNT ; если TF=1, то переход к COUNT и сброс TF

JMP M1 ; цикл

COUNT: INC R5 ; инкремент регистра R5

MOV A,R5 ; пересылка содержимого R5 в аккумулятор

JB3 INT ; переход к подпрограмме обслуживания

; прерывания INT, если бит A.3 равен 1

JMP M1 ; переход, если бит A.3 не равен 1

… ;

INT: STOP TCNT ; останов таймера

JMP 07 ; переход к ячейке 7 (вектор прерывания

; от счетчика событий)

Пример 4.3. Программное формирование временной задержки. Предположим, что в управляющей программе необходимо реализовать временную задержку 100 мкс. Подпрограмма формирования временной задержки будет иметь вид:

DELAY: MOV R2,#X ; (R2) ← X

COUNT: DJNZ R2,COUNT ; декремент R2 и цикл, если не нуль

RET ; возврат

Для получения требуемой временной задержки необходимо определить число X, загружаемое в рабочий регистр. Определение числа X выполняется на основе расчета времени выполнения команд, образующих данную подпрограмму. При этом необходимо учитывать, что команды MOV и RET выполняются однократно, а число повторений команды DJNZ равно числу X. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL DELAY, время исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд микроконтроллера указывается, за сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов в подпрограмме: CALL – 2 МЦ, MOV – 2 МЦ, DJNZ – 2 МЦ, RET – 2 МЦ.

При тактовой частоте 6 МГц каждый машинных цикл выполняется за 2,5 мкс. Таким образом, подпрограмма выполняется за время 5+5+5X+5=15+5X мкс. Для реализации временной задержки 100 мкс число X = (100-15)/5 = 17.

Пример 4.4. Временная задержка большой длительности. В качестве примера рассмотрим подпрограмму, реализующую временную задержку 100 мс:

DELAY: MOV R1,#84 ; загрузка X

LOOPEX: MOV R2,#236 ; загрузка Y

LOOPIN: DJNZ R2,LOOPIN ; декремент R2 и внутренний цикл,

; если R2 не равно нулю

DJNZ R1,LOOPEX ; декремент R1 и внешний цикл,

; если R1 не равно нулю

MOV R3,#4 ; точная подстройка временной задержки

LOOPAD: DJNZ R3,LOOPAD ;

RET ;

Числа X и Y выбираются из соотношения T = 5+5+X(5+5Y+5)+5, где T – реализуемый временной интервал в микросекундах. Максимальный временной интервал, реализуемый таким образом, при X=Y=255 составляет 327,69 мс, т.е. приблизительно 0,3 с.

В примере два вложенных цикла реализуют временную задержку длительностью 15+84(10+5*236)=99975 мкс, а дополнительный цикл LOOPAD реализует задержку 25 мкс и тем самым обеспечивает точную подстройку временного интервала.

Временная задержка длительностью 1 с. Секунда является очень большим интервалом времени по сравнению с частотой тактирования микроконтроллера. Такие задержки сложно реализовать методом вложенных циклов, поэтому их обычно набирают из точно подстроенных задержек меньшей длительности. Например, задержку в 1 с можно реализовать десятикратным вызовом подпрограммы, реализующей задержку 100 мс:

ONESEC: MOV R3,#10 ; загрузка в R3 числа вызовов

; подпрограммы DELAY

LOOP: CALL DELAY ; задержка 100 мс

DJNZ R3,LOOP ; декремент R3 и цикл, если R3 не равно 0

Погрешность программы составляет 55 мкс.

Пример 4.5. Формирование временной задержки на основе таймеров. Недостатком программной реализации временной задержки является нерациональное использование ресурсов микроконтроллера: во время формирования задержки микроконтроллер практически простаивает, так как не может решать задачи управления объектом. В то же время аппаратурные средства микроконтроллера позволяют реализовать временные задержки на фоне основной программы работы.

При использовании таймера в МК48 можно получить временные задержки длительностью от 80 мкс до 20 мс.

Например, для реализации временной задержки 240 мкс необходимо выполнить следующие действия:

MOV A,#NOT(240/80-1) ; загрузка таймера

MOV T,A ;

STRT T ; запуск таймера

EN TCNTI ; разрешение прерывания

Появление сигнала прерывания от таймера соответствует истечению временного интервала 240 мкс. Погрешность будет составлять 7,5 мкс (время выполнения команды передачи управления по вектору прерывания и команды STOP TCNT).

Вывод: изучил структурную схему однокристального микроконтроллера ВЕ48, его центральный процессор, организацию памяти программ и данных, средства расширения памяти программ и данных; рассмотрел систему команд по пересылке и обработке данных; ознакомился с приведенными ниже примерами программ на языке ассемблера; произвел ввод, отладку и трансляцию в объектный код этих программ; выполнил программы по шагам с просмотром результатов выполнения в регистрах и оперативной памяти.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
СПбГУТ
Оформил заказ 14 мая с сроком до 16 мая, сделано было уже через пару часов. Качественно и ...
star star star star star
Красноярский государственный аграрный университет
Все сделано хорошо, а самое главное быстро, какие либо замечания отсутствуют
star star star star star
РЭУ им. Г. В. Плеханова
Алексей пошел на встречу, и сделал работу максимально быстро и качественно! Огромное спасибо!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно