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

📄 key.lst

📁 电子词典的设计开发
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	
                     <      	
                     <      	.EXTERNAL	F_SP_Get_ADC
                     <      	
                     <      	.EXTERNAL 	F_SP_Set_P_TimerA_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_TimerA_Data
                     <      	.EXTERNAL 	F_SP_Set_P_TimerB_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_TimerB_Data
                     <      	.EXTERNAL 	F_SP_Set_P_INT_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_INT_Clear
                     <      	.EXTERNAL 	F_SP_Set_P_SystemClock
                     <      	.EXTERNAL 	F_SP_Set_P_DAC_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_ADC_Ctrl
                     <      	
                     <      		
                     <      	
                     <      	//--------------------------------------------
                     <      	SACM_MACRO1: 	.MACRO
                     <      		
                     <      		.ENDM
                     <      	
                     <      	SACM_MACRO2:	.MACRO
                     <      		
                     <      		.ENDM
                     <      	
                     <      	
                     <      	
                     <      	
                     <      	//.define PC_Play_Enable_A2000		1    	// Enable the PC-Play function for SACM-A2000 module
                     <      	//.define PC_Play_Enable_S480		1    	// Enable the PC-Play function for SACM-S480 module
                     <      	//.define PC_Play_Enable_S240		1    	// Enable the PC-Play function for SACM-S240 module    
                     <      	//.define PC_Play_Enable_MS01		1    	// Enable the PC-Play function for SACM-MS01 module
                     <      	
                     <      	
                     <      	
                     <      	//========================================================================================        
                     <      	// End of hardware.inc
                     <      	//========================================================================================
000006C0                    	.IRAM
000006C0 00 00              	.VAR     	I_KeyBuf = 0                 //保存键值
000006C1 00 00              	.VAR		I_Key_Delay = 0               //扫描有键按下的次数
                            	.EXTERNAL 	_KeyFlag                    //有键按下标识符
0000CCF3                    	.CODE	
                            	
                            	//============================================================================================
                            	//函数: F_Key_Scan()
                            	//语法:void F_Key_Scan()
                            	//描述:键盘扫描函数
                            	//参数:无
                            	//返回:无
                            	//=============================================================================================
                            	.PUBLIC F_Key_Scan;
                            	F_Key_Scan: .PROC      
0000CCF3 09 93 F0 00        	    r1 = 0x00F0		                  //扫描键盘
0000CCF5 19 D3 00 70        		[P_IOA_Data] = r1
0000CCF7 4F 92              	    r1 = 0x000f           
0000CCF8 11 B3 00 70        	    r1 &= [P_IOA_Data]
0000CCFA 08 4E              	    JNZ L_Have_Key_Pressed
                            	L_NoKey_Press:                        //无键按下
0000CCFB 40 92              	    r1 = 0 
0000CCFC 19 D3 C0 06        	    [I_KeyBuf] = r1                   //清键盘缓冲区
0000CCFE 19 D3 0A 06        	    [_KeyFlag] = r1
0000CD00 19 D3 C1 06        	    [I_Key_Delay]=r1;
0000CD02 90 9A              	    RETF
                            	L_Have_Key_Pressed:                  //有键按下处理         
0000CD03 40 F0 08 CD        	    CALL   F_Key_Scaning             //行扫描确定键
0000CD05 40 F0 2D CD        	    CALL   Enter_Key;                //确认有键按下
0000CD07 90 9A              	    RETF       
                            	    .ENDP
                            	//============================================================================================
                            	//函数: unsigned F_Key_Scaning()
                            	//语法:void unsigned F_Key_Scaning()
                            	//描述:行扫描函数
                            	//参数:无
                            	//返回:扫描键值
                            	//=============================================================================================
                            	.PUBLIC	 F_Key_Scaning;	   
                            	F_Key_Scaning:
                            	F_Key_Scan_B7:   	    
0000CD08 0A 95 80 00        	    r2=0x0080                        //扫描第一行//changed by abin 扫描第四列
0000CD0A 1A D5 00 70        		[P_IOA_Data] = r2  
0000CD0C 4F 92              		r1 = 0x000f	    	   
0000CD0D 11 B3 00 70        	    r1& =[P_IOA_Data]
0000CD0F 40 42              		CMP r1,0x0000                    //是否该行有键按下
0000CD10 1A 4E              	    JNZ  F_Key_Pressed   	        
                            	F_Key_Scan_B6:
0000CD11 0A 95 40 00        	    r2=0x0040                        //扫描第二行
0000CD13 1A D5 00 70        		[P_IOA_Data] = r2
0000CD15 4F 92              		r1 = 0x000f	    	   
0000CD16 11 B3 00 70        	    r1& =[P_IOA_Data]
0000CD18 40 42              		CMP r1,0x0000                   //是否该行有键按下
0000CD19 11 4E              	    JNZ  F_Key_Pressed   
                            	F_Key_Scan_B5:           
