51单片机计数器的问题


#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar a,b,j=0;    
void delayms(uint n)
{
 uchar i;
 while(n--)
 for(i=0;i<113;i++);
}
void main()
{
    TMOD=0x60;
    TL1=256-99;
    TH1=256-99;
    TR1=1;
  EA=1;
  ET1=1;
    P2=0XFC;
    P0=0X3F;
    while(1)
    {
        P2=0XFD;
        P0=temp[a];
        delayms(2);
        P2=0xff;
        
        P2=0xfe;
        P0=temp[b];
        delayms(2);
        P2=0xff;
        }
}
void intx1() interrupt 3
{
    j++;
    if(j<100)
    {
        a=j/10;
        b=j%10;
    }
    if(j==100)
    {
        P2=0XFC;
      P0=0X3F;
        j=0;
    }
}    

编写0-99的手动计数程序,按下P3.5引脚上所接的负脉冲按钮,在S1和S0两片数码管上显示计数值,加到数值100则清零,继续从0加到99重复显示。实验接线: P0.7 P0.0接DP A
+5V接段锁存和位锁存
P2.7 P2.0 接S7 S0
P3.5 接 负脉冲
这上面是我自己敲的代码,但无法实现效果,有没有人帮忙看看

1.测试过数码管可以进行数字显示吗?
2.中断服务函数void intx1() interrupt 3应该有问题哦

可以参考一下这个
https://ask.csdn.net/questions/7935269/54184160?spm=1001.2014.3001.5504
检查一下IO配置是否正确