单片机通过按键切换程序

2020-02-04 09:19发布

我想编写一个按键控制流水灯花样的程序,不是单键的,而是按某一个键出现一种花样,按另一个键又出现另外一种花样。我编写的老是出不来效果。请知道的朋友帮下忙,谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
33条回答
zengdz
1楼-- · 2020-02-05 13:33

(原文件名:11_副本.jpg)
.titrwh
2楼-- · 2020-02-05 13:45
回复【5楼】span42 狂奔的蜗牛
-----------------------------------------------------------------------

蜗牛老乡
zengdz
3楼-- · 2020-02-05 19:36
回复【4楼】xielong4183 梦灭
-----------------------------------------------------------------------

谢谢你的回复,可是我编了之后和原来情况一样。按某个键后有一种花样,但是换另一个键就不能切换。
BXAK
4楼-- · 2020-02-06 01:19
回复【9楼】zengdz
-----------------------------------------------------------------------

你的程序不对,一旦按键进入某个“花样”就在里面死循环了,还怎么切换。

好的方法是用中断。但既然你不想用,可以在用于点亮LED的延时程序里加上按键检测。


#define unit unsigned int
#define uchar unsigned char
#include<reg51.h>
#include<intrins.h>

sbit key1=P2^0;
sbit key2=P2^1;

uchar key_Value;   //键值

void delayms(unit);
void vary1();
void vary2();

void main ()
{  
   while(1)
   {
      switch(key_Value)
      {
        case 1: vary1();
                break;
        case 2: vary2();
                break;
        default:break;  
      }
   }
}

void delayms(unit)
{
   ……
   if(!key1)key_Value=1;
   if(!key2)key_Value=2;
}
zengdz
5楼-- · 2020-02-06 05:35
 精彩回答 2  元偷偷看……
zengdz
6楼-- · 2020-02-06 08:04
回复【10楼】BXAK
-----------------------------------------------------------------------

uchar System_Mode;

if(key1==0)  
   System_Mode=1;
if(key2==0)  
   System_Mode=2;


switch(System_Mode)
    {
       case 1:
          vary1();
          break;
       case 2:
          vary2();
          break;

       default:
          break;
    }

  就算用switch case好像也没用

一周热门 更多>