标题: 求助这类单片机程序应该如何编写?(按键实现一灯闪烁和八灯闪烁的切换) [打印本页]

作者: 玲天生    时间: 2018-12-15 16:53
标题: 求助这类单片机程序应该如何编写?(按键实现一灯闪烁和八灯闪烁的切换)
用一个按键实现一灯闪烁和八灯闪烁的切换,萌新不懂该如何实时切换啊,程序思路应该怎么写?
作者: univers    时间: 2018-12-15 17:27
很简单.
先要写一个闪灯的函数,之后呢,按一个键,打开一个LED。再按一下键打开8个LED口。而按键标志位可以定义一个bit变量来实现。即标志位为0时,就打开一个IO口,当标志位为1时,就打开8个IO口,驱动8个LED灯。

作者: 玲天生    时间: 2018-12-15 17:39
univers 发表于 2018-12-15 17:27
很简单.
先要写一个闪灯的函数,之后呢,按一个键,打开一个LED。再按一下键打开8个LED口。而按键标志位可 ...

那求问大佬这一段的切换如何实现呢?
作者: weiweimao1    时间: 2018-12-17 17:28
我写了一个程序你看一下:
#include<reg52.h>

typedef unsigned int u8;
#define led P2          //定义led由P2口控制

sbit key=P3^1;          //定义开关与P3^1口相连
sbit one=P2^0;          //8个IO口中的一个

u8 num=1;
u8 m;
void delay(u8 z)            //
{                                 //延时函数大概延时1us
        u8 x,y;                 //
        for(x=z;x>0;x--)
        for(y=114;y>0;y--);
}

void keypor()      //检测按键函数
{
        if(key == 0)
        {
                delay(10);
                if(key == 0)
                {
                   num++;
                }
        }
        while(!key);
        m=num%2;
}

void oneLED()           //一个LED闪烁
{
          one=~one;
          delay(100);
}

void eightLED()         //8个LED闪烁
{
        led=0x00;
        delay(100);
        led=0xff;
        delay(100);

}

void main()              //主函数
{
        while(1)
        {
                keypor();       
                if(m==0)
                {
                        oneLED();
                }
                if(m==1)
                {
                        eightLED();
                }
        }
}
作者: jll586    时间: 2018-12-18 11:36
weiweimao1 发表于 2018-12-17 17:28
我写了一个程序你看一下:
#include

#include<reg52.h>

typedef unsigned int u8;
#define led P2          //定义led由P2口控制

sbit key=P3^1;          //定义开关与P3^1口相连
sbit one=P2^0;          //8个IO口中的一个

u8 m;
void delay(u8 z)            //
{                                 //延时函数大概延时1us
        u8 x,y;                 //
        for(x=z;x>0;x--)
        for(y=114;y>0;y--);
}

void keypor()      //检测按键函数
{
        if(key == 0)
        {
                delay(10);
                if(key == 0)
                {
                   num++;
                }
        }
        while(!key);
        if(m==2)
        {
                 m=0;
        }
}

void oneLED()           //一个LED闪烁
{
          one=~one;
          delay(100);
}

void eightLED()         //8个LED闪烁
{
        led=0x00;
        delay(100);
        led=0xff;
        delay(100);

}

void main()              //主函数
{
        while(1)
        {
                keypor();        
                if(m==0)
                {
                        oneLED();
                }
                if(m==1)
                {
                        eightLED();
                }
        }
作者: jll586    时间: 2018-12-18 11:37
#include<reg52.h>

typedef unsigned int u8;
#define led P2          //定义led由P2口控制

sbit key=P3^1;          //定义开关与P3^1口相连
sbit one=P2^0;          //8个IO口中的一个

u8 m;
void delay(u8 z)            //
{                                 //延时函数大概延时1us
        u8 x,y;                 //
        for(x=z;x>0;x--)
        for(y=114;y>0;y--);
}

void keypor()      //检测按键函数
{
        if(key == 0)
        {
                delay(10);
                if(key == 0)
                {
                   num++;
                }
        }
        while(!key);
        if(m==2)
        {
                 m=0;
        }
}

void oneLED()           //一个LED闪烁
{
          one=~one;
          delay(100);
}

void eightLED()         //8个LED闪烁
{
        led=0x00;
        delay(100);
        led=0xff;
        delay(100);

}

void main()              //主函数
{
        while(1)
        {
                keypor();        
                if(m==0)
                {
                        oneLED();
                }
                if(m==1)
                {
                        eightLED();
                }
        }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1