九齐单片机定时器扫描按键程序单片机解密
| 单片机解密/********************获取按键函数**********************/ 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 } } /***************************主函数************************************/ 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){} ... } } } |

芯片解密