тораDigit +3, R18; на один вліво
lds R18, Digit +1 Digit +2, R18R18, DigitDigit +1, R18
sts Digit, R17; пишемо в млад. розряд індикатора поточне значення
EndKeyboard: ret
; ***************************************** ****************:
. db 1,2,3,4,5,6,7,8,9,10,0,11; масив (таблиця істинності клавіатури)
; ***************************************** *****************
; подрограмма опитування датчика:
; ADEN - дозволяємо роботу АЦП
; ADSC - початок преобразованіяr22, DT ; АЦП для датчика температуриADMUX, r22
; опитування датчика:
ldi r22, 1 <
out ADCSRA, r22
; очікування завершення перетворення ADC
rADC: ADCSRA, ADSCrADC
PINA, 4 ; опитування кнопки стопEND ; перейти на END, якщо натиснута
; порівнюємо поточну температуру
in r22, ADCL
cp R17, r22eq ADC ; продовжуємо, якщо равниR17, r22lo CLOSE ; перехід, якщо менше
; OPEN
sbi PORTC, 4; відкриття вхідного клапана
rcall Wait1sPORTC, 4: PORTC, 5; закриття вхідного клапана
rcall Wait1s
cbi PORTC, 5
ret
; ПІДПРОГРАМА ЗАТРИМКИ в 1 сек
Wait1s: r28, 20 r29, 255s_mid: r30, 255s_in: r30Wait1s_inr29 Wait1s_mid r28 Wait1s_out
; ПІДПРОГРАМА ЗАТРИМКИ в 15 сек
Wait15s:
ldi r28, 230 s_out: r29, 255
sbic PINA, 4 ; опитування кнопки стопEND ; перейти на END, якщо натиснута
Wait15s_mid: r30, 255
Wait15s_in: r30Wait15s_in r29 Wait15s_midr28 Wait15s_out
ret
; ПІДПРОГРАМА ЗАТРИМКИ в 1 мкс
Wait1mks: r28, 5 mks_out: r29, 255mks_mid: r29Wait1mks_midr28Wait1mks_out
; ***************************************** **********************************
; відкриття форсунки
OPEN_SHD:
ldi r1, 0b00000001r2, 0b00000011r3, 0b00000010r4, 0b00000110r5, 0b00000100r6, 0b00001100r7, 0b00001000r8, 0b00001001_R:
sbic PIND, 7 ; опитування кінцевого датчика