|
/********************獲取按鍵函數(shù)**********************/
unsigned char Get_keynum(void)
{
unsigned char temp;
temp=key_num;
key_num=0;
return temp;
}
unsigned char key_Getnum(void)
{
unsigned keynum=0;
if(K1==0){keynum=1;}
return keynum;
}
void key_scan(void)
{
static unsigned lastkey,nowkey;
lastkey=nowkey;
nowkey=key_Getnum();
if(lastkey==1 && nowkey==0)
{
key_num=1;
}
}/****************************配置定時器0********************************/
void Timer0_Init(void)
{
PCON1 = C_TMR0_Dis;
//1ms
//TMRH = 0X30;
TMR0 = 5; //計算頻率16M/2/2=4M=4000000HZ=4us 4us*(255-5)=1000us
T0MD = C_PS0_TMR0 | C_PS0_Div2;
INTE = C_INT_TMR0;
PCON1 = C_TMR0_En;
}
#endif
/***************************中斷************************************/
void isr(void) __interrupt(0)
{
if(INTFbits.PBIF)
{
INTFbits.PBIF = 0; // Clear PBIF(PortB input change interrupt flag bit)
INTF= (unsigned char)~(C_INT_PBKey);// Clear PBIF(PortB input change interrupt flag bit)
}
if(INTFbits.T0IF)
{
tim++;
if(tim>=25)
{
key_scan();
tim=0;
}
INTF= (unsigned char)~(C_INT_TMR0); // Clear T0IF flag bit
}
}
/***************************主函數(shù)************************************/
void main(void)
{
GPIO_INIT();
DISI();
Timer0_Init();
//Timer1_Init();
ENI();
//KEY1_INIT();
while(1)
{
CLRWDT();
key=Get_keynum();
if(key==1)
{
num++;
if(num>=10)
{
num=0;
}
}
if(num=1){}
if(num=2){}
...
}
}
}
|
評分
-
查看全部評分
|