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

Преобразование двоичных чисел в двоично-десятичные.

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

В данном разделе рассматриваются программы преобразования двоичных чисел в двоично-десятичные.

Форматы представления десятичных чисел

В настоящее время распространены два формата представления десятичных чисел в микропроцессорах - упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код.

Упакованный BCD-код - это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая - левую тетраду (биты 7 : 4). Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым,то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (С), а для знака минус - 1101 (D). На рисунке показано BCD-представление десятичного числа "-12345":

Двоично-десятичное представление числа "-12345"

Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом.

Ascii-коды десятичных цифр

Десятичная цифра

ASCII-код

Десятичная цифра

ASCII-код

0

$30

5

$35

1

$31

6

$36

2

$32

7

$37

3

$33

8

$38

4

$34

9

$39

Операции двоично-десятичной арифметики

Операции двоично-десятичной арифметики выполняются в два этапа:

- двоично-десятичные числа обрабатываются как двоичные коды;

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

Сложение

Как было отмечено выше операция выполняется в два этапа: сложение и коррекция. После сложения в тетрадах может оказаться недопустимая комбинация или из тетрады может возникнуть перенос. Алгоритм коррекции состоит из двух шагов:

1) Если AF = 1 или младшая тетрада меньше 9, но больше 15, то к ней прибавляется код 6. Возникающий перенос прибавляется к старшей тетраде;

2) Если CF = 1 или старшая тетрада содержит недопустимую комбинацию, то к результирующему байту прибавляется код 60h.

Слева приведен пример сложения двух чисел представленных в двоично-десятичном формате:

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