按键控制跑马灯的暂停与运行

您所在的位置:网站首页 按键控制led灯亮灭汇编语言 按键控制跑马灯的暂停与运行

按键控制跑马灯的暂停与运行

#按键控制跑马灯的暂停与运行| 来源: 网络整理| 查看: 265

ZigBee按键控制跑马灯的运行与暂停 #ZigBee按键控制流水的灯的运行与暂停 #ZigBee按键控制LED灯的运行与暂停 #CC2530按键控制跑马灯的运行与暂停 #CC2530按键控制流水的灯的运行与暂停 #CC2530按键控制LED灯的运行与暂停

最近刚好在复习这块的知识与内容,所以与大家分享一下。记得当时老师上课讲的时候自己也没怎么听懂,这会儿再看看也就当作是再学习一遍了。

下面进入今天的正题: 一、按要求完成以下功能: 1、程序开始时,4个灯全亮一会, 然后全灭,再开始进入跑马灯 2、跑马灯过程为D4亮,其余灭,延时; D3亮,其余灭,延时; D6亮,其余灭,延时; D5亮,其余灭,延时; 3、s1按下松开后,跑马灯暂停保留当前状态, 再次按下松开后,从当前状态处继续运行跑马灯 (s1按下时,不能打断跑马灯的运行)

二、部分效果图: 部分效果图

三、代码如下:

#include "iocc2530.h" #define D3 P1_0 //LED3 #define D4 P1_1 //LED4 #define D5 P1_3 //LED5 #define D6 P1_4 //LED6 #define s1 P1_2 //按键s1 unsigned int count=0; //时间片计数变量 unsigned char f_LED=0; //0关、1开 //端口初始化函数 void Init_Port() { //LED灯端口配置 P1SEL &=~0x1b; //功能设置:0通用、1外设 P1DIR |= 0x1b; //方向设置:0输入、1输出 P1 &=~0x1b; //熄灭4个LED灯 //s1按键端口配置 P1SEL &=~0x04; //功能设置:0通用、1外设 P1DIR &=~0x04; //方向设置:0输入、1输出 P1INP &=~0x04; //初步设置为上拉或下拉模式 P2INP &=~0x40; //最终设置为上拉模式 } //毫秒级延时函数 void delay(unsigned int t) { unsigned int x,y; for(x=t; x>0; x--) for(y=114; y>0; y--); } //LED检测函数 void LED_Check() { P1 |= 0x1b;delay(3000); //4个灯全亮,延时 P1 &=~0x1b;delay(3000); //4个灯全灭,延时 } //跑马灯函数 void LED_Running() { /* (1)要想使跑马灯暂停下来,然后再从当前的状态继续运行, 那么就要用时间片的思想来完成,就是在每小段时间中 不断的扫描s1按键是否按下,如果s1被按下就停留在这, 然后一直点亮在这个小段时间内被点亮的LED灯,这样就实现了暂停的功能; (2)而要想继续运行跑马灯程序,则需当每次s1按键被按下时都翻转s1标志位的状态。 (注:时间片的概念:将一段时间拆分成N个小段的时间,不改变其本身时间数值) */ delay(10); //每次进跑马灯函数时,先延时10毫秒 if(f_LED==1) //判断f_LED标志位是否为1(即是否是打开的状态) { count++; //为1则开始计数 } if(count delay(100); //按键消抖 { if(s1==0) //再次判断,确认是否是s1被按下 { while(s1==0) //按键按下时 { LED_Running(); //按键按下松开前,继续运行跑马灯程序 } //--- 切换f_LED状态的方法一 ---// // if(f_LED==0) //如果s1按下且f_LED标志位为0(关),则将标志位置1 // f_LED=1; // else if(f_LED==1) //如果s1按下且f_LED标志位为1(开),则将标志位置0 // f_LED=0; //--- 切换f_LED状态的方法二 ---// f_LED=~f_LED; //切换f_LED标志位的状态(即翻转开关的状态, //就像是单联开关,非关即开的状态) } } } } //主函数 void main() { Init_Port(); //端口初始化函数 LED_Check(); //LED检测函数 f_LED=1; //开 while(1) { LED_Running(); //跑马灯函数 Scan_Key(); //按键扫描函数 } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3