АГРІВ
GOTOOUT_LEDPORTB, 3; ВИМКНУТИ ІНДИКАТОР "ЗНИЖЕННЯ РІВНЯ ВОДИ"
; ---------------------------------------------- ----------------
2.6 Підпрограма обчислення нижньої межі температури
Ця підпрограма обчислює нижня межа температури, який приймається на 50С нижче заданого (верхнього).
Розрахуємо константу DELT_T, відповідну різниці температур в 50С:
;
де Nmax - значення регістрів ADRESL і ADRESH, відповідне температурі Tmax.
Так як Tmax = 1000С і Nmax = 1000d, то
.
; ---------------------------------------------- ----------------
; ПІДПРОГРАМА ОБЧИСЛЕННЯ нижньої межі ТЕМПЕРАТУРИMIN_TH; ОЧИЩЕННЯ РЕГІСТРУ MIN_THMAX_TL, WDELT_T; відняти з ВМІСТУ MAX_TL РІЗНИЦЯ ТЕМПЕРАТУРMIN_TL; поміститися РЕЗУЛЬТАТ У MIN_TLMIN_TH, W; ЯКЩО БУВ ЗАЕМMAX_TH, W; ЗМЕНШИТИ ЗНАЧЕННЯ РЕГІСТРУ MAX_TH НА 1MIN_TH; поміститися РЕЗУЛЬТАТ В РЕГІСТР MIN_THSTATUS, C ; ЯКЩО БУВ ПОЗИКА $ +4 MIN_TL; ОЧИСТИТИ РЕГІСТРИ MIN_TL І MIN_THMIN_THSTATUS, C; І СКИНУТИ ПРАПОР ПЕРЕНЕСЕННЯ
; ---------------------------------------------- ----------------
2.7 Підпрограма контролю температури
Ця підпрограма здійснює контроль температури води і при її зменшенні нижче значення, записаного в регістрах MIN_TH і MIN_TL включає нагрівач, а при збільшенні вище значення, записаного в регістрах MAX_TH і MAX_TL вимикає його.
; ---------------------------------------------- ----------------
; ПІДПРОГРАМА ПЕРЕВІРКИ ЗНИЖЕННЯ ТЕМПЕРАТУРИ НИЖЧЕ НОРМИ
BCFSTATUS, ZADRESH, WMIN_TH, WSTATUS, ZM1ADRESH, WSTATUS, CMIN_TH, WSTATUS, C
BSFPORTB, 2; ВКЛЮЧЕННЯ НАГРІВАЧА
STATUS, Z
MOVFADRESL, WMIN_TL, W
BTFSCSTATUS, CPORTB, 2; ВКЛЮЧЕННЯ НАГРІВАЧА
; ---------------------------------------------- -----------------
; ПЕРЕВІРКА ПЕРЕВИЩЕННЯ НОРМИ
BANC1
MOVFADRESH, W
XORWFMAX_TH, WSTATUS, ZM2ADRESH, WMAX_TH, WSTATUS, CPORTB, 2; ВИМИКАННЯ НАГРІВАЧА
STATUS, ZADRESL, WMAX_TH, WSTATUS, C
BCFPORTB, 2; ВИМИКАННЯ НАГРІВАЧА
; ---------------------------------------------- -----------------
.8 Підпрограма виводу на індикацію
Ця підпрограма здійснює передачу значень буферних регістрів індикації IND_0, IND_1, IND_2, IND_3 і регістру управління децимальних точкою POINT у внутрішні регістри драйвера LCD.
Драйвер MAX6958 підтримує автоінкрементірованіе адреси при запису значень в регістри. Тому при передачі даних досить вказати початковий адресу (0х20), а потім послідовно передавати дані без попередньої передачі адреси наступного регістра. Адреса драйвера на шині I2C 0x38. p> Нижче наведено лістинг програми, що здійснює вивід на індикацію.
; ---------------------------------------------- ----------------- _LED
; ПІДПРОГРАМА ВИВЕДЕННЯ НА ІНДІКАЦІЮSSPCON2, SEN; згенерувати ...