0000CD1A 60 94              	    r2=0x0020                       //扫描第三行
0000CD1B 1A D5 00 70        		[P_IOA_Data] = r2
0000CD1D 4F 92              		r1 = 0x000f	    	   
0000CD1E 11 B3 00 70        	    r1& =[P_IOA_Data] 
0000CD20 40 42              		CMP r1,0x0000                   //是否该行有键按下
0000CD21 09 4E              	    JNZ  F_Key_Pressed   
                            	F_Key_Scan_B4:
0000CD22 50 94              		r2=0x0010                       //扫描第四行
0000CD23 1A D5 00 70        		[P_IOA_Data] = r2
0000CD25 4F 92              		r1 = 0x000f	    	   
0000CD26 11 B3 00 70        	    r1& =[P_IOA_Data]
0000CD28 40 42              		CMP r1,0x0000                  //是否该行有键按下
0000CD29 01 4E              	    JNZ  F_Key_Pressed   
0000CD2A 90 9A              		RETF		
                            	F_Key_Pressed:	
0000CD2B 01 A5              	    r2|=r1                         //r2--B11~B8:输出   r1--B0~B7,输入
0000CD2C 90 9A              	    RETF
                            	
                            	//============================================================================================
                            	//函数: Enter_Key()
                            	//语法:Enter_Key()
                            	//描述:确定有键按下函数
                            	//参数:无
                            	//返回:无
                            	//============================================================================================
                            	Enter_Key:
                            	Scan_first:
0000CD2D 13 97 C1 06        	    r3 = [I_Key_Delay]
0000CD2F 40 46              	    CMP r3,0x0000
0000CD30 06 4E              	    JNZ L_Scan_many;
0000CD31 1A D5 C0 06        	    [I_KeyBuf] = r2;
0000CD33 41 06              	    r3 += 1;
0000CD34 1B D7 C1 06        	    [I_Key_Delay] = r3;
0000CD36 90 9A              	    RETF;
                            	L_Scan_many:                         //去抖
0000CD37 11 93 C0 06        	    r1 = [I_KeyBuf]        
0000CD39 02 43              	    CMP r1,r2
0000CD3A 0F 4E              	    JNE L_Error_Key_pro;
0000CD3B 13 97 C1 06        	    r3 = [I_Key_Delay]
0000CD3D 41 06              	    r3 += 1;
0000CD3E 1B D7 C1 06        	    [I_Key_Delay] = r3;		
0000CD40 50 46              		CMP		r3, 0x0010;         
0000CD41 01 5E              		JE		L_Enter_Have_KeyDown;
0000CD42 90 9A              		RETF;
                            	L_Enter_Have_KeyDown:
0000CD43 41 92              		r1 = 1;
0000CD44 19 D3 0A 06        	    [_KeyFlag] = r1	
0000CD46 40 96              	    r3 = 0;
0000CD47 1B D7 C1 06        	    [I_Key_Delay]=r3	
0000CD49 90 9A              	    RETF
                            	L_Error_Key_pro:
0000CD4A 40 96              	    r3 = 0;
0000CD4B 1B D7 C1 06        	    [I_Key_Delay]=r3
0000CD4D 1B D7 C0 06        		[I_KeyBuf] = r3
0000CD4F 90 9A              		RETF;
                            		    
                            	//============================================================================================
                            	//函数: unsigned F_Get_Key()
                            	//语法:unsigned F_Get_Key()
                            	//描述:取键值函数
                            	//参数:无
                            	//返回:键值
                            	//============================================================================================
                            	.PUBLIC		_F_Get_Key;       
                            	_F_Get_Key:    .PROC
0000CD50 40 96              	    r3 = 0
0000CD51 12 95 C0 06        	    r2 = [I_KeyBuf]
                            	L_Key_value_Loop:
0000CD53 0B 09 62 CD        	    r4 = r3 + Key_Table
0000CD55 C4 92              	    r1 = [r4]
0000CD56 02 43              	    CMP r1,r2
0000CD57 04 5E              	    JE L_KeyCode_Return
0000CD58 41 06              	    r3 += 1
0000CD59 50 46              	    CMP r3,16
0000CD5A 48 8E              	    JBE L_Key_value_Loop
0000CD5B 40 96              	    r3=0
                            	L_KeyCode_Return:
0000CD5C 40 92              	    r1 = 0;
0000CD5D 19 D3 C0 06        	    [I_KeyBuf] = r1; 
0000CD5F 0B 03 01 00        	    r1=r3+1     
0000CD61 90 9A              	    RETF                             //清键盘缓冲区
                            	    .ENDP    
                            	 
                            	            
                            	 Key_Table:
0000CD62 14 00 24 00        	    .DW 0x0014,0x0024,0x0044,0x0012
         44 00 12 00
0000CD66 22 00 42 00        	    .DW 0x0022,0x0042,0x0011,0x0021
         11 00 21 00
0000CD6A 41 00 28 00        	    .DW 0x0041,0x0028,0x0018,0x0048
         18 00 48 00
0000CD6E 81 00 82 00        	    .DW 0x0081,0x0082,0x0084,0x0088      
         84 00 88 00
                            	
                            	  
                            	  
0 error(s), 0 warning(s).



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -