Servo i2c using an external master

You have both a global and local variable c.

volatile byte c; //global
int  c = Wire.read(); //local to the ISR

Which one do you think is being compared to here?

 if(c==51)

You need to brush up on the concept of "Scope"
https://www.arduino.cc/reference/en/language/variables/variable-scope--qualifiers/scope/