標題:
51單片機控制流水燈流速程序 再次按下按鍵,沒有跳入下一個流速
[打印本頁]
作者:
踏夢追清風
時間:
2022-12-6 18:01
標題:
51單片機控制流水燈流速程序 再次按下按鍵,沒有跳入下一個流速
大佬求教
這是我寫的關(guān)于控制流水燈流速的單片機代碼。但是不知為何再次按下按鍵,沒有跳入下一個流速。這是為什么呢?
#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();
}
}
作者:
a185980800
時間:
2022-12-6 18:28
你都delay(100000了,那還檢測的到按鍵。按鍵消抖也沒有。
作者:
Hephaestus
時間:
2022-12-6 18:35
問題出在這里:
if(p3_0==0)
{
timeCnt++;
if(timeCnt==4) timeCnt=0;
}
復(fù)制代碼
單片機執(zhí)行的非?,按下P3==0后,timeCnt不知道被加了多少次。
簡單的處理把if(timeCnt==4)改成if(timeCnt>4)先看看效果。
作者:
yzwzfyz
時間:
2022-12-7 15:29
要搞清楚程序為何要這樣寫。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1