Encoder application problem

The following programs are encoder applications, but they cannot run normally;
Please advise.
XIAO
/*

  • 增量编码器控制(2020)
    */

int encoderPinA = 0;//编码器A
int encoderPinB = 1;//编码器A
int buttonPin = 2;//编码器开关

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

int MSB;//MSB = most significant bit
int LSB; //LSB = least significant bit

int encoded; //将2针的值转换为单个数字
int sum; //将其添加到先前的编码值

long readEncoderValue(void) {
return encoderValue / 4;
}

boolean isButtonPushDown(void) {
if (!digitalRead(buttonPin)) {
delay(5);
if (!digitalRead(buttonPin))
return true;
}
return false;
}

void setup() {
Serial.begin (9600);

pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
pinMode(buttonPin, INPUT);

digitalWrite(encoderPinA, HIGH); //打开上拉电阻
digitalWrite(encoderPinB, HIGH); //打开上拉电阻

//call updateEncoder() 当看到任何高/低变化时
//on interrupt 0 (pin 2), or interrupt 1 (pin 3)
/*
中断函数(attachInterrupt):attachInterrupt(interrupt,function,mode)
interrupt:中断源(在Arduino中,中断源可选值为0或1,一般分别对应2号和3号引脚)
function:需要中断的函数名
mode:LOW(低电平触发)、CHANGE(变化时触发)、
RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)
*/
attachInterrupt(0, updateEncoder, CHANGE);
attachInterrupt(1, updateEncoder, CHANGE);

}

void loop() {
//Do stuff here
/*
if (isButtonPushDown()) {
Serial.println(“you push button down!!!”);
}
*/
Serial.println(readEncoderValue());
//delay(50); //只是在这里放慢了输出速度,并显示即使在延迟的情况下它仍然可以工作
}

//中断
void updateEncoder() {
MSB = digitalRead(encoderPinA); //MSB = most significant bit
LSB = digitalRead(encoderPinB); //LSB = least significant bit

encoded = (MSB << 1) | LSB; //将2针的值转换为单个数字
sum = (lastEncoded << 2) | encoded; //将其添加到先前的编码值

if (sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
if (sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;

lastEncoded = encoded; //下次存储该值
}

@pulanchina why not run normally ? can you privide more detail infor ?