此程序是用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--);
}
}
}
|