proteus仿真没效果,舵机不转

#include <REG51.H>
#define uint unsigned int 
#define uchar unsigned char 
    
sbit DJ = P0^0;    
sbit KEY1 = P0^1;
sbit KEY2 = P0^2;
sbit KEY3 = P0^3;
sbit KEY4 = P0^4;

void delayms(uint ms)//ms*1毫秒延时函数@11.0592MHz
{
    uint msi,msj;
    for(msi = 0;msi < ms;msi++)
        for(msj = 0;msj < 112;msj++);
}

int jiaodu;

void main()
{
    int keynum;
    TMOD = 0x01;    //设置定时器模式:定时器0,工作方式1,16位定时器
    TL0 = 0x33;        //设置定时初始值低8位:500us
    TH0 = 0xFE;        //设置定时初始值高8位
    TR0 = 1;            //启动定时器0
    ET0 = 1;            //定时器0中断允许
    EA = 1;                //中断总允许
    jiaodu = 3;        //上电复位到0while(1)
    {
        if(KEY1 == 0)//按键1
        {
            delayms(10);//去抖
            if(KEY1 != 0)//松开按键后
            {
                jiaodu--;//减小高电平占空比,0.5ms每次,角度转动-45if(jiaodu < 1) jiaodu=1;//高电平不能小于0.5ms
            }
        }
        if(KEY2 == 0)//按键2
    {
        delayms(10);//去抖
            if(KEY2 != 0)//松开按键后
            {
                jiaodu++;//增加高电平占空比,0.5ms每次,角度转动+45if(jiaodu > 5) jiaodu = 5;//高电平不能大于2.5ms
            }
    }
        if(KEY3 == 0)//按键3
    {
        delayms(10);//去抖
            if(KEY3 != 0)//松开按键后
            {
                keynum++;//按键次数,用于判断奇偶次
                if(keynum%2 == 1)jiaodu = 1;//奇数次,高电平0.5ms,角度转到-90if(keynum%2 == 0)jiaodu = 5;//偶数次,高电平2.5ms,角度转到90度
            }
    }
    if(KEY4 == 0)//按键4
    {
        delayms(10);//去抖
        if(KEY4 != 0)//松开按键后
        {
            jiaodu = 3;//高电平1.5ms,角度转到0度
        }
    }
}
}
void T0isr() interrupt 1//定时器0中断程序,中断号1,每0.5ms中断1次
{
    uint count;
    TL0 = 0x33;        //设置定时初始值:500us
    TH0 = 0xFE;        //设置定时初始值
    count++;//中断次数,即:多少个0.5ms
  if(count <= jiaodu) DJ = 1;//高电平占空比由变量jiaodu控制,jiaodu=1时高电平0.5ms,jiaodu=5时高电平2.5ms
    if(count > jiaodu && count <= 40) DJ = 0;//低电平占空比,jiaodu=1时低电平19.5ms,jiaodu=5时低电平17.5ms
    if(count > 40) count = 0;//脉宽20ms
}