hardware.lst

来自「关于凌阳单片机的应用--语音播报电子钟。功能为实时当前的时间。」· LST 代码 · 共 661 行 · 第 1/3 页

LST
661
字号
         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      
0000032B 00 00              	.VAR	R_ReadIndex;
0000032C 00 00              	.VAR	R_WriteIndex;
                            	
00009477                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
00009477 1C D9 16 70        	       [P_PWM] = r4;						//
00009479 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
0000947A 1C D9 17 70        			[P_DAC1] = r4;						//
0000947C 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
0000947D 1C D9 16 70        			[P_DAC2] = r4;						//
0000947F 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
00009480 1C D9 17 70        			[P_DAC1] = r4;						//
00009482 1C D9 16 70        			[P_DAC2] = r4;						//
00009484 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:
00009485 14 99 14 70        			R4 = [P_ADC]
00009487 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
00009488 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
0000948A 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
0000948B 19 D3 0A 70        		[P_TimerA_Data] = R1
0000948D 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
0000948E 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
00009490 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
00009491 19 D3 0C 70        		[P_TimerB_Data] = R1
00009493 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
00009494 19 D3 10 70        		[P_INT_Ctrl] = R1
00009496 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
00009497 19 D3 11 70        		[P_INT_Clear] = R1
00009499 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
0000949A 19 D3 13 70        		[P_SystemClock] = R1
0000949C 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
0000949D 19 D3 2A 70        		[P_DAC_Ctrl] = R1
0000949F 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
000094A0 19 D3 15 70        		[P_ADC_Ctrl] = R1
000094A2 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
000094A3 19 D3 F7 02        	        [R_InterruptStatus] = R1;       	//
000094A5 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
000094A6 11 93 F7 02        	        R1 = [R_InterruptStatus];       	//
000094A8 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
000094A9 88 DA              			PUSH BP,BP TO [SP];
000094AA 08 0B 01 00        	        BP = SP + 1;
000094AC 88 D2              			PUSH R1,R1 TO [SP];
000094AD 03 92              			R1 = [BP+3];						// Port direction
000094AE 19 D3 02 70        			[P_IOA_Dir] = R1;
000094B0 04 92              			R1 = [BP+4];
000094B1 19 D3 00 70        			[P_IOA_Data] = R1;
000094B3 05 92              			R1 = [BP+5];
000094B4 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
000094B6 88 90              			POP R1,R1 FROM [SP];
000094B7 88 98              	        POP BP,BP FROM [SP];
000094B8 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
000094B9 88 DA              			PUSH BP,BP TO [SP];
000094BA 08 0B 01 00        	        BP = SP + 1;
000094BC 88 D2              			PUSH R1,R1 TO [SP];
000094BD 03 92              			R1 = [BP+3];						// Port direction
000094BE 19 D3 07 70        			[P_IOB_Dir] = R1;
000094C0 04 92              			R1 = [BP+4];
000094C1 19 D3 05 70        			[P_IOB_Data] = R1;
000094C3 05 92              			R1 = [BP+5];
000094C4 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
000094C6 88 90              			POP R1,R1 FROM [SP];
000094C7 88 98              	        POP BP,BP FROM [SP];
000094C8 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
000094C9 88 DA              	        PUSH BP,BP TO [SP];
000094CA 08 0B 01 00        	        BP = SP + 1;
000094CC 90 D4              			PUSH R1,R2 TO [SP];
000094CD 03 92              			R1 = [BP+3]; 						// Port Number
000094CE 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
000094CF C1 92              			R1 = [R1] ;
000094D0 C2 D2              			[R2] = R1 ;
000094D1 90 90              			POP R1,R2 FROM [SP];
000094D2 88 98              	        POP BP,BP FROM [SP];
000094D3 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
000094D4 88 DA              	        PUSH BP,BP TO [SP];
000094D5 08 0B 01 00        	        BP = SP + 1;
000094D7 90 D4              			PUSH R1,R2 TO [SP];
000094D8 03 92              			R1 = [BP+3]; 						// Port Number
000094D9 04 94              			R2 = [BP+4]; 						// Value
000094DA C1 D4              			[R1] = R2 ;
000094DB 90 90              			POP R1,R2 FROM [SP];
000094DC 88 98              	        POP BP,BP FROM [SP];
000094DD 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
000094DE 90 D4              	                push r1,r2 to [sp];
000094DF 11 93 17 70        	                r1=[P_DAC1];
000094E1 09 B3 C0 FF        	                r1 &= ~0x003f;
000094E3 09 43 00 80        	                cmp     r1,0x8000
000094E5 0E 0E              	                jb     	L_RU_NormalUp;  
000094E6 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
000094E7 40 F0 4A 95        	                call    F_Delay;        
000094E9 41 94              	                r2 = 0x0001;
000094EA 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
000094EC 09 23 40 00        	                r1 -= 0x40;
000094EE 19 D3 17 70        	                [P_DAC1] = r1;
000094F0 09 43 00 80        	                cmp     r1,0x8000;
000094F2 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
000094F3 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
000094F4 40 F0 4A 95        	                call    F_Delay;
000094F6 41 94              	                r2 = 0x0001;
000094F7 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
000094F9 09 03 40 00        	                r1 += 0x40;
000094FB 19 D3 17 70        	                [P_DAC1] = r1;
000094FD 09 43 00 80        	                cmp     r1, 0x8000;
000094FF 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
00009500 90 90              	                pop     r1,r2 from [sp];
00009501 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
00009502 90 D4              					push r1,r2 to [sp];
                            	                //int off;
00009503 11 93 17 70        	                r1 = [P_DAC1];
00009505 09 B3 C0 FF        	                r1 &= ~0x003F;
00009507 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
00009508 40 F0 4A 95        	                call    F_Delay;        
0000950A 41 94              	                r2 = 0x0001;
0000950B 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
0000950D 09 23 40 00        	                r1 -= 0x40;
0000950F 19 D3 17 70        	                [P_DAC1] = r1;  

⌨️ 快捷键说明

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