lign="justify"> LCD_Ini (*) byte constant (08h, 02h, 0fh, 01h),/* коман ди РКІ */
Ind (56) bute, /* вміст індикатора */
(i, j, n, k, s, t) byte, /* змінні для роботи */
(fl_reg, fl_s, flag, fl_p) byte,/* прапори определ режиму роботи */_key byte, /* номер натиснутоюклавіші */
(k1_old) byte, /* номер останньої натиснутоюклавіші */
chan byte /* номер оцифровувати каналу */
adc_H, adc_L byte,
per_t0 word;/* число циклів переповнення таймера0 */
/* пеpеіменованіе pазpядов поpта */
declare rs literally P2.6 ,/* лінія зв'язку з LCD */
rw literally P2.7 ,/* лінія зв'язку з LCD */literally P2.5 ;
/* - Оброблювачі переривань - */
/* - Оброблювач переривання int0-*/
int_obor: procedure interrupt 0 ;/ * обробник переривання подсчі число обертів */
oborp = oborp +1;
end int_obor;
/* - Оброблювач переривання int1-*/_obor: procedure interrupt 2 ;/ * обработ перериває подсчі швидкість */= skorp +1;
end int_obor;
/* - Оброблювач переривання таймера-*/_int: procedure interrupt 1;/* переривання t0 */
/* перевірка натискання клавіш */(p3.0 = 0b) and (kl_old <> 1) then do; n_key = 1; kl_old = 1; end; (p3.1 = 0b) and (kl_old <> 2) then do; n_key = 2; kl_old = 2; end; (p3.2 = 0b) and (kl_old <> 3) then do; n_key = 3; kl_old = 3; end; ( p3.3 = 0b) and (kl_old <> 4) then do; n_key = 4; kl_old = 4; end; (p3 = 0fb) then do; n_key = 0; kl_old = 0; end;
/* фіксуємо поточну швидкість і обороти і устанавл прапор */
if (per_t0> 15) then /* якщо пройшла секунда */
dofl_s = 1 then do signal = not (signal); P2.4 = signal; end; = oborp * 60 * 2 ;/ * підраховуємо число оборотів в хвилину */
skor = skorp * 3600/(1000 * 2) ;/ * переводимо шв і м сек в км год */
skorp = 0; oborp = 0 ;/ * скидаємо лічильники */
/* перевіряємо перевищення шв і оборотів */
if skor> 120 then do fl_s = 1; fl_reg = 0; fl_p = 0; end; obor> 5000 then do fl_s = 1; fl_reg = 0; fl_p = 0; end;