span> = PC5 ; закриття вхідного клапана
. equ PC6 = PC6 ; відкриття вихідного клапана
. equ PC7 = PC7 ; закриття вихідного клапана
; ТАБЛИЦЯ вектор переривання
: RESET; перехід на RESET при спрацьовуванні переривання INT00 (кнопка "СТОП"): can1, 0b00000001; забороняємо переривання
out EIMSK, can1; INT01 ("ПУСК"). EIMSK - регістр масок зовнішніх переривань
; ***************************************** ****************
; MAIN
:
; встановлюємо вершину стека
; RAMEND - кінець пам'яті SRAM
ldi r16, LOW (RAMEND)
out SPL, r16r16, HIGH (RAMEND) SPH, r16
ldi r16, 1 <; r16 = TOIE0TIMSK, r16 ; дозволяємо переривання по переповнення таймера-лічильника 0port_init ; ініціалізація портів ; дозволяємо використання переривань
rcall KeyReadKeyboard_LCD; ініціалізація дисплея
WR_DDADR 0; Покажчик на початок відео пам'яті (комірка з коордінатмі 0,0) DATA_WR; Висновок значення на екранCUR_R ; зсув курсору вправо
rcall KeyReadKeyboardDATA_WR; Висновок значення на екран
; опитуємо кнопку пуск: PINA, 5 ; пропустити таку команду, якщо кнопка нажатаPUSKPORTC, 6; відкриваємо вихідний клапанPORTC, 4; відкриваємо вхідний клапанWait15s;
cbi PORTC, 4; OPEN_SHD; відкриття форсунки
rcall Wait15s; DATA_RD; зчитуємо температуру з екранаCMP; порівнюємо температуру
; ***************************************** ********************
; ПІДПРОГРАМА ініціалізації ПОРТОВ_init:
; ніжки PA4-PA5 на введення, інші на висновок
ldi r16, 0b11001111 DDRA, r16 r16, 0b00110000 PORTC, r16
; ніжки порту С на виведення r16
out PORTC, r16
; ніжки PD0-PD7 на введення r16 DDRD, r16
; ніжки PЕ2-PЕ4 на виведення