依次点亮流水灯,编译时出现P2未定义

#include<reg.51>
unsigned char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit K=P0^0;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{
for (j=0;j<125;j++);
}
}

void main()
{
unsigned char i,w;
P2=0xff;
while(1)
{
if(K==0)
{
delay1ms(10);
if(K==0)
{
w=0x01;
for(i=0;i<8;i++)
{
P2=~w;
delay1ms(300);
w<<=1;
}

                 }
             }
        else P2=0x00;
    }

}

可能是单片机型号和头文件没有对应上