|
|
圖片是我單獨(dú)把流水燈部分去掉后做的分析,求大神解答下
********************************
間隔300ms第一次一個(gè)管亮流動(dòng)一次,
第二次兩個(gè)管亮流動(dòng),依次到8個(gè)管亮,
然后重復(fù)整個(gè)過程。
單片機(jī)源程序如下:
#include<reg52.h> //52單片機(jī)頭文件
#include <intrins.h> //包含有左右循環(huán)移位子函數(shù)的庫(kù)
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
void delay(uint z) //延時(shí)函數(shù),z的取值為這個(gè)函數(shù)的延時(shí)ms數(shù),如delay(200);大約延時(shí)200ms.
{ //delay(500);大約延時(shí)500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函數(shù)
{
uchar a,i,j;
while(1) //大循環(huán)
{
a=0xfe; //賦初值
for(j=0;j<8;j++)
{
for(i=0;i<8-j;i++) //左移
{
P1=a; //點(diǎn)亮小燈
delay(200); //延時(shí)200毫秒
a=_crol_(a,1); //將a變量循環(huán)左移一位
}
a=_crol_(a,j); //補(bǔ)齊,方便下面的左移一位
P1=0xff; //全部關(guān)閉
a=a<<1; //左移一位讓多一個(gè)燈點(diǎn)亮
}
}
}
|
|