

procedure Interrupt;
begin
if TestBit(INTCON, RBIF) = 1 then
begin
// first optical encoder
New1 := (PORTB and %11000000);
if New1 <> Old1 then
begin
Tmp1 := New1.7;
Tmp2 := Old1.6;
bUp := (Tmp1 xor Tmp2);
if bUp then
//if (New1.7 xor Old1.6) = 1 then // work in MP V8, don't work in MP pro V2.50
bInc := true
else
bInc := false;
bValueChanged := true;
Old1 := New1;
end;
// second optical encoder
New2 := (PORTB and %00110000);
if New2 <> Old2 then
begin
Tmp1 := New2.5;
Tmp2 := Old2.4;
bUp := (Tmp1 xor Tmp2);
if bUp then
//if (New2.5 xor Old2.4) = 1 then // work in MP V8, don't work in MP pro V2.50
bInc := true
else
bInc := false;
bValueChanged := true;
Old2 := New2;
end;
ClearBit(INTCON, RBIF);
end;
end;
begin
Main_Init;
Value_Load; // load last used Value from EEProm
while true do
begin
Delay_ms(1);
if bValueChanged then
begin
if bPWM = 1 then
PORTB.0 := bInc;
if bInc then
begin
if iValue < 255 then
inc(iValue);
end
else
begin
if iValue > 0 then
dec(iValue);
end;
bValueChanged := false;
if bPWM = 1 then
Value_Set_PWM(iValue)
else
Value_Set_Vout(iValue);
Value_Save;
end
else
nop;
end;
end;


