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 }