打印

为啥效果达不到

[复制链接]
292|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guoyt|  楼主 | 2020-2-8 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

想达到的效果是,按一次按键k,数码管显示0到8随着按键增加,就是按一次按键,数码管加1,按下按键
        led-p2亮,松开熄灭    大神帮忙看看为啥效果达不到

使用特权

评论回复
沙发
hanwe| | 2020-2-8 16:38 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
guoyt|  楼主 | 2020-2-8 16:42 | 只看该作者

#include<reg52.h>   //头文件
#define led P0                         //led代替P0
#define uint unsigned int
#define uchar unsigned char
void ys(uint p);    //延时函数
sbit a=P2^2;
sbit b=P2^3;   //138译码器控制端口abc
sbit c=P2^4;
sbit k=P3^3;    //独立按键
sbit p2=P2^6;  //led发光二极管
uint z=0;
uint h=0;
uchar e[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
        a=0;
        b=0;   //138译码器端口全置0,控制数码器位
        c=0;
        while(1)
        {
                if(k==0)  //判断按键是否按下
                {
                        ys(5);  //延时消抖
                        if(k==0);   //再次判断
                        {
                                p2=0;  //led亮
                                h++;  //数组下标自增
                                if(h==8)  //判断数组下标是否为8
                                h=0; //到了8,就置0
                                led=e[h];  //给数码管位选赋值
                                while(!k);        //判断按键是否松手
                                ys(5); //延时
                                while(!k);  //再次判断是否松手
                        }
                }
                else
                {
                         p2=1;  //led熄灭
                }
        }
         
}
void ys(uint p)
{
        uint i,f;
        for(i=p;i>0;i--)
                for(f=110;f>0;f--);
}

使用特权

评论回复
地板
zhuww| | 2020-2-8 16:46 | 只看该作者
换了端口按键呢

使用特权

评论回复
5
zhanglli| | 2020-2-8 16:49 | 只看该作者
你这程序写得,真是不知道怎么看啊,怎么在该加括弧的地方什么都没有呢

使用特权

评论回复
6
lium| | 2020-2-8 16:54 | 只看该作者
消抖的时间是不是太长了。你能按那么长时间吗

使用特权

评论回复
7
lium| | 2020-2-8 16:58 | 只看该作者
设断点调试,看按下按键能不能跑到按键处理里面,逐步排查就能找出原因了。

使用特权

评论回复
8
guoyt|  楼主 | 2020-2-8 17:00 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1018

主题

9067

帖子

3

粉丝