找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1728|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)控制流水燈流速程序 再次按下按鍵,沒(méi)有跳入下一個(gè)流速

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1056066 發(fā)表于 2022-12-6 18:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
大佬求教
這是我寫的關(guān)于控制流水燈流速的單片機(jī)代碼。但是不知為何再次按下按鍵,沒(méi)有跳入下一個(gè)流速。這是為什么呢?

#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();
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:857072 發(fā)表于 2022-12-6 18:28 來(lái)自觸屏版 | 只看該作者
你都delay(100000了,那還檢測(cè)的到按鍵。按鍵消抖也沒(méi)有。
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2022-12-6 18:35 | 只看該作者
問(wèn)題出在這里:
  1. if(p3_0==0)
  2. {
  3. timeCnt++;
  4. if(timeCnt==4) timeCnt=0;
  5. }
復(fù)制代碼

單片機(jī)執(zhí)行的非?,按下P3==0后,timeCnt不知道被加了多少次。
簡(jiǎn)單的處理把if(timeCnt==4)改成if(timeCnt>4)先看看效果。
回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2022-12-7 15:29 | 只看該作者
要搞清楚程序?yàn)楹我@樣寫。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表