#include
#include
#define uchar unsigned char
sbit s1=P1^4;
sbit s2=P1^5;
sbit s3=P1^6;
sbit s4=P1^7;
uchary,flag1,flag2,flag3,flag4;
void delay(uchar z);
void main()
{
P0=0;
P1=0xff;
flag1=flag2=flag3=flag4=1;
while(1)
{
if(s4==1) delay(25);
else if(s3==1)delay(20);
else if(s2==1)delay(15);
else if(s1==1)delay(10);
else
continue;
//开关控制延时
switch(P1&0x0f)
{
case15: flag3=flag2=flag1=1;
if(flag4){y=4;flag4=0;}
else y=_crol_(y,1);
break;
case7: flag4=flag2=flag1=1;
if(flag3){y=3;flag3=0;}
elsey=_crol_(y,1);
break;
case3: flag4=flag3=flag1=1;
if(flag2) { y=2;flag2=0;}
elsey=_crol_(y,1);
break;
case1: flag4=flag3=flag2=1;
if(flag1) { y=1;flag1=0;}
else y=_crol_(y,1);
break;
case0: flag4=flag3=flag2=flag1=1;
y=0;
//开关控制灯亮的个数
}
P0=y;
}
}
void delay(uchar z)//延时程序,z=1时,延时0.1s
{
uchar j,k;
for(;z>0;z--)
for(j=120;j>0;j--)
for(k=0;k<137;k++);
}
p1.0----1.3确定灯亮的个数,p1.4----1.7确定灯亮的速度,p0口接的是8个二极管,上拉电阻300也接了,限流30也接了,在proteus仿真,每个灯闪了一下,就都不亮了,控制开关完全不起作用。我用汇编编的的运行良好,可就是c改来该去都看不到效果,小弟初次接触单片机,跪求高人指点迷津啊!答的好的有加分!
在大家的热心帮助下,我终于将错误找出来了,非常感谢大家!
在此将正确程序给出激励后来者。
http://user.qzone.qq.com/272279012/infocenter?ptlang=2052
|