(作业一)基于STC15实现流水灯进出循环,切换循环的控制

目的:实现流水灯以一个规律循环,同时控制进出循环,切换循环

提前准备(基础代码及延迟函数)

#include <STC15F2K60S2.H>

#define u8 unsigned char 
#define u16 unsigned int 

void delay(int ms) //延迟函数
{
	int i,j;
	for(i=0;i<ms;i++)
		for(j=845;j>0;j--);
}

独立按键函数,实现控制

利用LED_Flag值实现控制

u16 LED_Flag=0;
void Key_scan()
{
	if(P30==0)
	{
		delay(5);//消抖
		if(P30==0)
		{
			LED_Flag=1;
		}
		while(!P30);//松手检测
	}
	
	else if(P31==0)
	{
		delay(5);
		if(P31==0)
		{
			LED_Flag=2;
		}
		while(!P31);
	}
	
	else if(P32==0)
	{
		delay(5);
		if(P32==0)
		{
			LED_Flag=3;
		}
		while(!P32);
	}
	
	else if(P33==0)
	{
		delay(5);
		if(P33==0)
		{
			LED_Flag=4;
		}
		while(!P33);
	}
}

主函数

void main ()
{
	P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//关闭蜂鸣器
		while(1)
		{
			Key_scan();
			if(LED_Flag==1)//循环1
			{
				LED_Flag=0;
				while(1)//死循环
				{
					for(LED=0;LED<9;LED++)
						{
							P0=~(0x01<<LED);
							Key_scan();//控制进出循环
							delay(200);
							Key_scan();//控制进出循环
						}
					Key_scan();
					if(LED_Flag==4)
						break;
				}
			}
			
			if(LED_Flag==2)//循环2
			{
				LED_Flag=0;
				while(1)
				{
					for(LED=0;LED<9;LED++)
						{
							P0=~(0x80>>LED);
							Key_scan();
							delay(200);
							Key_scan();
						}
					Key_scan();
					if(LED_Flag==4)
						break;
				}
			}
			
			if(LED_Flag==3)//循环3
			{
				LED_Flag=0;
				while(1)
				{
					for(LED=0;LED<9;LED+=2)
						{
							P0=~(0x01<<LED);
							Key_scan();
							delay(200);
							Key_scan();
						}
					Key_scan();
					if(LED_Flag==4)
						break;
				}
			}
		}
}

3个for循环,实现三种规律的流水灯

循环中间插入独立按键函数,实现控制进出循环

死循环实现流水灯在不控制进出的情况下一直运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值