hardware.lst

来自「电子词典的设计开发」· 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 00 00
         00 00      
00000034 00 00              	.VAR	R_ReadIndex;
00000035 00 00              	.VAR	R_WriteIndex;
                            	
00000000                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
00000000 1C D9 16 70        	       [P_PWM] = r4;						//
00000002 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
00000003 1C D9 17 70        			[P_DAC1] = r4;						//
00000005 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
00000006 1C D9 16 70        			[P_DAC2] = r4;						//
00000008 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
00000009 1C D9 17 70        			[P_DAC1] = r4;						//
0000000B 1C D9 16 70        			[P_DAC2] = r4;						//
0000000D 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:
0000000E 14 99 14 70        			R4 = [P_ADC]
00000010 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
00000011 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
00000013 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
00000014 19 D3 0A 70        		[P_TimerA_Data] = R1
00000016 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
00000017 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
00000019 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
0000001A 19 D3 0C 70        		[P_TimerB_Data] = R1
0000001C 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
0000001D 19 D3 10 70        		[P_INT_Ctrl] = R1
0000001F 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
00000020 19 D3 11 70        		[P_INT_Clear] = R1
00000022 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
00000023 19 D3 13 70        		[P_SystemClock] = R1
00000025 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
00000026 19 D3 2A 70        		[P_DAC_Ctrl] = R1
00000028 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
00000029 19 D3 15 70        		[P_ADC_Ctrl] = R1
0000002B 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
0000002C 19 D3 00 00        	        [R_InterruptStatus] = R1;       	//
0000002E 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
0000002F 11 93 00 00        	        R1 = [R_InterruptStatus];       	//
00000031 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
00000032 88 DA              			PUSH BP,BP TO [SP];
00000033 08 0B 01 00        	        BP = SP + 1;
00000035 88 D2              			PUSH R1,R1 TO [SP];
00000036 03 92              			R1 = [BP+3];						// Port direction
00000037 19 D3 02 70        			[P_IOA_Dir] = R1;
00000039 04 92              			R1 = [BP+4];
0000003A 19 D3 00 70        			[P_IOA_Data] = R1;
0000003C 05 92              			R1 = [BP+5];
0000003D 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
0000003F 88 90              			POP R1,R1 FROM [SP];
00000040 88 98              	        POP BP,BP FROM [SP];
00000041 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
00000042 88 DA              			PUSH BP,BP TO [SP];
00000043 08 0B 01 00        	        BP = SP + 1;
00000045 88 D2              			PUSH R1,R1 TO [SP];
00000046 03 92              			R1 = [BP+3];						// Port direction
00000047 19 D3 07 70        			[P_IOB_Dir] = R1;
00000049 04 92              			R1 = [BP+4];
0000004A 19 D3 05 70        			[P_IOB_Data] = R1;
0000004C 05 92              			R1 = [BP+5];
0000004D 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
0000004F 88 90              			POP R1,R1 FROM [SP];
00000050 88 98              	        POP BP,BP FROM [SP];
00000051 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
00000052 88 DA              	        PUSH BP,BP TO [SP];
00000053 08 0B 01 00        	        BP = SP + 1;
00000055 90 D4              			PUSH R1,R2 TO [SP];
00000056 03 92              			R1 = [BP+3]; 						// Port Number
00000057 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
00000058 C1 92              			R1 = [R1] ;
00000059 C2 D2              			[R2] = R1 ;
0000005A 90 90              			POP R1,R2 FROM [SP];
0000005B 88 98              	        POP BP,BP FROM [SP];
0000005C 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
0000005D 88 DA              	        PUSH BP,BP TO [SP];
0000005E 08 0B 01 00        	        BP = SP + 1;
00000060 90 D4              			PUSH R1,R2 TO [SP];
00000061 03 92              			R1 = [BP+3]; 						// Port Number
00000062 04 94              			R2 = [BP+4]; 						// Value
00000063 C1 D4              			[R1] = R2 ;
00000064 90 90              			POP R1,R2 FROM [SP];
00000065 88 98              	        POP BP,BP FROM [SP];
00000066 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
00000067 90 D4              	                push r1,r2 to [sp];
00000068 11 93 17 70        	                r1=[P_DAC1];
0000006A 09 B3 C0 FF        	                r1 &= ~0x003f;
0000006C 09 43 00 80        	                cmp     r1,0x8000
0000006E 0E 0E              	                jb     	L_RU_NormalUp;  
0000006F 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
00000070 40 F0 D3 00        	                call    F_Delay;        
00000072 41 94              	                r2 = 0x0001;
00000073 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00000075 09 23 40 00        	                r1 -= 0x40;
00000077 19 D3 17 70        	                [P_DAC1] = r1;
00000079 09 43 00 80        	                cmp     r1,0x8000;
0000007B 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
0000007C 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
0000007D 40 F0 D3 00        	                call    F_Delay;
0000007F 41 94              	                r2 = 0x0001;
00000080 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00000082 09 03 40 00        	                r1 += 0x40;
00000084 19 D3 17 70        	                [P_DAC1] = r1;
00000086 09 43 00 80        	                cmp     r1, 0x8000;
00000088 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
00000089 90 90              	                pop     r1,r2 from [sp];
0000008A 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
0000008B 90 D4              					push r1,r2 to [sp];
                            	                //int off;
0000008C 11 93 17 70        	                r1 = [P_DAC1];
0000008E 09 B3 C0 FF        	                r1 &= ~0x003F;
00000090 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
00000091 40 F0 D3 00        	                call    F_Delay;        
00000093 41 94              	                r2 = 0x0001;

⌨️ 快捷键说明

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