tify"> / / При подачі нуля на черговий стовпець на кожному з «рядів» перевіряється
/ / наявність нуля (факт замикання контакту клавішею)
for (rownum=0; rownum <4; rownum + +)
{= ReadMax (KB) & (0x10 << rownum); (! Row) / / Виявлено натискання клавіші:
{
for (i=0; i <10000; i + +) continue ;/ / перевірка на брязкіт контакту:
/ / через приблизно 40мс повтор сканування тієї ж клавіші
row=ReadMax (KB) & (0x10 << rownum); (! Row)
{
* ch=(KBTable [(colnum << 2) + rownum]); 1;// Стабільне натискання клавіші
}
}
}
}
return 0;// Жодна клавіша натиснута
}
//******************************************************************************************************************//
/ / функція перетворює символ в число
/ *
вхідні дані:
ch - символ, який необхідно перетворити
повертається результат:
- у разі якщо передається не цифра (код помилки)
або перетворену цифру (0,1,2 ..., 9)
* / int chrtoint (char ch)
{Digits []=«0123456789»; int sym; (sym=0; sym <= 9; sym + +)
{(Digits [sym] == ch)
{sym;
}
} 255 ;/ / помилка
}
//******************************************************************************************************************//char ReadEXTRAM (unsigned char xdata * adr)
{char oldDPP=DPP; char val=0;=MyData;=* adr;=oldDPP; val;
} WriteEXTRAM (unsigned char xdata * adr, unsigned char val)
{char oldDPP=DPP;=MyData ;/ / третій сторінка пам'яті
* adr=val;
DPP=oldDPP ;/ / повертаємо старе значення
}
/ / передача даних на ПК
/ *
опис:
передає, через UART, масив (conv_val) із збереженими, в ньому до цього, значеннями
вхідні дані:
відсутні
повертається результат:
відсутня
* / WriteToUART (unsigned short count)
{short i ;/ / счетчікshort tmp=0; («ADC Channel:% d nData start: n», NumChanel) ;/ / номер каналу і службове слово (i=0; i <= count; i + +)
{= ReadEXTRAM (i);
/ / val=conv_val [i]; («% D n», tmp) ;/ / передача даних
}
printf («Data stop n») ;/ / кінець виводу даних
}
/ / запис значення під внешенем ОЗУ
/ *
опис:
записує вхідне значення в масив, що зберігається в зовнішньому ОЗУ
вхідні дані: <...