андру. Це реалізується, як раніше пояснювалося обробником від таймера T1.
Опис процедур арифметичних операцій
У даній роботі використовуються чотири основні арифметичні операції: додавання, віднімання, множення, ділення.
Всі процедури, реалізовані в даній роботі оперують з трехбайтнимі числами, що необхідно при розрахунку температури. Крім усього є ще дві допоміжні операції зсуву на один біт вправо і вліво з використанням прапора переносу. p align="justify"> Найбільший інтерес представляють операції множення і ділення, інші операції більш менш прості й будуть описані коротко.
Процедура складання трехбайтних чисел
Детально текст даної процедури можна переглянути в лістингу.
Додавання здійснюється в циклі. У першій ітерації складаються молодші байти, при цьому використовується команда додавання мікропроцесора ADDC-додавання з прапором переносу. В кінці кожної ітерації проводиться модифікація адреси та складаються наступні за старшинством байти з урахуванням перенесення та молодшого байта. p align="justify"> Усього таких ітерацій три, що і потрібно для операндів довжиною 3 байти.
Нижче продемонстрований фрагмент цієї процедури.
; Попереднє очищення прапора CcR7, # 3; число байт в числі
; Додавання числа побайтно з використанням прапора перенесення
ADD: a, @ R0a, @ R1 @ R0, aR0R1
djnz r7, ADD
Процедура віднімання трехбайтних чисел
Дана процедура реалізується за тим же принципом, що і додавання, тобто з використанням прапора перенесення, тільки замість команди складання фігурує команда SUBB-віднімання з заемом.
; Попереднє обнулення прапора перенесення clr c mov r7, # 3; Реалізація віднімання SUB: mov a, @ R0 subb a, @ R1 mov @ R0, a inc r0 inc r1 djnz r7, SUB p>
Процедури зсуву (RRC_3B, RLC_3B)
Це однотипні процедури, реалізація яких здійснюється вже наявними командами зсуву мікропроцесора RRC і RLC. Зрушення також здійснюється в циклі. p align="justify"> Першим обробляється: при зсуві вліво - молодший байт, при зсуві вправо-старший байт і далі через прапор перенесення біти переходять від байта до байту. p align="justify"> Приклад реалізації зсуву вліво представлений нижче.
; Зрушення числа побайтно від старшого до молодшого mov r7, # 3 RR: mov a, @ r0 rrc a mov @ r0, a dec r0 djnz r7, RR
Процедура множення (MUL_3B)
Розглянемо основний принцип реалізації команди множення.
В
X-множимое
Y-множник
У більш розгорнутій формі Y...