hardware.lst

来自「悬挂绘图系统(2005年全国电子设计大赛题目)基于凌阳单片机」· LST 代码 · 共 659 行 · 第 1/3 页

LST
659
字号
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00      
000003D4 00 00              	.VAR	R_ReadIndex;
000003D5 00 00              	.VAR	R_WriteIndex;
                            	
0000B10A                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
0000B10A 1C D9 16 70        	       [P_PWM] = r4;						//
0000B10C 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
0000B10D 1C D9 17 70        			[P_DAC1] = r4;						//
0000B10F 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
0000B110 1C D9 16 70        			[P_DAC2] = r4;						//
0000B112 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
0000B113 1C D9 17 70        			[P_DAC1] = r4;						//
0000B115 1C D9 16 70        			[P_DAC2] = r4;						//
0000B117 90 9A              			retf;
                            	
                            	//.DEFINE	F_SP_Send_Out  F_SP_Send_PWM;
                            	//.DEFINE	F_SP_Send_Out  F_SP_Send_DAC1;
                            	//.DEFINE	F_SP_Send_Out  F_SP_Send_DAC2;
                            	.DEFINE	F_SP_Send_Out  F_SP_Send_Two_DAC;		// Send to both DAC1 and DAC2
                            	
                            	
                            	F_SP_Get_ADC:
0000B118 14 99 14 70        			R4 = [P_ADC]
0000B11A 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
0000B11B 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
0000B11D 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
0000B11E 19 D3 0A 70        		[P_TimerA_Data] = R1
0000B120 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
0000B121 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
0000B123 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
0000B124 19 D3 0C 70        		[P_TimerB_Data] = R1
0000B126 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
0000B127 19 D3 10 70        		[P_INT_Ctrl] = R1
0000B129 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
0000B12A 19 D3 11 70        		[P_INT_Clear] = R1
0000B12C 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
0000B12D 19 D3 13 70        		[P_SystemClock] = R1
0000B12F 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
0000B130 19 D3 2A 70        		[P_DAC_Ctrl] = R1
0000B132 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
0000B133 19 D3 15 70        		[P_ADC_Ctrl] = R1
0000B135 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
0000B136 19 D3 A0 03        	        [R_InterruptStatus] = R1;       	//
0000B138 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
0000B139 11 93 A0 03        	        R1 = [R_InterruptStatus];       	//
0000B13B 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
0000B13C 88 DA              			PUSH BP,BP TO [SP];
0000B13D 08 0B 01 00        	        BP = SP + 1;
0000B13F 88 D2              			PUSH R1,R1 TO [SP];
0000B140 03 92              			R1 = [BP+3];						// Port direction
0000B141 19 D3 02 70        			[P_IOA_Dir] = R1;
0000B143 04 92              			R1 = [BP+4];
0000B144 19 D3 00 70        			[P_IOA_Data] = R1;
0000B146 05 92              			R1 = [BP+5];
0000B147 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
0000B149 88 90              			POP R1,R1 FROM [SP];
0000B14A 88 98              	        POP BP,BP FROM [SP];
0000B14B 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
0000B14C 88 DA              			PUSH BP,BP TO [SP];
0000B14D 08 0B 01 00        	        BP = SP + 1;
0000B14F 88 D2              			PUSH R1,R1 TO [SP];
0000B150 03 92              			R1 = [BP+3];						// Port direction
0000B151 19 D3 07 70        			[P_IOB_Dir] = R1;
0000B153 04 92              			R1 = [BP+4];
0000B154 19 D3 05 70        			[P_IOB_Data] = R1;
0000B156 05 92              			R1 = [BP+5];
0000B157 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
0000B159 88 90              			POP R1,R1 FROM [SP];
0000B15A 88 98              	        POP BP,BP FROM [SP];
0000B15B 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
0000B15C 88 DA              	        PUSH BP,BP TO [SP];
0000B15D 08 0B 01 00        	        BP = SP + 1;
0000B15F 90 D4              			PUSH R1,R2 TO [SP];
0000B160 03 92              			R1 = [BP+3]; 						// Port Number
0000B161 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
0000B162 C1 92              			R1 = [R1] ;
0000B163 C2 D2              			[R2] = R1 ;
0000B164 90 90              			POP R1,R2 FROM [SP];
0000B165 88 98              	        POP BP,BP FROM [SP];
0000B166 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
0000B167 88 DA              	        PUSH BP,BP TO [SP];
0000B168 08 0B 01 00        	        BP = SP + 1;
0000B16A 90 D4              			PUSH R1,R2 TO [SP];
0000B16B 03 92              			R1 = [BP+3]; 						// Port Number
0000B16C 04 94              			R2 = [BP+4]; 						// Value
0000B16D C1 D4              			[R1] = R2 ;
0000B16E 90 90              			POP R1,R2 FROM [SP];
0000B16F 88 98              	        POP BP,BP FROM [SP];
0000B170 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
0000B171 90 D4              	                push r1,r2 to [sp];
0000B172 11 93 17 70        	                r1=[P_DAC1];
0000B174 09 B3 C0 FF        	                r1 &= ~0x003f;
0000B176 09 43 00 80        	                cmp     r1,0x8000
0000B178 0E 0E              	                jb     	L_RU_NormalUp;  
0000B179 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
0000B17A 40 F0 DD B1        	                call    F_Delay;        
0000B17C 41 94              	                r2 = 0x0001;
0000B17D 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
0000B17F 09 23 40 00        	                r1 -= 0x40;
0000B181 19 D3 17 70        	                [P_DAC1] = r1;
0000B183 09 43 00 80        	                cmp     r1,0x8000;
0000B185 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
0000B186 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
0000B187 40 F0 DD B1        	                call    F_Delay;
0000B189 41 94              	                r2 = 0x0001;
0000B18A 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
0000B18C 09 03 40 00        	                r1 += 0x40;
0000B18E 19 D3 17 70        	                [P_DAC1] = r1;
0000B190 09 43 00 80        	                cmp     r1, 0x8000;
0000B192 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
0000B193 90 90              	                pop     r1,r2 from [sp];
0000B194 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
0000B195 90 D4              					push r1,r2 to [sp];
                            	                //int off;
0000B196 11 93 17 70        	                r1 = [P_DAC1];
0000B198 09 B3 C0 FF        	                r1 &= ~0x003F;
0000B19A 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
0000B19B 40 F0 DD B1        	                call    F_Delay;        
0000B19D 41 94              	                r2 = 0x0001;
0000B19E 1A D5 12 70        	                [P_Watchdog_Clear] = r2;

⌨️ 快捷键说明

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