51单片机跑马灯

 1 #include <reg51.h>
 2 
 3 void delay(unsigned int i);
 4 void SHR(unsigned char beginchar,unsigned char count,unsigned char stepcount,bit opretor,unsigned int delaytime);
 5 
 6 void main()
 7 {                
 8     unsigned int i;
 9     P2=0xff;
10 
11     while(1)
12     {  
13         for(i=0;i<8;i++)
14         {
15             SHR(0x7f,8-i,1,1,300);
16         }
17         for(i=0;i<8;i++)
18         {
19             SHR(0x80,8-i,1,0,300);
20         }
21     }
22 }
23 
24 void delay(unsigned int i)
25 {
26     unsigned char j;
27     for(i;i>0;i--)
28         for(j=255;j>0;j--);
29 }
30 void SHR(unsigned char beginchar,unsigned char count,unsigned char stepcount,bit opretor,unsigned int delaytime)
31 {        
32     unsigned char tempchar=0;    
33     unsigned char tempP2=0;
34     unsigned char endchar=beginchar;
35     tempchar=endchar<<(8-count);
36     endchar>>=count;
37     endchar=tempchar|endchar;
38     do{    
39         tempP2=P2;
40         if(opretor)
41         {          
42             P2=P2&beginchar;
43         }
44         else
45         {
46             P2=P2|beginchar;
47         }
48         delay(delaytime);
49 
50         tempchar=beginchar<<(8-stepcount);
51         beginchar>>=stepcount;
52         beginchar=tempchar|beginchar;
53 
54         if(beginchar!=endchar)
55         {
56             P2=tempP2;
57         }
58     }while(beginchar!=endchar);
59 }

 

posted @ 2013-10-05 02:54  joeycih  阅读(610)  评论(0编辑  收藏  举报