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

📄 key.lst

📁 该程序是用C编写的
💻 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
                     <      	//========================================================================================
00000000                    	.data
00000000 EE 00 DE 00        	Table_key: .dw 0xee,0xde,0xbe,0x7e
         BE 00 7E 00
00000004 ED 00 DD 00        	           .dw 0xed,0xdd,0xbd,0x7d
         BD 00 7D 00
00000008 EB 00 DB 00        	           .dw 0xeb,0xdb,0xbb,0x7b
         BB 00 7B 00
0000000C E7 00 D7 00        	           .dw 0xe7,0xd7,0xb7,0x77
         B7 00 77 00
00000010 3F 00 06 00        	Table_led: .dw 0x03f,0x006,0x05b,0x04f,0x066,0x06d,0x07d,0x007,0x07f,0x06f
         5B 00 4F 00
         66 00 6D 00
         7D 00 07 00
         7F 00 6F 00
0000001A 3F 01 06 01        	           .dw 0x13f,0x106,0x15b,0x14f,0x166,0x16d,0x17d,0x107,0x17f,0x16f
         5B 01 4F 01
         66 01 6D 01
         7D 01 07 01
         7F 01 6F 01
00000024 3F 02 06 02        	           .dw 0x23f,0x206,0x25b,0x24f,0x266,0x26d,0x27d,0x207,0x27f,0x26f
         5B 02 4F 02
         66 02 6D 02
         7D 02 07 02
         7F 02 6F 02
0000002E BF 03 86 03        	           .dw 0x3bf,0x386,0x3db,0x3cf,0x3e6,0x3ed,0x3fd,0x387,0x3ff,0x3ef
         DB 03 CF 03
         E6 03 ED 03
         FD 03 87 03
         FF 03 EF 03
                            	           
00000038 3F 04 06 04        	           .dw 0x43f,0x406,0x45b,0x44f,0x466,0x46d,0x47d,0x407,0x47f,0x46f
         5B 04 4F 04
         66 04 6D 04
         7D 04 07 04
         7F 04 6F 04
00000042 BF 05 86 05        	           .dw 0x5bf,0x586,0x5db,0x5cf,0x5e6,0x5ed,0x5fd,0x587,0x5ff,0x5ef
         DB 05 CF 05
         E6 05 ED 05
         FD 05 87 05
         FF 05 EF 05
                            	           
0000004C 3F 06 06 06        	           .dw 0x63f,0x606,0x65b,0x64f,0x666,0x66d,0x67d,0x607,0x67f,0x66f
         5B 06 4F 06
         66 06 6D 06
         7D 06 07 06
         7F 06 6F 06
00000056 3F 07 06 07        	           .dw 0x73f,0x706,0x75b,0x74f,0x766,0x76d,0x77d,0x707,0x77f,0x76f
         5B 07 4F 07
         66 07 6D 07
         7D 07 07 07
         7F 07 6F 07
00000000                    	.code
                            	.public _key
                            	_key:
                            	L_key_init:                            //初始化A,B
00000000 4F 92              	    R1 = 0x0f;      
00000001 19 D3 03 70        	    [P_IOA_Attrib] = R1;    
00000003 19 D3 02 70        	    [P_IOA_Dir] = R1;
00000005 09 93 F0 00        	    r1=0xf0;
00000007 19 D3 00 70        	    [P_IOA_Data] = R1;
                            	F_Key_Scan_A4:   	    
00000009 4E 94              	    R2=0x0e;                        //扫描第一行
0000000A 1A D5 00 70        		[P_IOA_Data] = R2 ; 
0000000C 09 93 F0 00        		R1 = 0xf0;    	   
0000000E 11 B3 00 70        	    R1& =[P_IOA_Data];
00000010 09 43 F0 00        		CMP R1,0xf0;                    //是否该行有键按下
00000012 1F 4E              	    JNZ   L_make_sure;  	        
                            	F_Key_Scan_A5:
00000013 4D 94              	    R2=0x0d;                        //扫描第二行
00000014 1A D5 00 70        		[P_IOA_Data] = R2;
00000016 09 93 F0 00        		R1 = 0xf0;	    	   
00000018 11 B3 00 70        	    R1& =[P_IOA_Data];
0000001A 09 43 F0 00        		CMP R1,0xf0;                   //是否该行有键按下
0000001C 15 4E              	    JNZ   L_make_sure;   
                            	F_Key_Scan_A6:           
