адреси в регістрах 460 01D0 78 58
mov r0, # mem 461 01D2 79 55
mov r1, # pause 462 01D4 12 лютого A8
call DIV_3B; mem = (400 * T1)/T2 463 01D7
464
; Після виконання поділу в pause міститься залишок 465 01D7
466
; З змінної mem можна взяти лише молодші два байти 467 01D7 C3
clr c 468 01D8 74 EB
mov a, # 235469 01DA 96
subb a, @ r0 470 01DB F6
mov @ r0, a 471 01DC 08
inc r0 472 01DD 74 00
mov a, # 0473 01DF 96
subb a, @ r0 474 01E0 F6
mov @ r0, a 475 01E1
476
; Запис знака числа 477 01E1 92 7A
mov pos, c 478 01E3 B2 7A
cpl pos 479 01E5 E5 58
mov a, mem 480 01E7
481
; Округлення модуля температури 482 01E7
trunc: 483
; Перевіримо залишок після операції ділення і округлимо модуль температури 484
; в ту чи іншу сторону 485 01E7
486
; pause-залишок 487
; pulse-дільник 488
; Для зразкового округлення розділимо дільник на 2 і порівняємо із залишком 489
; якщо останній більше, то модуль температури -1490
; У разі коли вони рівні домовимося округляти в більшу сторону 491 01E7
492 01E7 C0 E0
push acc 493
; перевірити не дорівнює чи залишок 0494 01E9 78 55
mov r0, # pause 495
; Тестування молодшої частини залишку 496 01EB E6
mov a, @ r0 497 01EC B4 00 07
cjne a, # 0, testost 498
; Тестування старшої частини залишку 499 01EF 08
inc r0 500 01F0 E6
mov a, @ r0 501 01F1 B4 00 02
cjne a, # 0, testost 502
; Залишок при діленні дорівнює 0503 01F4 80 23
sjmp exitcalk 504 01F6
505
; Протестуємо величину похибки 506 01F6
testost: 507
; Розділимо дільник на 2 508 01F6 78 52
mov r0, # pulse 509 01F8 79 55
mov r1, # pause 510 01FA 12 лютого 59
call RRC_3B 511 01FD
512
; Порівняємо залишок з отриманим результатом (порівнюємо молодші 2 байти) 513 01FD
514