|
|
總是獲取不到相應(yīng)的值,用數(shù)碼管顯示KEY的對(duì)應(yīng)電壓是正常的。
單片機(jī)源程序如下:
void Timer0_isr(void) interrupt 1
{
TL0 = 0xCD; //設(shè)置定時(shí)初始值
TH0 = 0xD4; //設(shè)置定時(shí)初始值
DigDisplay();
s500ms++;
}
void Timer2_isr(void) interrupt 12 //定時(shí)器2中斷入口
{
time_cur++;
if(time_cur == Time1s)
{
time_cur=0;
}
keyadc++;
if(keyadc == 10);
{
keyadc=0;
KeyScan();
AdInit(); //ADC中斷模式
}
}
if(key_value == 4) //reset按鍵
{
CTR = CTRoff;
state_cur = 0;
}
// while(key_value ==4);
//set按鍵檢測(cè)
if(key_value == 1)
//set = 0
{
set_state=0;
setplace=0;
}
void KeyScan()//按鍵掃描函數(shù)放在約10ms周期的環(huán)境運(yùn)行
{
static unsigned char count=0;
static bit sign=0;
temp_keyvol = key_vol*100;//10位ADC,最大值1023
if(key_vol<450)//有鍵按下
{
if(++count>3) //丟掉前3次檢測(cè),第4次檢測(cè)值基本穩(wěn)定
{
// sign=1;
if(temp_keyvol<=50)key_value=1;//set鍵按下
else if(temp_keyvol>240 && temp_keyvol<=270)key_value=2; //K1+鍵按下
else if(temp_keyvol>310 && temp_keyvol<=350)key_value=3; //K2-鍵按下
else if(temp_keyvol>360 && temp_keyvol<=400)key_value=4; //Reset鍵按下
}
}
else //key_vol>=1015表示松手或沒有鍵按下
{
count=0;
sign=0;
key_value=0;
}
}
|
|