БІТ STARTSSPCON2, SEN; ЧЕКАТИ ЗАКІНЧЕННЯ ГЕНЕРАЦІЇ БІТА START $-10x38; ПЕРЕДАТИ АДРЕСА ДРАЙВЕРАSSPBUFSSPCON2, ACKSTAT; ЧЕКАТИ ФОРМУВАННЯ БІТА ПІДТВЕРДЖЕННЯ $-10x20; ПРЕРЕДАТЬ АДРЕСА ПЕРШОГО РЕГІСТРУ ДАННИХSSPBUFSSPCON2, ACKSTAT; ЧЕКАТИ ФОРМУВАННЯ БІТА ПІДТВЕРДЖЕННЯ $-1IND_3, W; ПЕРЕДАТИ ЙОГО 3-ГО РОЗРЯДУ ІНДИКАЦІЇ
BANC1SSPBUFSSPSTAT, BF
GOTO $-1IND_2, W; ПЕРЕДАТИ ЙОГО 2-ГО РОЗРЯДУ ІНДИКАЦІЇ
BANC1SSPBUFSSPSTAT, BF
GOTO $-1IND_1, W; ПЕРЕДАТИ ЙОГО 1-ГО РОЗРЯДУ ІНДИКАЦІЇ
BANC1SSPBUFSSPSTAT, BF
GOTO $-1IND_0, W; ПЕРЕДАТИ ЙОГО 0-ГО РОЗРЯДУ ІНДИКАЦІЇ
BANC1SSPBUFSSPSTAT, BF
GOTO $-1POINT, W; ПЕРЕДАТИ СТАН децимальних ТОЧКІSSPCON2, ACKSTAT $-1SSPCON2, PEN; згенерувати БІТ STOPEND_INT; ПЕРЕХІД НА ПОЧАТОК ПРОГРАМИ
; ---------------------------------------------- ----------------------------
2.9 Підпрограма двійковій-десяткового корекції
Ця підпрограма здійснює конвертацію двійкового коду, попередньо записаного в буферних регістрах TEMP_TL TEMP_TH в двійковій-десятковий код, записується у регістри індикації IND_0, IND_1, IND_2, IND_3.
Лістинг підпрограми наведений нижче.
Двійково-десятковому КОРЕКЦІЇ
; ---------------------------------------------- -----------------------------
; РОЗПОДІЛ зошитах регістрів TEMP_TL І TEMP_TH по регістрах IND_0 - IND_3
MOVFTEMP_TL, W0x0F
MOVWFIND_0; поміститися молодшої тетради TEMP_TL У IND_0
SWAPFTEMP_TL, W0x0F
MOVWFIND_1; поміститися старшої тетради TEMP_TL У IND_1
MOVFTEMP_TH, W0x0F
MOVWFIND_2; поміститися молодшої тетради TEMP_TH У IND_2
SWAPFTEMP_TH, W0x0F
MOVWFIND_3; поміститися старшої тетради TEMP_TH У IND_3
; ---------------------------------------------- -----------------------------
; КОРЕКЦІЯ РЕЗУЛЬТАТАSTATUS, ZSTATUS, C
MOVLW0x0AIND_0, WSTATUS, C
GOTO $ +5 STATUS, Z; ЯКЩО ЗНАЧЕННЯ IND_0 НЕ МЕНШЕ 0x0A $ +3 IND_0; У РЕГІСТР IND_0 ЗАПИСАТИ РІЗНИЦЯ ЙОГО ВМІСТУ І
; 0x0AIND_1, F; І ЗБІЛЬШИТИ НА 1 ВМІСТ IND_1
BCFSTATUS, ZSTATUS, C
MOVLW0x0A; ІНАКШЕ значення регістрів ЗАЛИШИТИ БЕЗ ЗМІНИ
SUBWFIND_1, WSTATUS, C
GOTO $ +5 STATUS, Z; ЯКЩО ЗНАЧЕННЯ IND_1 НЕ МЕНШЕ 0x0A $ +3 IND_1; У РЕГІСТР IND_1 ЗАПИСАТИ РІЗНИЦЯ ЙОГО ВМІСТУ І
; 0x0AIND_2, F; І ЗБІЛЬШИТИ НА 1 ВМІСТ IND_2
BCFSTATUS, ZSTATUS, C
MOVLW0x0A; ІНАКШЕ значення регістрів ЗАЛИШИТИ БЕЗ ЗМІНИ
SUBWFIND_2, WSTATUS, C
GOTO $ +5 STATUS, Z; ЯКЩО ЗНАЧЕННЯ IND_2 НЕ МЕНШЕ 0x0A $ +3 IND_2; У РЕГІСТР IND_2 ЗАПИСАТИ РІЗНИЦЯ ЙОГО ВМІСТУ І
; 0x0AIND_3, F; І ЗБІЛЬШИТИ НА 1 ВМІСТ IND_3
; ---------------------------------------------- ----------------------------
мікропроцесорний система барокамера
2.10 Обробка переривань
Вектор пе...