delay(500)换成delay(50000)为什么行扫描的速度更快了

img


#include<reg51.h>
sbit L0=P1^0;
sbit L1=P1^1;
sbit L2=P1^2;
sbit L3=P1^3;
unsigned char s[] = {0x3f,0x06,0x5b,0x4f,
                     0x66,0x6d,0x7d,0x07,
                       0x7f,0x6f,0x77,0x7c,
                       0x39,0x5e,0x79,0x71};
void delay(unsigned char i)
{
while(i--)
{
unsigned int t;
for(t=0;t<120;t++);
}
}
void main()
{      
      //P1=0xef;
      unsigned char i=0,temp=0;
      while(1)
      {
           P1=0xef; //1110 1111
          for(i=0;i<4;i++)
          {
              if(L0==0)
                  P2=s[i*4+0];
              if(L1==0)
                  P2=s[i*4+1];
              if(L2==0)
                  P2=s[i*4+2];
              if(L3==0)
                  P2=s[i*4+3];
              delay(50000);
              temp=P1;
              temp=temp|0x0f;
              temp=temp<<1;
              temp=temp|0x0f;
              P1=temp;
          }
      }
}

都溢出了,unsigned char 最多到255 换成 unsigned int 可以到65535