任務: 1、橫排流水 2、豎排流水 3、斜排流水 1、橫排流水 源程序: /******************************************************************************* 作者:劉海濤 版本:第一次 日期:2010年7月23日 描敘:流水燈 順序P0、P1、P2、P3先后從0到7bit *******************************************************************************/ /**********************************頭文件**************************************/ #include"reg52.h" /******************************************************************************/ /******************************************************************************* 函數名:delay(),延時函數。 宏定義:無 輸 入:無 輸 出:無 *******************************************************************************/ delay(unsigned int dat) //函數定義 { unsigned int i,j; for(i=0;i<=dat;i++) { for(j=0;j<=20000;j++); } } void main(void) //主函數 { unsigned char i; while(1) //循環 { for(i=0;i<8;i++) { P0=0x01<<i; delay(100); } for(i=0;i<8;i++) { P1=0x01<<i; delay(100); } for(i=0;i<8;i++) { P2=0x01<<i; delay(100); } for(i=0;i<8;i++) { P3=0x01<<i; delay(100); } } } 2、豎排流水 源程序: /******************************************************************************* 作者:劉海濤 版本:第一次 日期:2010年7月23日 描敘:流水燈,豎著走,即P0到P3循環依次走1 bit ******************************************************************************/ /******************************************************************************/ #include"reg52.h" /******************************************************************************/ /******************************************************************************* 函數名:delay(),延時函數 宏定義:無 輸入:無 輸出:無 ******************************************************************************/ delay(unsigned int dat) //延時函數定義 { unsigned int i,j; for(i=0;i<=dat;i++) { for(j=0;j<=20000;j++); } } void main(void) //主函數 { unsigned char i; while(1) { for(i=0;i<=7;i++) { P0=0x01<<i; delay(100); P1=0x01<<i; delay(100); P2=0x01<<i; delay(100); P3=0x01<<i; delay(100); } } } 3、斜流水 源程序: /******************************************************************************* 作者:劉海濤 版本:第一次 日期:2010年7月23日 描敘:流水燈,斜著走 *******************************************************************************/ /**********************************頭文件**************************************/ #include"reg52.h" /******************************************************************************/ /******************************************************************************* 函數名:delay(),延時函數。 輸入:無 輸出:無 宏定義:無 *******************************************************************************/ delay(unsigned int dat) { unsigned int i,j; for(i=0;i<dat;i++) { for(j=0;j<20000;j++); } } void main(void) { unsigned int i,a,b,c; while(1) { for(i=0;i<=7;i++) { P0=0x01<<i; delay(100); a=i+1; if(a>=8) { a=i-8; } P1=0x01<<a; delay(100); b=i+2; if(b>=8) { b=b-8; } P2=0x01<<b; delay(100); c=i+3; if(c>=8) { c=c-8; } P3=0x01<<c; delay(100); } } }