51基础——外部中断:手动按键实现流水灯

/*P70
实验效果:
    外部中断:手动按键实现流水灯(需要杜邦线连接)
	P3.3——P3.5
按第一次:100ms流水灯
按第二次: 500ms流水灯
*/

#include<reg52.h>
#include<intrins.h>    //位移头文件_crol_
sbit k1=P3^5;//定义开关K3

void delay(unsigned int xms)
{
	unsigned int i,j;
	for(i=xms;i>0;i--)
	for(j=112;j>0;j--);
}

void wu ()
{
EX1=1;
EA=1;
IT1=1;//触发方式为下降沿触发

}

void w()	
{
	if(k1==0)//如果按下开关
    	{
	   delay(10);//;延迟10ms 消抖
			 
	  	 if(k1==0)//再次判断按键是否有被按下
	      	 {
		 while(k1==0);//直到按键判断松开
				 
			while(1)
			{
				delay(100);
				P1=_crol_(P1,1);//流水灯
				if(k1==0)   //如果检测到按键再次被按下
				break;		//退出该循环
			}	
			while(1)    	//执行这个循环
			{
			
				delay(500);
				P1=_crol_(P1,1);//流水灯
			}
		
		 }
	 }	
}

void main()	
{   
	wu ();	//调用定时器方法
	P1=0xfe; 	//1111 1110
	while(1)		
 	 {  
	     w(); 
	 }
}	

void time()interrupt 2
{
 w();	
}





  • 1
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值