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

📄 key.lst

📁 关于凌阳单片机的应用--语音播报电子钟。功能为实时当前的时间。
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	.DEFINE C_D2_LatchAB			0x00C0;			//
                     <      	
                     <      	//... Define for P_LVD_Ctrl ...................
                     <      	.DEFINE C_LVD24V				0x0000;			// LVD = 2.4V 
                     <      	.DEFINE C_LVD28V				0x0001;			// LVD = 2.8V
                     <      	.DEFINE C_LVD32V				0x0002;			// LVD = 3.2V
                     <      	.DEFINE C_LVD36V				0x0003;			// LVD = 3.6V
                     <      	
                     <      	
                     <      	.EXTERNAL	F_SP_Read_INT_Status;			// for further use
                     <      	.EXTERNAL 	F_SP_Write_INT_Status;			// for further use
                     <      	.EXTERNAL  	F_SP_Set_INT_Vector;			// for further use
                     <      	.EXTERNAL	F_SP_Clear_INT_Vector;			// for further use
                     <      	
                     <      	.EXTERNAL	F_SP_Send_Out;					//
                     <      	.EXTERNAL	F_SP_Send_DAC1;					//
                     <      	.EXTERNAL	F_SP_Send_DAC2;					//
                     <      	.EXTERNAL	F_SP_Send_Two_DAC;				//
                     <      	.EXTERNAL	F_SP_Init_HW;					//
                     <      	
                     <      	.EXTERNAL	R_InterruptStatus;
                     <      	
                     <      	
                     <      	.EXTERNAL 	F_SP_RampUpDAC1;
                     <      	.EXTERNAL 	F_SP_RampDnDAC1;
                     <      	.EXTERNAL 	F_SP_RampUpDAC2;
                     <      	.EXTERNAL  	F_SP_RampDnDAC2;
                     <      	
                     <      	.EXTERNAL 	F_SP_InitQueue;
                     <      	.EXTERNAL 	F_SP_ReadQueue;
                     <      	.EXTERNAL 	F_SP_WriteQueue;
                     <      	.EXTERNAL 	F_SP_TestQueue;
                     <      	
                     <      	
                     <      	
                     <      	.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
                     <      	//========================================================================================
                            	
                            	.PUBLIC    _Key_Scan_ServiceLoop;
                            	
                            	.DEFINE C_DebounceCnt	0x0050; //13ms 去抖
                            	.DEFINE C_CONTINUE   	0xB00;  //第二次以后有效
                            	
                            	
                            	.EXTERNAL  _Key
                            	.EXTERNAL  _KeyPressFlag;  //无键按下时清0;有键按下时B0=1;
                            	                             //第二次以后有效B15=1
                            	.EXTERNAL _SleepFlag
                            	
00000335                    	.RAM
00000335 00 00              	.VAR    Key_Buff;           //本次键值暂存单元
00000336 00 00              	.VAR    Key_Debounce;       //计数单元
00000337 00 00              	.VAR    KeyScanLineBuff;
                            	
                            	
000095A4                    	.CODE   
                            	.PUBLIC Key_Scan_Init
                            	Key_Scan_Init: .PROC
000095A4 40 92              	       r1=0x0000
000095A5 19 D3 3A 03        	       [_Key]=r1
000095A7 19 D3 35 03        	       [Key_Buff]=r1
000095A9 19 D3 3B 03        	       [_KeyPressFlag]=r1
000095AB 90 9A              	       retf
                            	      .ENDP
                            	 
                            	_Key_Scan_ServiceLoop: .PROC
000095AC 41 92              	         r1=0x0001;                      // Clear watch dog
000095AD 19 D3 12 70        			 [P_Watchdog_Clear]=r1;
000095AF 12 95 00 70        	         r2=[P_IOA_Data]
000095B1 0A B5 FF 00        	         r2&=0x00ff
000095B3 09 4E              	         jnz F_SomeKeyIsPressed
000095B4 40 92              	         r1=0x0000
000095B5 19 D3 35 03        	         [Key_Buff]=r1      
000095B7 19 D3 3B 03        	         [_KeyPressFlag]=r1    //清0
000095B9 41 92              	         r1=1 
000095BA 19 D3 3D 03        	         [_SleepFlag] = r1   //置睡眠标志
000095BC 90 9A              	         retf
                            	//-----------------------------//
                            	 F_SomeKeyIsPressed:    
000095BD 13 97 3B 03        	         r3=[_KeyPressFlag]    //有键按下  B0=1
000095BF 41 A6              	         r3|=0x0001
000095C0 1B D7 3B 03        	         [_KeyPressFlag]=r3   //置按键标志
                            	             
000095C2 40 96              	         r3=0 
000095C3 1B D7 3D 03        	         [_SleepFlag] = r3      //清睡眠标志
                            	         
000095C5 11 93 35 03        	         r1=[Key_Buff]    //读上次键值
000095C7 1A D5 35 03        	         [Key_Buff]=r2    //暂存本次键值
000095C9 02 43              	         cmp r1,r2
000095CA 08 5E              	         je L_KS_StableTwoSample
000095CB 40 92              	         r1=0x0000
000095CC 19 D3 3A 03        	         [_Key]=r1
000095CE 09 93 50 00        	         r1=C_DebounceCnt    //初始化计数单元
000095D0 19 D3 36 03        	         [Key_Debounce]=r1  
000095D2 90 9A              	         retf
                            	        
                            	   
                            	   L_KS_StableTwoSample:       
000095D3 11 93 36 03        		     r1=[Key_Debounce]
000095D5 04 5E              	         jz L_KS_StableOverDebounce
000095D6 41 22              	         r1-=1              //计数减 1
000095D7 19 D3 36 03        	         [Key_Debounce]=r1    
000095D9 90 9A              	         retf   
                            	         
                            	
                            	L_KS_StableOverDebounce:   //形成键码
000095DA 11 93 35 03        			r1=[Key_Buff]       //暂存值
                            	
000095DC 0B 97 00 80        	        r3=0x8000    //是第一次有效吗?
000095DE 13 C7 3B 03        	        test r3,[_KeyPressFlag]   
000095E0 03 5E              	        jz Key_First_Avail
                            	
000095E1 09 A3 00 80        	        r1|=0x8000       //连续按键有效         ///////////////////////
000095E3 06 EE              	        jmp  Key_Get_Value
                            	        
                            	 Key_First_Avail:    //第一次有效        
000095E4 13 97 3B 03        	       r3=[_KeyPressFlag]    //有键按下  B15=1
000095E6 0B A7 00 80        	       r3|=0x8000
000095E8 1B D7 3B 03        	       [_KeyPressFlag]=r3   
                            	       
                            	 Key_Get_Value:      
000095EA 19 D3 3A 03        	        [_Key]=r1   //存有效键值  
000095EC 09 93 00 0B        	        r1=C_CONTINUE
000095EE 19 D3 36 03        	        [Key_Debounce]=r1
000095F0 90 9A              	        retf
                            	      .ENDP
                            	        
                            	 
0 error(s), 0 warning(s).


⌨️ 快捷键说明

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