6/21/2012

Key scan updata


8bit寫到32bit又回到8bit
好久沒用的key scan
這次又拿出來用了
做了些修正



#define Key_port P3
#define Mark_Key 0xFF  
#define DebounceReg 20
#define b_Pressed 0x02
#define b_Release 0x04

char Get_Key(void);
char Get_KeyStatus(void);
void Key_Severs(void);

char Debounce_cnt;    
unsigned char Key_status;  
unsigned char Key_buffer;
unsigned char First_key;
unsigned char Sec_key;
void Key_init(void)
{
Debounce_cnt = 0;
Key_status = 0;
Key_buffer = 0;
First_key = 0;
Sec_key = 0;
}
 
void Key_sever(void)
{
char Key_temp;

if(Debounce_cnt)  
{
Debounce_cnt--;
return;
}

Key_temp = Key_port & Mark_Key;

if(Key_temp ^ First_key)  
{
First_key = Key_temp;
Debounce_cnt = DebounceReg;
return;
}

if(First_key ^ Sec_key)
{
if(First_key)
{
Key_status = b_Pressed;  
Key_buffer = First_key;     
}
else
Key_status = b_Release; 
 
Sec_key = First_key;
}
else
Key_status = 0;
}


char Get_KeyStatus(void)
{
return Key_status;
}

char Get_Key(void)
{
return Key_buffer;
}

沒有留言: