流水灯
关于流水灯,下面有我用过的三种方法,供参考。
我用的单片机是:STC89C52,与LED接一起的是P2口。
C语言
方法一:
1 #include <at89x51.h> //head file 2 3
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=100;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=100;j>0;j--) 13 for(k=50;k>0;k--); 14 } 15 void main(){ 16 P2=0xFE; 17 while(1) 18 { 19 delay(); 20 P2=_crol_(P2,1); 21 } 22 }
汇编语言:
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

浙公网安备 33010602011771号