你好,可以尝试先切换回到定时器模式,然后再进行清零操作,这边对T0的16位自动重载测试,是正常可以清零的
while (1)
{
if(P34_flag)
{
P34_flag = 0;
in_cnt = ((u16)TH0<<8|(u16)TL0);
printf("T0++,This Num=%d\r\n",in_cnt);
}
if(P35_flag)
{
P35_flag = 0;
TCON &= ~(0x30);//clear TR0/TF0
TMOD &= ~(0x0f);//clear T0_mode/C_T/GATE
TH0 = TL0 = 0x00;
printf("T0 clear,This Num=0!\r\n");
T0_CT = 1;//in_cnt
TR0 = 1;
printf("T0 reload and run\r\n");
}
}

补充测试T4也是一样的

详请参阅测试程序:
if(P33_flag)
{
P33_flag = 0;
T4T3M &= ~(0xf0);//clear T4R/T4C_T/T4x12/T4CLKO
T4H = T4L = 0x00;
printf("T4 clear,This Num=0!\r\n");
T4_CT = 1;//in_cnt
T4R = 1;
printf("T4 reload and run\r\n");
}
if(P06_flag)
{
P06_flag = 0;
in_cnt = ((u16)T4H<<8|(u16)T4L);
printf("T4++,This Num=%d\r\n",in_cnt);
}