J'arrive à m'en tirer en écrivant if (uint8_t(X-Y)>20)..., mais je ne vois pas l'intérêt que le compilateur fasse le calcul avec des int 16bits alors que le micro est en 8 bits!
Une solution est de passer par une variable supplémentaire, mais c'est du gâchis!