此程序是用74hc138译码器点亮led灯的程序。当在程序中
if(i==9)
{
i=0;
}
这段语句前面加延时函数后。i的值一直是1.当把延时去掉后i的值就可以加到9.折是为什么呢?想加个延时函数。源程序如下
#include<reg51.h>
void delay(unsigned int c) ;
sbit A=P0^1;
sbit C=P0^2;
sbit D=P0^3;
main()
{
unsigned char i;
i=1;
while(1)
{
switch(i)
{
case(1): A=0,C=0,D=0 ; //led1 点亮
break;
case(2): A=1,C=0,D=0 ; //led2点亮
break;
case(3): A=0,C=1,D=0 ; //led3点亮
break;
case(4): A=1,C=1,D=0 ; //led4点亮
break;
case(5): A=0,C=0,D=1 ; //led5点亮
break;
case(6): A=1,C=0,D=1 ; //led6点亮
break;
case(7): A=0,C=1,D=1 ; //led7点亮
break;
case(8): A=1,C=1,D=1 ;
//led8点亮
break;
}
delay(9); //加上这个延时函数后i的值就不可以加到9了,一直是1
i=i++;
if(i==9)
{
i=0;
}
}
}
void delay(unsigned int c)
{
unsigned char k,j;
for(;c>0;c--)
{
for(k=50;k>0;k--)
{
for(j=200;j>0;j--);
}
}
}
|