📄 key.asm
字号:
//a口输入,b口输出
.include hardware.inc
.data
Table_key: .dw 0xee,0xde,0xbe,0x7e
.dw 0xed,0xdd,0xbd,0x7d
.dw 0xeb,0xdb,0xbb,0x7b
.dw 0xe7,0xd7,0xb7,0x77
Table_led: .dw 0x03f,0x006,0x05b,0x04f,0x066,0x06d,0x07d,0x007,0x07f,0x06f
.dw 0x13f,0x106,0x15b,0x14f,0x166,0x16d,0x17d,0x107,0x17f,0x16f
.dw 0x23f,0x206,0x25b,0x24f,0x266,0x26d,0x27d,0x207,0x27f,0x26f
.dw 0x3bf,0x386,0x3db,0x3cf,0x3e6,0x3ed,0x3fd,0x387,0x3ff,0x3ef
.dw 0x43f,0x406,0x45b,0x44f,0x466,0x46d,0x47d,0x407,0x47f,0x46f
.dw 0x5bf,0x586,0x5db,0x5cf,0x5e6,0x5ed,0x5fd,0x587,0x5ff,0x5ef
.dw 0x63f,0x606,0x65b,0x64f,0x666,0x66d,0x67d,0x607,0x67f,0x66f
.dw 0x73f,0x706,0x75b,0x74f,0x766,0x76d,0x77d,0x707,0x77f,0x76f
.ram
.var minsec
.var mondayhour
.var year
.code
.public _key
_key:
L_key_init: //初始化A,B
R1 = 0x0f;
[P_IOA_Attrib] = R1;
[P_IOA_Dir] = R1;
r1=0xf0;
[P_IOA_Data] = R1;
F_Key_Scan_A4:
R2=0x0e; //扫描第一行
[P_IOA_Data] = R2 ;
R1 = 0xf0;
R1& =[P_IOA_Data];
CMP R1,0xf0; //是否该行有键按下
JNZ L_make_sure;
F_Key_Scan_A5:
R2=0x0d; //扫描第二行
[P_IOA_Data] = R2;
R1 = 0xf0;
R1& =[P_IOA_Data];
CMP R1,0xf0; //是否该行有键按下
JNZ L_make_sure;
F_Key_Scan_A6:
R2=0x0b; //扫描第三行
[P_IOA_Data] = R2;
R1 = 0xf0;
R1& =[P_IOA_Data];
CMP R1,0xf0; //是否该行有键按下
JNZ L_make_sure;
F_Key_Scan_A7:
R2=0x07; //扫描第四行
[P_IOA_Data] = R2;
R1 = 0xf0;
R1& =[P_IOA_Data];
CMP R1,0xf0; //是否该行有键按下
JNZ L_make_sure;
jmp F_Key_Scan_A4;
L_make_sure: // 去抖
r3=r1;
[P_IOA_Data] = R2;
R1 = 0xf0;
R1& =[P_IOA_Data];
cmp r1,r3;
jne F_Key_Scan_A4
r4+=1;
cmp r4,2;
jne L_make_sure;
r4=0x00;
bp=Table_key;
// r1=r1|r2;
L_key: //查表
r2=[bp++];
cmp r1,r2
je L_out
r4+=1;
jmp L_key
// bp=Table_led;
// r2=0x00;
//L_find:
// cmp r2,r4
// je L_out1
// bp+=1;
// r2+=1;
// jmp L_find
//L_out1:
// r2=[bp];
// [P_IOB_Data]=r2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -