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

📄 1.lst

📁 该程序是用C编写的
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	.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
                     <      	//========================================================================================
                            	.EXTERNAL _Hour;
                            	.EXTERNAL _Min;
                            	.EXTERNAL _Sec;
                            	.EXTERNAL _Flag;
                            	.EXTERNAL _stoptag;
                            	.EXTERNAL _year;
                            	.EXTERNAL _month;
                            	.EXTERNAL _day;
                            	.EXTERNAL _i3;
                            	.EXTERNAL _i5;
                            	.EXTERNAL _keycode
00008725                    	.data
00008725 EE 00 DE 00        	keytable:.dw 0x00ee,0x00de,0x00be,0x007e
         BE 00 7E 00
00008729 ED 00 DD 00        	         .dw 0x00ed,0x00dd,0x00bd,0x007d
         BD 00 7D 00
0000872D EB 00 DB 00        	         .dw 0x00eb,0x00db,0x00bb,0x007b
         BB 00 7B 00
00008731 E7 00 D7 00        	         .dw 0x00e7,0x00d7,0x00b7,0x0077
         B7 00 77 00
                            	.PUBLIC _SystemInit
000086EA                    	.code
                            	_SystemInit:
000086EA 09 93 FF 07        	     r1=0x07ff;           //IOB初始化
000086EC 19 D3 07 70        	     [P_IOB_Dir]=r1;
000086EE 19 D3 08 70        	     [P_IOB_Attrib]=r1;
000086F0 19 D3 05 70        	     [P_IOB_Data]=r1;
                            	     
000086F2 4F 92              	     R1 = 0x000f;         //IOA初始化
000086F3 19 D3 03 70        	     [P_IOA_Attrib] = R1;    
000086F5 19 D3 02 70        	     [P_IOA_Dir] = R1;
000086F7 09 93 F0 00        	     r1=0x00f0;
000086F9 19 D3 00 70        	     [P_IOA_Data] = R1;
                            	     
000086FB 40 F1              	     int off 
000086FC 09 93 84 00        	     r1=0x0084;          //开IRQ5的2HZ.IRQ3的中断
000086FE 19 D3 10 70        	     [P_INT_Ctrl]=r1;
00008700 49 F1              	     IRQ ON;
00008701 98 9A              	     RETI;
00008009                    	.text
                            	  .PUBLIC _IRQ5
                            	 _IRQ5:
00008009 A8 DA              	     PUSH R1,R5 TO [SP]     //现场保护
0000800A 41 92              	     R1=0x0001;              //清看门狗
0000800B 19 D3 12 70        	     [P_Watchdog_Clear]=R1;
0000800D 48 92              	     R1=0x0008;              //屏蔽4HZ中断
0000800E 11 C3 10 70        	     TEST r1,[P_INT_Ctrl];
00008010 13 4E              	     JNZ L_IRQ5_4HZ;
                            	 L_IRQ5_2HZ:
00008011 44 92              	   r1=0x0004
00008012 19 D3 11 70        	   [P_INT_Clear]=r1
00008014 11 93 17 00        	   r1=[_Flag]
00008016 40 42              	   cmp r1,0
00008017 05 5E              	   je loop
00008018 40 92              	   r1=0
00008019 19 D3 17 00        	   [_Flag]=r1
0000801B A8 90              	   pop r1,r5 from [sp]
0000801C 98 9A              	   reti
                            	 loop:
0000801D 41 92              	   r1=1
0000801E 19 D3 14 00        	   [_i5]=r1
00008020 19 D3 17 00        	   [_Flag]=r1
00008022 A8 90              	     pop r1,r5 from [sp]
00008023 98 9A              	     reti
                            	L_IRQ5_4HZ:
00008024 19 D3 11 70        	   [P_INT_Clear]=r1;
00008026 A8 90              	     POP R1,R5 FROM [SP];
00008027 98 9A              	     RETI;
                            	     
                            	.public _IRQ3
                            	  _IRQ3:
00008028 41 94              	      r2=0x0001
00008029 1A D5 12 70        	      [P_Watchdog_Clear]=r2;
0000802B A0 D8              	    push r1,r4 to [sp]
0000802C 09 93 00 01        	      r1=0x0100
0000802E 11 C3 10 70        	      test r1,[P_INT_Ctrl]
00008030 13 4E              	      jnz L_IRQ3_Ext1
00008031 09 93 00 02        	      r1=0x0200
00008033 11 C3 10 70        	      test r1,[P_INT_Ctrl]
00008035 0B 4E              	      jnz L_IRQ3_Ext2
00008036 09 93 80 00        	    r1=0x0080; 
00008038 19 D3 11 70        	   [P_INT_Clear]=r1              
0000803A 40 F0 47 80        	   call Key_scan
0000803C 41 92              	     R1=0x0001;              //清看门狗
0000803D 19 D3 12 70        	     [P_Watchdog_Clear]=R1;
0000803F A0 90              	   POP R1,R4 FROM [SP];
00008040 98 9A              	   RETI;
                            	     
                            	L_IRQ3_Ext2:
