
/*--------------------------------------------------
Подпрограмма инициализации микроконтроллера
--------------------------------------------------*/
void Init (void)
{
//По мере написания программы здесь будут добавляться операторы,
//настраивающие элементы внутренней структуры микроконтроллера
//на необходимый режим работы
}
/*---------------------------------------------------
Подрограмма опроса клавиатуры
---------------------------------------------------*/
#define Scancol1 0xf7	//11110111b
#define Scancol2 0xfb	//11111011b
#define	Scancol3 0xfd	//11111101b
#define Scancol4 0xfe	//11111110b
char SkanCode;	//переменная через которую будет передана информация 
		//подпрограмме ObrabInf
void SborInf (void)
{
register char tmp;
SkanCode=0xff;		//Занести код отсутствия нажатой кнопки
P1=Scancol1;		//Выдать код опроса кнопок в колонке 1
tmp=P1;			//Прочитать состояние кнопок
if (tmp !=Scancol1)     //И если хоть одна кнопка в колонке нажата
   SkanCode &=tmp;	//то запомнить скан-код
P1=Scancol2;		//Выдать код опроса кнопок в колонке 2
tmp=P1;			//Прочитать состояние кнопок
if (tmp !=Scancol2)	//И если хоть одна кнопка в колонке нажата
   SkanCode &=tmp;	//то запомнить скан-код
P1=Scancol3;		//Выдать код опроса кнопок в колонке 3
tmp=P1;			//Прочитать состояние кнопок
if (tmp !=Scancol3)	//И если хоть одна кнопка в колонке нажата
   SkanCode &=tmp;	//то запомнить скан-код
P1=Scancol4;		//Выдать код опроса кнопок в колонке 4
tmp=P1;			//Прочитать состояние кнопок
if (tmp !=Scancol4)	//И если хоть одна кнопка в колонке нажата
   SkanCode &=tmp;	//то запомнить скан-код
}
/*---------------------------------------------------
Подпрограмма обработки информации
---------------------------------------------------*/
void ObrabInf (void)
{
//В этой подпрограмме обычно осуществляют переключение 
//режимов работы устройства
}
/*---------------------------------------------------
Подпрограмма обработки ошибок
---------------------------------------------------*/
void ObrabOshib (void)
{
//В этой подпрограмме обычно осуществляется индикация
//ошибочного ввода информации с клавиатуры
}

void main(void)
{
Init();
while(1)
{SborInf();
 ObrabInf();
 ObrabOshib();
}
}
