Преобразование кодов

2018-01-12СтудИзба

Описание файла

Файл "Преобразование кодов" внутри архива находится в папке "Преобразование кодов". Документ из архива "Преобразование кодов", который расположен в категории "". Всё это находится в предмете "цифровые устройства и микропроцессоры (цуимп)" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "цифровые устройства и микропроцессоры" в общих файлах.

Онлайн просмотр документа "Преобразование кодов"

Текст из документа "Преобразование кодов"

Преобразование кодов



  • 1. Простейшие преобразования





  • 2. Преобразование параллельных и последовательных кодов





  • 3. Цифро-аналоговые и аналого-цифровые преобразования































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

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

 

 



























1. Простейшие преобразования

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

 

Преобразование двоичного позиционного кода в унитарный. Необходимость такого преобразования возникает, например, при выборке одного из исполнительных устройств, мультиплексирующих шину BUS (Р0) по его номеру.

Пусть, например, требуется преобразовать 3-битный двоичный код из регистра R4 в 8-битный унитарный:

;версия для МК48

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

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

        CPL C           ;установка флага переноса

ROTATE: RLC A          ;сдвиг унитарного кода

        DJNZ R4, ROTATE ;декремент и цикл, пока не нуль

 

Преобразование осуществляется путем "вдвигания" единицы из флага переноса. Результат формируется в аккумуляторе за N сдвигов (где N - эквивалент исходного двоичного кода). Недостатком приведенной программы является то,что для преобразования N=0 понадобится 256 сдвигов. Избежать этого можно, "модифицировав программу DECODE следующим образом:

DECODE:



ROTATE:



INC R4
MOV A,#80H

 
RL A
DJNZ R4, ROTATE


;инкремент исходного кода
;установка старшего бита
;аккумулятора

;сдвиг унитарного кода
;декремент позиционного
;кода и цикл, пока не 0

Преобразование в этом случае осуществляется за N + 1 сдвигов.

 

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

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

;версия для МК48

BBD:












DIV10:

SUB10:







EXIT:


CALL DIV10
MOV R7,A
MOV A,R1  
CALL DIV10
SWAP A
ORL A,R7
JMP EXIT






MOV R1,#0

ADD A,#(NOT(10)+1)
INC R1    
JC SUB10
DEC R1
ADD A,#10
RET  

...


;деление исходного кода на 10
;сохранение остатка в R7
;загрузка в аккумулятор частного
;деление частного на 10
;передача остатка в стар. тетраду аккумулятора
;передача R7 в младшую тетраду аккумулятора
;выход из процедуры

;подпрограмма деления на 10
;исходный двоичный код в аккумуляторе
;результат : в R1 - частное,
;в аккумуляторе - остаток

;сброс R1

;вычитание 10 из делимого

;инкремент частного
;цикл, если остаток >=0
;восстановление частного
;восстановление остатка
;возврат

 

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

Обратное преобразование (из двоично-десятичного кода в двоичный) осуществляется делением исходного числа на 16 по правилам десятичной арифметики. Программа преобразования приведена ниже. Исходный двоично-десятичный код хранится в аккумуляторе. После окончания работы программы в A находится двоичный эквивалент исходного двоично-десятичного числа.

Программа универсальна и может выполняться в МК48 и в МК51, так как команда DIV AB (МК51) не может быть использована для деления чисел по правилам десятичной арифметики:

BDB:










DIV16:

SUB16:








EXIT:


CALL DIV16 SWAP A
ORL A, R1
SWAP A
JMP EXIT






MOV R1, #0

ADD A, #84H
DA A
INC R1
JC SUB16   
DEC R1
ADD A, #16H
DA A 
RET

...


;деление исходного кода на 16

;передача остатка в старшую тетраду аккумулятора
;загрузка частного в младшую тетраду аккумулятора ;формирование результата в аккумуляторе
;выход из процедуры преобразования

;подпрограмма десятичного деления на 16
;делимое - в аккумуляторе
;результат: частное - в R1,
;остаток - в аккумуляторе

;сброс частного
;вычитание из делимого числа 16,
;представленного в десятичной системе
;коррекция
;инкремент частного
;цикл, если остаток >=0
;восстановление частного
;восстановление остатка
;коррекция
;возврат

Кроме рассмотренного способа преобразования чисел из одной системы счисления в другую можно воспользоваться более медленным, но зато и более простым способом "двух счетчиков". При этом способе из исходного кода вчитается, а к новому коду прибавляется по единице до обнуления исходного кода, причем вычитание осуществляется "в старой", а прибавление - в "новой" системе счисления. Пример программы преобразования двоичного числа в двоично-десятичное методом двух счетчиков приводится ниже. Для упрощения программы принято, что исходное двоичное число, заданное в A, не превышает его десятичного эквивалента 99:

;версия для МК48

BBD:


CONV:



EXIT:


MOV R2, A
CLR A  

ADD A, #1
DA A  
DJNZ R2, CONV

...


;передача исходного кода в R2
;сброс аккумулятора

;инкремент "нового" кода
;коррекция
;декремент исходного кода и цикл, если не нуль
;выход из процедуры

После выхода из процедуры в A находится двоично-десятичный эквивалент исходного двоичного кода.

 

 







2. Преобразование параллельных и последовательных кодов

Преобразование данных из параллельного кода в последовательный. Наиболее важным применением процедур преобразования формы представления данных "параллельный/последовательный" является связь с удаленными датчиками, исполнительными механизмами и другими МК по однопроводным линиям передачи информации. Обычно при передаче байта данных в прямом последовательном коде для обеспечения согласования работы приемника и передатчика используют старт-стопный (асинхронный) режим обмена. Передача последовательного кода байта предваряется посылкой старт-бита (0) и завершается выдачей стоп-бита (1).

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

;версия для МК48



PSCONV:

ROTATE:



ON:


OFF:


DLY:




EXIT :

ANL P1,#0F7H
CALL DELAYT

MOV R7,#8

RRC A
JC OFF  


ANL P1,#11110111B
JMP DLY

ORL P1,#00001000B
JMP DLY

CALL DELAYT  
DJNZ R7,ROTATE
ORL P1,#08H
CALL DELAYT

...

;выдача старт-бита
;временная задержка Т

;инициализация счетчика бит

;свиг вправо, т.е.(С) <-- А0
;если перенос, то управление передается процедуре выдачи 1

;выдача на P1.3 сигнала 0


;выдача на Р1.3 сигнала 1


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

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

В МК51 имеются средства аппаратурного преобразования параллельного кода в последовательный с использованием УАПП. Вся программа преобразования параллельного кода в последовательный сводится при этом к одной команде передачи байта в буфер УАПП: MOV SBUF,A.

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

После обнаружения старт-бита на входе приемника начинается преобразование кода, совмещенное с процедурой в вода последовательного кода. Схема алгоритма процедуры SPCONV, реализуемой в МК48, представлена на рис.6.11. МК48 обеспечивает прием бита последовательного кода и его распознавание (конкретный вид этого блока зависит от способа представления бита информации в последовательном коде). При длине слова не более 8 бит для формирования параллельного кода удобно воспользоваться аккумулятором; тогда дешифрированный бит "вдвигается" в аккумулятор через флаг переноса. Поскольку последовательный код принимается младшими битами вперед, сдвиг параллельного кода осуществляется вправо. Аккумулятор предварительно сбрасывается, а после N сдвигов (где N - разрядность слова, передаваемого в последовательном коде) в нем фиксируется параллельный код принятого слова данных.

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

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее