本帖最后由 liaolinhui 于 2014-8-16 12:20 編輯
覺得你這程序很不合邏輯
#include <reg52.h>
#include <stdio.h>
sbit L4 = P1^4;
void DELAY();
void main()
{
unsigned char k;
unsigned char k_temp;
k = P1; //這里你讓k=P1,
if (k == 0xFE)
{
DELAY();
k_temp = P1;//這里你又讓k_temp=P1
if(k_temp == k)//所以這里你是想通過延時一段時間后判斷按鍵是否松開,對吧,但是單片機執行指令是很快的,延時完了你沒及時松開,程序就直接判斷k_temo==k,所以執行L4=0,而如果你延時程序沒延時完及時松開了,那么程序就判斷k_temp不等于k,而執行L4=1,
{
//P2 = 0xFE;
L4 = 0;
}
else
{
L4 = 1;
}
}
}
void DELAY()
{
int i,j;
for (i = 0;i < 1000;i++)
{
for (j = 0;j < 10;j++);
}
} |