新手求大神指教啊 case3跳不出for死循环 不执行case4
#include
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned short
sbit J10 = P4^1 ;
sbit J7 = P4^2 ;
sbit RIN1 = P0^0 ; //北
sbit RIN2 = P0^1 ; //南
sbit RIN3 = P0^2 ; //西
sbit RIN4 = P0^3 ; //东
//sbit X0 = P1^0; //北
//sbit X1 = P1^1; //南
//sbit Y0 = P1^2; //西
//sbit Y1 = P1^3; //东
sbit S1 = P5^4; //按键
sbit D9 = P0^4; //东
sbit D10 = P0^5; //北
sbit D12 = P0^6; //西
sbit D11 = P0^7; //南
u8 num = -1;
unsigned long T1 = 0;
unsigned long j = 0 ;
u16 cont1,cont2;
u16 ucont1 = 140;
u16 ucont2 = 140;
void Delay1ms()
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
void Timer0Init()
{
TMOD = 0x00;
TH0 = (65536-10)/256;
TL0 = (65536-10)%256;
TR0 = 1 ;
ET0 = 1 ;
EA = 1;
P0M0 = 0x00;
P0M1 = 0x00;
P4M0 = 0x06;
P4M1 = 0x00;
P5M0 = 0x10;
P5M1 = 0x10;
}
void main()
{
// u16 m;
u16 i=140;
Timer0Init() ;
while(1)
{
if(S1==1)
{
num++;
if(num==5)
num = 1 ;
}
while(S1);
switch(num)
{
case 1:
if(RIN1==0&&RIN2 ==1)
{
ucont1++;
if(ucont1==191)
ucont1 = 190;
D11 = 1;
D10 = 0;
D9 = 1;
D12 = 1;
}
else
{
D10=1;
}
if(RIN1==0&&RIN2==0)
{
ucont1 = ucont1;
}
if(RIN1==1&&RIN2==0)
{
ucont1--;
if(ucont1==89)
ucont1 = 90;
D11 = 0;
D10 = 1;
D9 = 1;
D12 = 1;
}
else
{
D11=1;
}
if(RIN3==0&&RIN4 ==1)
{
ucont2++;
if(ucont2==191)
ucont2 = 190;
D11 = 1;
D10 = 1;
D9 = 1;
D12 = 0;
}
else
{
D12=1;
}
if(RIN3==0&&RIN4==0)
{
ucont2 = ucont2;
}
if(RIN3==1&&RIN4==0)
{
ucont2--;
if(ucont2==89)
ucont2 = 90;
D11 = 1;
D10 = 1;
D9 = 0;
D12 = 1;
}
else
{
D9=1;
}
Delay1ms();
Delay1ms();
if(T1>=10000)
T1 = 0 ;
break;
case 2: if(RIN1==0&&RIN2 ==1)
{
ucont1++;
if(ucont1==191)
ucont1 = 190;
D11 = 1;
D10 = 1;
D9 = 1;
D12 = 0;
}
else
{
D12=1;
}
if(RIN1==0&&RIN2==0)
{
ucont1 = ucont1;
}
if(RIN1==1&&RIN2==0)
{
ucont1--;
if(ucont1==89)
ucont1 = 90;
D11 = 1;
D10 = 1;
D9 = 0;
D12 = 1;
}
else
{
D9=1;
}
if(RIN3==0&&RIN4 ==1)
{
ucont2++;
if(ucont2==191)
ucont2 = 190;
D11 = 1;
D10 = 0;
D9 = 1;
D12 = 1;
}
else
{
D10=1;
}
if(RIN3==0&&RIN4==0)
{
ucont2 = ucont2;
}
if(RIN3==1&&RIN4==0)
{
ucont2--;
if(ucont2==89)
ucont2 = 90;
D11 = 0;
D10 = 1;
D9 = 1;
D12 = 1;
}
else
{
D11=1;
}
Delay1ms();
Delay1ms();
if(T1>=10000)
T1 = 0 ;
break;
case 3: //就这case3 跳不出for循环
ucont1 = 140;
ucont2 = 140;
for(i=140;i>79;i--)
{
ucont2=i;
if(i==80)
{
for(i=80;i<201;i++)
{
ucont2=i;
Delay1ms();
Delay1ms();
}
}
Delay1ms();
Delay1ms();
if(T1>=10000)
T1 = 0 ;
}
break;
continue;
case 4:RIN1 = 1;
RIN2 = 1;
RIN3 = 1;
RIN4 = 1;
J7 = 1;
J10 = 1;
break;
default:break;
}
}
}
void Timer0() interrupt 1
{
T1++;
cont1++;
cont2++;
if(cont1
{
J10= 1;
}
else
{
if(cont1<2000)
{
J10 = 0 ;
}
else
{
cont1 = 0;
}
}
if(cont2
{
J7 = 1;
}
else
{
if(cont2<2000)
{
J7 = 0 ;
}
else
{
cont2 = 0;
}
}
}