#include <htc.h>
__CONFIG (LVPDIS & BORDIS & MCLREN & PWRTEN & WDTDIS & INTCLK);
//pic16f628a
//энкодер присоеденен к выводам RB7 RB6

void indic (void); //индикация

volatile unsigned int enc_data; //данные с енкодера


void interrupt isr (void){

if (RBIF && RBIE) {    //прерывание по RB4-RB7
if (!RB6){
enc_data++;
}
if (!RB7){
enc_data--;
}
RBIE = 0;        //Запрет прерываний от энкодера
RBIF = 0;
}}


// === начало программы
void main (void){
INTCON = 0;  
TRISA = 0;
TRISB = 0b11000000;
PORTA = 0;
PORTB = 0; 

//прерывание с RB4 - RB7
RBIE = 1; //разрешаем прерывание
GIE  = 1;	 // разрешаем прерывания
while(1)
{
unsigned char tmp = 1; //значение для задержки
indic(); // вызваем индикацию отрисовываеться значение  enc_data

while (!(RB6 && RB7)){}    //Ожидание установки энкодера в "нейтраль"
while (tmp-->0); // задержка 8 мс
RBIF = 0;
RBIE = 1;                         //Разрешение прерываний от энкодера

} // конец бесконечного цикла
} // конец функции

void indic (void){

}




