找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 875|回复: 3
收起左侧

51单片机控制流水灯流速程序 再次按下按键,没有跳入下一个流速

[复制链接]
ID:1056066 发表于 2022-12-6 18:01 | 显示全部楼层 |阅读模式
大佬求教
这是我写的关于控制流水灯流速的单片机代码。但是不知为何再次按下按键,没有跳入下一个流速。这是为什么呢?

#include<reg51.h>
#define uchar unsigned char
sfr p1=0x90;


sbit p3_0=0xb0;
sbit p3_1=0xb1;
sbit p3_2=0xb2;
sbit p3_3=0xb3;

unsigned int i,j,k;


uchar timeCnt=0;

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


void shanshuo1()
{
p1=~0x01;delay(5000);
                for(j=0;j<3;j++)
                {               
        
                p1=~(0x01<<j);delay(5000);
                        if(j==2)
                        {
                                p1=~0x01;delay(5000);
                                j=0;
                        }
                }
}
void shanshuo2()
{
p1=~0x01;delay(50000);
                for(j=0;j<3;j++)
                {               
        
                p1=~(0x01<<j);delay(50000);
                        if(j==2)
                        {
                                p1=~0x01;delay(50000);
                                j=0;
                        }
                }
}
void shanshuo3()
{
p1=~0x01;delay(100000);
                for(j=0;j<3;j++)
                {               
        
                p1=~(0x01<<j);delay(100000);
                        if(j==2)
                        {
                                p1=~0x01;delay(100000);
                                j=0;
                        }
                }
}
void main()
{
while(1)
{
if(p3_0==0)
{
timeCnt++;
if(timeCnt==4) timeCnt=0;
}
if(timeCnt==1) shanshuo1();
if(timeCnt==2) shanshuo2();
if(timeCnt==3) shanshuo3();
}
}

回复

使用道具 举报

ID:857072 发表于 2022-12-6 18:28 来自手机 | 显示全部楼层
你都delay(100000了,那还检测的到按键。按键消抖也没有。
回复

使用道具 举报

ID:883242 发表于 2022-12-6 18:35 | 显示全部楼层
问题出在这里:
  1. if(p3_0==0)
  2. {
  3. timeCnt++;
  4. if(timeCnt==4) timeCnt=0;
  5. }
复制代码

单片机执行的非常快,按下P3==0后,timeCnt不知道被加了多少次。
简单的处理把if(timeCnt==4)改成if(timeCnt>4)先看看效果。
回复

使用道具 举报

ID:123289 发表于 2022-12-7 15:29 | 显示全部楼层
要搞清楚程序为何要这样写。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表