流水灯

关于流水灯,下面有我用过的三种方法,供参考。

我用的单片机是: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

 

posted @ 2019-09-29 18:03  奋斗的小仔  阅读(264)  评论(0)    收藏  举报