#include<reg51.h>
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P3^2;
sbit key4=P3^3;
unsigned char flag=0;
void delay(int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<500;j++) ;
}
/*
按键检测
*/
void key()
{
if(!(key1&&key2&&key3&&key4))
{
delay(20);
if(!(key1&&key2&&key3&&key4))
{
if(key1==0)
{
flag=1;
while(key1==0); // key=0 为真 循环
}
if(key2==0)
{
flag=2;
while(key2==0); //
}
if(key3==0)
{
flag=3;
while(key3==0);
}
if(key4==0)
{
flag=4;
while(key4==0);
}
}
}
}
/*
延时
*/
void delay2(int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<100;j++)key();
}
/*
循环
*/
void right() //循环右移
{
unsigned char i;
for(i=0;i<8;i++)
{
P0=~(0x80>>i);
if(flag!=1)break;
delay2(100);
}
}
void left()//循环左移
{
unsigned char i;
for(i=0;i<8;i++)
{
P0=~(0x01<<i);
if(flag!=2)break;
delay2(100);
}
}
void liangbian()//循环中间去两边
{
unsigned char i;
for(i=0;i<4;i++)
{
P0=~((0x10<<i)|(0x08>>i));
if(flag!=3)break; delay2(100);
}
}
void juzhong() //循环两边去中间
{
unsigned char i;
for(i=0;i<4;i++)
{
P0=~((0x80>>i)|(0x01<<i));
if(flag!=4)break;
delay2(100);
}
}
void main()
{
while(1)
{
key();
switch(flag)
{
case 1:right(); break;
case 2:left();break;
case 3:liangbian(); break;
case 4:juzhong(); break;
default:break;
}
}
}
4个按键控制4个循环播放
猜你喜欢
转载自blog.csdn.net/linsenaa/article/details/102561423
今日推荐
周排行