енні / INT0 і / INT1 відповідно. Тоді запуск процесу вимірювання здійснюється програмно, а робота Т/С0 і Т/С1 відбувається на апаратному рівні. У такому варіанті роботи пристрою відсутня? т - адитивна складова похибки рахунку (див. розділ 4).
6.2 Лістинг ПО
контроль температура метрологічний мікроконтролер
У даному розділі представлений лістинг розробленої програми. Програма написана на мові асемблер.
Лістинг ПЗ:
$ NOLIST
$ NOMOD51
$ LIST
$ include (fp51s.lib)
; ========================================= =============
===================== AT 0START0x0BPORT_PRER
; ========================================= =============
===================== _main segment CODEPR_main AT 0x15: ds 1; прапор (0=номер датчика для виведення на дисплей не введений ,
; 1=запит на виведення Тх 1-го датчика, 2=запит Tx; другий ... 5=запит Tx
-го датчика): ds 1; прапор В і Н уставок (0=Н уставка, 1=В уставка): ds 1; прапор-номер датчика (для передачі номера датчика на
; якому виявлено помилку в П / П виводу повідомлення про; помилку)
; ========================================= =============
=====================
; Початкові установки
; Fsys=500 Khz
; ========================================= =============
=====================
INIT: MOV CKCON, # 00000111b; T / C TAKT F/12
MOV SCON, # 000000000b; Fxtal/12IEN1, # 00000001b; use interrapt from keyboardKBE, # 00001111b; ENABLE INTERRUPR REQUEST FOR P0.4-.7TCON, # 01010000b; T/C1 - ON, T/C2 ??- ON
MOV TMOD, # 00010001b; обидва таймери в 16разр режимі
CLR TH0TL0TH1
CLR TL1:
; ========================================= =============
=====================
; MAIN
; програма вимірювання температури
; P0.2-START PIN
; P0.1-END PIN
; R6-DATA ADRESS
; R7-IMPULSE COUNTER
; R4 - BUF FOR SAVE TX
; ========================================= =============
=====================: INIT0R7, # 5; завантаження лічильника імпульсів
MOV R5, # 20; початковий адресу зберігання Тх
NEW: SETB P0.2; START-IMPULSE
NOPP0.2P0.1, # 1, $; очікування 1-го рівня на Р0.1TR1: MOV R6, # 0X47h; початковий адресу зберігання Nl і NhP0.1, # 0, $; очікування 0-го рівня на Р0.1TR1TR0 @ R6, TH1; запис в пам'ять Nh для періоду високого уровняR0, R6; запис в R0 адреси комірки (для П / П MAKE_TEMP) R6 @ R6, TL1; запис в пам'ять Nl для періоду високого уровняR1 , R6; запис в R1 адреси комірки (для П / П MAKE_TEMP)
INC R6TH1TL1
CJNE P0.1, # 1, $; очікування 1-го рівня на Р0.1TR0TR1 @ R6,...