
- •Программирование цифровой техники и микроконтроллеров управления
- •Алматы 2012
- •1 Микроконтроллеры в современном мире
- •1.1 Краткая история развития микроконтроллеров
- •1.2 Задачи и роль микроконтроллеров
- •2 Выполнение арифметических операций в мп
- •2.1 Системы счислений
- •2.2 Двоичная арифметика
- •2.3 Дополнительный код
- •2.4 Знаковый разряд
- •3 Регистры общего и специального назначения
- •3.1 Регистры portc и trisc
- •3.2 Регистр Status
- •3.3 Фиксированная (абсолютная) адресация
- •4 Косвенная адресация. Логика
- •4.1 Косвенная адресация
- •4.2 Логические функции
- •5 Маскирование. Стек
- •5.1 Маскирование
- •5.2 Счетчик команд
- •5.3 Стек
- •6 Конвейер и подпрограмма задержки
- •6.1 Конвейер
- •6.2 Программа задержки
- •6.3 Расчет времени задержки
- •7 Выполнение умножения и деления
- •7.1 Умножение и деление при помощи сдвига
- •7.2 Инструкции условных переходов
- •7.3 Целочисленное умножение
- •7.4 Целочисленное деление
- •7.5 Умножение на дробное число
- •8 Программирование клавиатуры. Дешифратор
- •8.1 Клавиатура
- •8.2 Фрагменты программы
- •8.3 Дешифратор
- •8.4 Компаратор
- •9 Основные элементы цифровой техники
- •9.1 Сумматор
- •9.2 Арифметико-логическое устройство
- •9.3 Бистабильные схемы
- •9.4 Триггеры и регистры
- •10 Структура микроконтроллера. Индикатор
- •10.1 Применение операций сдвига
- •10.2 Цифровой индикатор
- •10.2 Структурная схема мк
- •11 Прерывания и сторожевой таймер
- •11.1 Прерывания
- •11.2 Подсчет посетителей с помощью прерываний
- •11.3 Сторожевой таймер
- •12 Фактор времени и аналоговый мир
- •12.1 Модуль таймера tmr1
- •12.2 Применение таймера tmr1
- •12.3 Аналоговый мир
- •Приложение а Список некоторых сокращений
- •Список литературы
- •Содержание
- •050013, Алматы, Байтурсынова, 126
7.4 Целочисленное деление
Алгоритм целочисленного деления показан на примере деления 35 на 10 в таблице 7.3. Из алгоритма в таблице видно, что, если делитель равен нулю, то программа зациклится.
Таблица 7.3 - Алгоритм целочисленного деления
Цикл |
Частное |
Действие |
Значение бита «С» |
С=0? |
Действие |
|
INC |
DEC |
|||||
|
0 |
|
Rab_peg=35 |
|
|
|
1 |
1 |
|
Rab_peg= Rab_peg- Delitel=25 |
1 |
Нет |
Повторяем цикл |
2 |
2 |
|
Rab_peg= Rab_peg- Delitel=15 |
1 |
Нет |
Повторяем цикл |
3 |
3 |
|
Rab_peg= Rab_peg- Delitel=5 |
1 |
Нет |
Повторяем цикл |
|
4 |
|
Rab_peg= Rab_peg- Delitel=-5 |
0 |
Да |
Возвращаемся назад на 1 шаг |
|
|
3 |
Ostatok = Rab_peg+Delitel=5 |
|
|
|
Результат деления: частное=3, остаток =5, т.е. 35/10=3 (5) |
Delenie; подпрограмма. Входы Delimoe и Delitel, выходы Chastnoe и Ostatok.
CLRF Chastnoe
MOVF Delimoe, W;
MOVWF Rab_peg; копируем Delimoe в рабочий регистр.
MOVF Delitel, W; копируем Delitel в W.
BTFSC STATUS, Z; защита от деления на нуль, Delitel=0?
GOTO NUL; если Delitel=0, выходим из программы.
Metka INCF Chastnoe, F; накапливаем частное.
SUBWF Rab_peg, F; вычитаем Rab_peg=Rab_peg-Delitel.
BTFSC STATUS, C; проверяем разность отрицательная? C=1?
GOTO Metka; выполняется только при C=1.
; Было выполнено одно лишнее вычитание. Возвращаемся на один шаг.
DECF Chastnoe, F; восстанавливаем частное, уменьшая его на 1. ADDWF Rab_peg, W; восстанавливаем предыдущее значение Rab_peg.
MOVWF Ostatok; запоминаем остаток, он равен W.
RETURN
NUL MOVLW D'255'; защита от деления на ноль.
MOVWF PORTC; сигнализируем о зацикливании программы.
END
7.5 Умножение на дробное число
Умножение на дробное число можно выполнить с точностью до целых с помощью умножения заданного числа на целое число (множитель), и затем деления результата на другое целое число (делитель). Множитель и делитель подбираются на калькуляторе или MSExcel.
Пример. Выполним умножение числа 6 на 0,8. Сначала на калькуляторе подберем целочисленный множитель и целочисленный делитель, таким образом, чтобы получить примерно заданный коэффициент. В данном случае подходят множитель 4 и делитель 5, поскольку 4/5=0,8. Далее умножаем заданное число на четыре, и затем результат делим на пять. Остаток будет определять погрешность проведённых вычислений.
8 Программирование клавиатуры. Дешифратор
Цель работы: создание программ с вводом данных клавиатурой, рассмотрение схем дешифратора и компаратора.
Краткое содержание лекции. Подключение клавиатуры и её опрос. Дребезг контактов, защита от дребезга контактов. Дешифратор и его работа. Компаратор и его работа.