24小时热门版块排行榜    

查看: 719  |  回复: 2

ban123456

新虫 (初入文坛)

[求助] 51单片机的问题 已有2人参与

小弟刚开始自学51单片机,自己把独立按键和静态数码管组合起来
想要实现,按一下,LED灯亮,再按一下,LED灯灭,数码管显示1,以此类推到3
可是,有的时候正常,有的时候按下复位键或重启电源,情况不是如此,按一次灯亮时数码管数字改变,这是为什么呢?谢谢大神帮助?


#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit k1=P3^1;
sbit led=P2^0;
sbit SLA=P2^2;
sbit SLB=P2^3;
sbit SLC=P2^4;

void delay(u16 i)
{
        while(i--);
}

void keypros()
{
        if (k1==0)
        {
                u8 a;
                delay(1000);
                if(k1==0)
                {
                        led=~led;
                }
                while(!k1);
                a=a+1;
        }       
}

u8 code smgduan[4]={0x3f,0x06,0x5b,0x4f};

void Digdisplay()
{
                u8 a;
                u8 b;
                u8 c;
                b=a%2;
            c=a/2;
       
                if (c<4&&b==0)
                {
                SLA=0;SLB=0;SLC=0;       
                P0=smgduan[c];
                }                               
}  

void main()
{
         u8 a;
         a=0;
         while(1)
         {          
          keypros();
          Digdisplay();
         }
}
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cdeda

至尊木虫 (知名作家)

【答案】应助回帖


感谢参与,应助指数 +1
ban123456: 金币+1 2020-04-01 21:14:37
你那个a都是局部变量,无法传递参数的哦
客观认识世界。
2楼2020-03-30 21:18:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

www1

银虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
ban123456: 金币+1 2020-04-01 21:15:03
没有初始化才是最麻烦的事情。要自己在main函数开始的时候写自己的端口和变量的初始化的代码,就不会有这个问题。
3楼2020-03-31 10:57:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ban123456 的主题更新
信息提示
请填处理意见