0000001D 4B 94              	    R2=0x0b;                       //扫描第三行
0000001E 1A D5 00 70        		[P_IOA_Data] = R2;
00000020 09 93 F0 00        		R1 = 0xf0;	    	   
00000022 11 B3 00 70        	    R1& =[P_IOA_Data]; 
00000024 09 43 F0 00        		CMP R1,0xf0;                   //是否该行有键按下
00000026 0B 4E              	    JNZ   L_make_sure;   
                            	F_Key_Scan_A7:
00000027 47 94              		R2=0x07;                       //扫描第四行
00000028 1A D5 00 70        		[P_IOA_Data] = R2;
0000002A 09 93 F0 00        		R1 = 0xf0;	    	   
0000002C 11 B3 00 70        	    R1& =[P_IOA_Data];
0000002E 09 43 F0 00        		CMP R1,0xf0;                  //是否该行有键按下
00000030 01 4E              	    JNZ  L_make_sure;
00000031 69 EE              	    jmp F_Key_Scan_A4;
                            	
                            	
                            	L_make_sure:                          // 去抖
00000032 01 97              	     r3=r1;
00000033 1A D5 00 70        	     [P_IOA_Data] = R2;
00000035 09 93 F0 00        	     R1 = 0xf0;	    	   
00000037 11 B3 00 70        	     R1& =[P_IOA_Data];
00000039 03 43              	     cmp r1,r3;
0000003A 72 4E              	     jne F_Key_Scan_A4
0000003B 41 08              	     r4+=1;
0000003C 42 48              	     cmp r4,2;
0000003D 4C 4E              	     jne  L_make_sure;    
0000003E 40 98              	     r4=0x00; 
                            	     
0000003F 0D 9B 00 00        	     bp=Table_key; 
00000041 02 A3              	     r1=r1|r2;   
                            	L_key:                         //查表        
00000042 D5 94              	    r2=[bp++];
00000043 02 43              	    cmp r1,r2
                            	//    je L_out
00000044 41 08              	    r4+=1;
00000045 44 EE              	    jmp L_key
                            	//L_out:
                            	 //   R1 = 0xff;      
                            	 //   [P_IOB_Attrib] = R1; 
                            	  //  [P_IOB_Dir] = R1;
                            	  //  [P_IOB_Data] = R1;                      //输出初始
00000046 0D 9B 10 00        	    bp=Table_led;
00000048 40 94              	    r2=0x00;
                            	L_find:
00000049 04 45              	    cmp r2,r4
0000004A 03 5E              	    je L_out1
0000004B 41 0A              	    bp+=1;
0000004C 41 04              	    r2+=1;
                            	    
0000004D 45 EE              	    jmp L_find
                            	L_out1:    
0000004E C5 94              	    r2=[bp]; 
0000004F 1A D5 05 70        	    [P_IOB_Data]=r2;
                            	
                            	  
                            	
                            	.PUBLIC _IRQ3, _IRQ5;
                            	.EXTERNAL	_TimeCount;        // 触发计时
                            	.EXTERNAL   Per500msSet        //2Hz中断,每次500ms时钟
                            	.EXTERNAL   _TimeChangeCount;  //计时
00000000                    	.text
                            	_IRQ3: 
00000000 A8 DA              		push r1,r5 to [sp]
00000001 09 93 80 03        		r1 = 0x0380;           //按键唤醒0000,0011,1000,0000
00000003 19 D3 11 70        	    [P_INT_Clear] = r1;
00000005 A8 90              		pop	r1,r5 from [sp];
00000006 98 9A              		reti;
                            		
                            	
                            	//--------2Hz中断------//
                            	_IRQ5: 
00000007 A8 DA              		push r1,r5 to [sp]
00000008 48 92              		r1 = 0x0008;          //0000,0000,0000,1000
                            	L_IRQ5_2Hz:
00000009 09 93 FF FF        		r1 = 0xFFFF;          //万年历时间
0000000B 19 D3 00 00        	    [Per500msSet] = r1;
0000000D 11 93 00 00        	    r1 = [_TimeCount];    //计时
0000000F 41 02              		r1 += 1;
00000010 19 D3 00 00        		[_TimeCount] = r1;
00000012 44 92              	    r1=0x0004				//0000,0000,0000,0100
00000013 19 D3 11 70        	    [P_INT_Clear] = r1;
00000015 A8 90              		pop	r1,r5 from [sp];
00000016 98 9A              		reti
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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