4个按键控制4个循环播放


#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;
		} 
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值