关于流水灯,下面有我用过的三种方法,供参考。
C语言
方法一:
1 #include <at89x51.h> //head file 2 #include<stdio.h> 3 unsigned long a; 4 5 void delay(void) //延时函数 6 7 { 8 9 unsigned char h,i,j,k; 10 11 for(h=5;h>0;h--) 12 for(i=4;i>0;i--) 13 for(j=116;j>0;j--) 14 for(k=50;k>0;k--); 15 16 } 17 18 void main() 19 { 20 int c[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; 21 int i; 22 while(1){ 23 i=0; 24 while(i<=7) 25 { 26 P2=c[i]; 27 i++; 28 delay(); 29 } 30 } 31 32 }
方法二:
1 #include<at89x51.h> 2 #include<intrins.h> 3 4 5 void delay(void) 6 { 7 8 unsigned char h,i,j,k; 9 10 for(h=5;h>0;h--) 11 for(i=4;i>0;i--) 12 for(j=116;j>0;j--) 13 for(k=50;k>0;k--); 14 } 15 void main(){ 16 int i; 17 i=0; 18 P2=0xFE; 19 while(1) 20 { 21 P2=0xFE; 22 i=0; 23 while(i<8) 24 { 25 delay(); 26 P2=_crol_(P2,1); 27 i++; 28 } 29 } 30 } 31
汇编语言:
1 ORG 0000H 2 MAIN:MOV P2,#0xFE 3 MOV A,P2 4 LOOP: RL A 5 MOV P2,A 6 DELAY: MOV R7,#250 ; 7 D1: MOV R6,#250 8 D2: DJNZ R6,D2 ; 9 DJNZ R7,D1 ; 10 JMP LOOP 11 END
原文:https://www.cnblogs.com/xxmrecord/p/11609252.html