C语言中单按键控制流水灯亮灭

C语言中单按键控制流水灯亮灭,第1张

enum{

按着,

松开,

};

std::vector<int> light,

把你的灯仿佛light 然后判断当前的状况,每次触发按着的时候就让 light当前的状态变成关灯,light的下一个灯变成开起

先学习写流程图

再根据流程图的方块,实现功能程序

1 port i/o init

2 循环P0口灯亮一遍(设定为output)set 1, 中间要有时间延迟,然後 set 0

3 Config P2 as input, 当P2改变,P0 准位也改变!

While(1){

if(P2Val!=P2ValOld){

P0=P2;

}

}

其中一类; 8只LED左右来回点亮

#include<reg51h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

//延时

void DelayMS(uint x)

{

uchar i;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

void main()

{

uchar i;

P0=0x01;

while(1)

{

for(i=0;i<7;i++)

{

P0=_crol_(P0,1); //P0的值向左循环移动

DelayMS(150);

}

for(i=0;i<7;i++)

{

P0=_cror_(P0,1); //P0的值向右循环移动

DelayMS(150);

}

}

}

实现流水灯的方式有很多种(中断,定时器,延时等等),看用哪种方式,最简单的是延时做流水灯,那么在死循环里面增加按键检测,判断出有按键按下来时,再进入死循环,程序不往下走就可以暂停,再按跌出死循环。

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main(void)

{

uint i;

uchar temp;

uint Flag1=0;  按键标志位bai

uint Flag2=0;

while(1)

{

Flag1 = keyscan();

if(Flag1==1)(Flag2=~Flag2); //如果一旦检测到一次按键扫描就把标志位2 打开;再次就关闭;

if(Flag2==1)// 如果标志位打开就开始流水灯

{

temp=0x01;

for(i=0;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp<<=1;

}

}

扩展资料:

单片机编程就是硬件是单片机,基于单片机进行的程序开发,在有周围外设支持的情况下,用软件来控制的部分通过单片机编程来实现。单片机能识别的语言是硬件语言即汇编,因此编程就是围绕汇编来实现,有直接用汇编程序来编写的,但是较难调试的编写,特别是一上规模就更不易实现,因此常用高级语言来写然后通过编译器转化成汇编。

参考资料来源:百度百科-单片机C语言编程

以上就是关于C语言中单按键控制流水灯亮灭全部的内容,包括:C语言中单按键控制流水灯亮灭、C语言按键和流水灯问题!、流水灯的C语言程序是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9308635.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存