Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Перетворення кодів з однієї системи числення в іншу

Читайте также:
  1. GPS-системи
  2. Адаптація законодавства України до законодавства ЄС - один із важливих інструментів створення в Україні нової правової системи та громадянського суспільства
  3. Адаптація нервово-м’язової системи до аеробних навантажень
  4. Актуальність соціальної роботи у світлі реформування пенітенціарної системи України.
  5. Алгоритм обчислення відносної молекулярної маси речовини за її формулою
  6. Банківські системи зарубіжних країн, особливості їх побудови та функціонування
  7. Банкіри озвучили топ-10 проблем фінансової системи України
  8. Безготівковий оборот грошей та роль банків у його організації. Платіжні системи.
  9. Безготівковий оборот грошей та роль банків у його організації. Платіжні системи.
  10. В) Реактивність системи.

 

Перетворення коду з однієї позиційної системи числення в іншу здійснюється діленням вхідного числа на основу нової системи числення. При цьому ділення повинно виконуватись за правилами вхідної системи числення.

Перетворення двійкового числа в двійково-десяткове в цьому випадку повинно здійснюватися діленням початкового числа на 10. Причому, ділення повинно здійснюватися за правилами двійкової арифметики. Для цього необхідно вхідний двійковий n-розрядний код числа поділити на двійковий код числа 10 (1010).

Нехай необхідно виконати перетворення 10-розрядного двійкового числа, що зберігається в пам'яті даних мікроконтролера, в двійково-десяткове.

Так як регістри загального призначення пам'яті даних ОМК PIC 16/17 восьмирозрядні, то для зберігання початкового числа необхідно буде використати два регістри, що містять, наприклад, змінні START і ENDSTART. Припустимо, що вісім старших розрядів початкового числа будуть знаходитись в змінній START, а молодші два розряди в бітах 0 і 1 змінної ENDSTART.

При перетворенні двійкового числа в двійково-десяткове звичайно вимагається виконати максимум два кроки ділення. Причому, на першому кроці необхідно буде зробити шість віднімань числа 1010 з діленого (якщо початкове число, наприклад, восьмирозрядне). Але в нашому випадку число 10-розрядне, то потрібно здійснити вісім віднімань. При цьому, вже після 2-го віднімання можна буде зсунути ділене (START) на два розряди ліворуч і записати в молодшу частину діленого зміст 0-го і 1-го бітів змінної ENDSTART (молодші два розряди початкового числа). Після цього необхідно продовжити алгоритм ділення.

Для спрощення прикладу програми в даному випадку прийнято, що вхідне двійкове число, задане в змінних START і ENDSTART, не перевищує його десяткового еквіваленту 999. В такому випадку, результат перетворення складається з 12 б і представляє собою три 4-розрядних двійкових числа (3-и декади).

Таким чином, для зберігання результату перетворення знадобиться три змінні: DEC1 – перша декада (одиниці, представляють собою залишок від ділення початкового числа на 10); DEC2 – друга декада (десятки, представляють собою залишок від ділення на 10 отриманої частки); REZ – третя декада (сотні, є часткою від другого ділення). Причому, змінна REZ буде використана також для зберігання проміжних результатів ділення.

Для підрахунку кількості віднімань знадобиться змінна TIME, що буде використовуватися в якості програмуємого лічильника. При цьому, константа, що заздалегідь завантажується в цей лічильник, визначається розрядністю початкового двійкового числа (дільника).

Очевидно, що ділення на 1010 (змінна TEN) доцільно представити у вигляді процедури (DIV10), бо дану операцію під час перетворення знадобиться повторювати багаторазово. Кількість повторень знов таки визначається розрядністю початкового двійкового коду. Так, якщо це число знаходиться в межах від 0 до 99, то достатньо одного виклику процедури DIV10. В цьому випадку результат перетворення буде знаходитись в змінних START і REZ. Якщо розрядність початкового числа буде більше, то знадобиться декілька викликів цієї процедури. Причому, в проміжках між викликами процедури DIV10 необхідно, очевидно, буде настроювати змінну TIME. В нашому випадку до процедури DIV10 прийдеться звертатися тричі.

Текст програми перетворення десятирозрядного двійкового числа в двійково-десяткове (BIN-DEC1), написаний на підставі представлених вище міркувань, наведений нижче:

 

; Текст процедури BIN-DEC1

LIST P = PIC16C84




Дата добавления: 2014-12-18; просмотров: 33 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав