#include<regx51.h>
#include<intrins.h>
void delay(unsigned int i){
while(i--);
}
void move_left(unsigned char p){
unsigned char i;
P1=p;
for(i=0;i<8;i++){
delay(20000);
P1=_crol_(P1,1);
}
}
void move_right(unsigned char p){
unsigned char i;
P1=p;
for(i=0;i<8;i++){
delay(20000);
P1=_cror_(P1,1);
}
}
void move_middle(unsigned char p){
unsigned char i;
for(i=0;i<4;i++){
P1=((p<<i)&0x0f)|(0xf0&(p>>i));
delay(20000);
}
}
void move_out(unsigned char p){
unsigned char i;
for(i=0;i<4;i++){
P1=((p<<i)&0xf0)|((P&0x0f)>>i);
delay(20000);
}
}
void main(){
while(1){
move_left(0xfe);//单灯流动
move_right(0x7f);
move_left(0xfc);//双灯流动
move_right(0x3f);
move_middle(0x7e);
move_out(0xe7);
}
}
通过逻辑或,使内向外和从外向内的LED灯同时流动