51单片机按键去抖的问题

下面是我写的代码(写的很乱大家将就着看一下吧)

#include"reg52.h"
#include"intrins.h"
sbit LED=P0^0; 
sbit jc=P1^7;
static char zheci=1,shangci=1;
static char a=0xFF;
void hanshu() interrupt 1
{
    TH0=(65535-2000)/256;
    TL0=(65535-2000)%256;      //2ms的延时,每2ms检测一次开关状态
    TF0=0;
    if((( a << 1 ) | jc) == 0xFF)
    {
        zheci=1;
    }
    else if((( a << 1 ) | jc) == 0)
    {
        zheci=0;
    }
    else;                                 //判断该开关是否稳定并且读取他的高低电平
}
int main()
{
    TMOD=0X01;
    TR0=1;
    EA=1;
    ET0=1;
    TH0=(65535-2000)/256;
    TL0=(65535-2000)%256; 
    TF0=0;
    LED=0;
    while(1)
    {
        if(zheci != shangci)     
        {
            if(zheci == 1)
            {
                LED=~LED;
            }                               //判断按键是否按下并弹起改变led的亮灭
            shangci=zheci;           
        }
    }
}


为什么这个程序在仿真软件里面使用灯没有变化。
这个是所使用的电路图。

img

救救孩子吧,感谢感谢。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。