⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.asm

📁 该程序是用C编写的
💻 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 + -