00008041 19 D3 11 70        	      [P_INT_Clear]=r1
00008043 98 9A              	      reti
                            	L_IRQ3_Ext1:
00008044 19 D3 11 70        	      [P_INT_Clear]=r1
00008046 98 9A              	      reti 
                            	       
                            	.PUBLIC  Key_scan
                            	Key_scan:.proc
                            	  // r1=0x0080;      
                            	 //  [P_INT_Clear]=r1;
                            	  
                            	F_Key_Scan_A4: 
00008047 40 98              	     r4=0x0000;  	    
00008048 4E 94              	    R2=0x000e;                        //扫描第一行
00008049 1A D5 00 70        		[P_IOA_Data] = R2 ; 
0000804B 09 93 F0 00        		R1 = 0x00f0;    	   
0000804D 11 B3 00 70        	    R1& =[P_IOA_Data];
0000804F 09 43 F0 00        		CMP R1,0x00f0;                    //是否该行有键按下
00008051 26 4E              	    JNZ   L_make_sure;  	        
                            	F_Key_Scan_A5:
00008052 4D 94              	    R2=0x000d;                        //扫描第二行
00008053 1A D5 00 70        		[P_IOA_Data] = R2;
00008055 09 93 F0 00        		R1 = 0x00f0;	    	   
00008057 11 B3 00 70        	    R1& =[P_IOA_Data];
00008059 09 43 F0 00        		CMP R1,0x00f0;                   //是否该行有键按下
0000805B 1C 4E              	    JNZ   L_make_sure;   
                            	F_Key_Scan_A6:           
0000805C 4B 94              	    R2=0x000b;                       //扫描第三行
0000805D 1A D5 00 70        		[P_IOA_Data] = R2;
0000805F 09 93 F0 00        		R1 = 0x00f0;	    	   
00008061 11 B3 00 70        	    R1& =[P_IOA_Data]; 
00008063 09 43 F0 00        		CMP R1,0x00f0;                   //是否该行有键按下
00008065 12 4E              	    JNZ   L_make_sure;   
                            	F_Key_Scan_A7:
00008066 47 94              		R2=0x0007;                       //扫描第四行
00008067 1A D5 00 70        		[P_IOA_Data] = R2;
00008069 09 93 F0 00        		R1 = 0x00f0;	    	   
0000806B 11 B3 00 70        	    R1& =[P_IOA_Data];
0000806D 09 43 F0 00        		CMP R1,0x00f0;                  //是否该行有键按下
0000806F 08 4E              	    JnZ  L_make_sure;
                            	
00008070 41 92              	    R1=0x0001;              //清看门狗
00008071 19 D3 12 70        	    [P_Watchdog_Clear]=R1;
00008073 09 93 F0 00        	    r1=0x00f0
00008075 19 D3 00 70        	    [P_IOA_Data]=r1
00008077 90 9A              	    RETF
                            	    
                            	L_make_sure:                          // 去抖
00008078 01 97              	     r3=r1;
00008079 1A D5 00 70        	     [P_IOA_Data] = R2;
0000807B 09 93 F0 00        	     R1 = 0x00f0;	    	   
0000807D 11 B3 00 70        	     R1& =[P_IOA_Data];
0000807F 03 43              	     cmp r1,r3;
00008080 7A 4E              	     jne F_Key_Scan_A4
00008081 41 08              	    r4+=1;
00008082 0C 49 84 03        	     cmp r4,900;
00008084 4D 4E              	    jne  L_make_sure;
00008085 40 98              	     r4=0x0000; 
00008086 02 A3              	     r1=r1|r2 ;
                            	     
                            	     
00008087 0D 9B 25 87        	     bp=keytable
00008089 40 94              	     r2=0
                            	   getkeycodeloop:  
0000808A 41 04              	     r2+=1
0000808B D5 96              	     r3=[bp++]
0000808C 03 43              	     cmp r1,r3
0000808D 44 4E              	     jne getkeycodeloop;
0000808E 1A D5 16 00        	    [_keycode]=r2
00008090 41 94              	    r2=1
00008091 1A D5 15 00        	    [_i3]=r2     
                            	   
00008093 09 93 F0 00        	    r1=0x00f0
00008095 19 D3 00 70        	     [P_IOA_Data]=r1
                            	
00008097 90 9A              	     RETF
                            	 .endp     
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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