r1 = [P_IOA_Data]; // get key data from IOA //r1 = [P_IOB_Data]; // get key data from IOB r1 &= 0x000F; //
r2 = r1; // key from +Vcc r3 = r2 xor 0xffff; // Be a +Vcc mask
// delay here nop; nop; nop;
r1 = [P_IOA_Buffer]; // PortA.7 high(scan line) r1 |= 0x0080; // [P_IOA_Buffer] = r1; //
r1 = [P_IOA_Data]; //
//r1 = [P_IOB_Data]; // get key data from IOB r1 &= 0x000F; //
r1 ^= r2; // possible bits by scan line r1 &= r3; // do +Vcc mask
r1 = r1 lsl 4; // r1 |= r2; // //r2 = r2 lsl 4; //
//r1 |= r2; //
r1 = r1 and 0xFF; // mask bit[0..7] r2 = [R_DebounceReg]; // [R_DebounceReg] = r1; // cmp r2,[R_DebounceReg]; // je L_KS_StableTwoSample_2; //
r1 = C_DebounceCnt; //debounce time setting [R_DebounceCnt] = r1; // retf; //
L_KS_StableTwoSample_2:
r1 = [R_DebounceCnt]; // jz L_KS_StableOverDebounce_2; // retf;
L_KS_StableOverDebounce_2:
[R_DebounceCnt] = r1; // r2 = [R_DebounceReg]; // r1 = [R_KeyBuf]; //
29
[R_KeyBuf] = r2; // r1 = r1 xor 0x00ff; // r1 = r1 and [R_KeyBuf]; // r1 = r1 and 0x00ff; // r1 = r1 or [R_KeyStrobe]; // [R_KeyStrobe] = r1; //save stable key code to R_KeyStrobe retf;
////////////////////////////////////////////////////////////////// // Function: debounce counter down count
////////////////////////////////////////////////////////////////// F_Key_DebounceCnt_Down:
r1 = [R_DebounceCnt]; // Debounce subroutine for F_IO_Key_Scan:
jz L_DebounceCntZero; // stop count if zero r1 -= 0x0001; // [R_DebounceCnt] = r1; // L_DebounceCntZero: // retf; //
//**************************************************************** // Function: Get Keycode for I/O Port // Destory register: r1, r2
//**************************************************************** _SP_GetCh: F_SP_GetCh:
//push BP,BP to [SP]; //BP = SP + 1;
r1 = [R_KeyStrobe]; // Get Key code
r2 = 0x0000; // Clear KeyStrobe for next key [R_KeyStrobe] = r2; // //pop BP,BP from [SP]; retf;
//======================================================================================== // End of key.asm
//====================================================================================
30
相关推荐: