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 }