evb061test.lst

来自「凌阳科技单片机系统开发板测试程序,可以参考应用。」· LST 代码 · 共 580 行 · 第 1/3 页

LST
580
字号
         00 00 00 00
         00 00      
                            	 
00000005 00 00              	 .var recNum        //接收数据个数
                            	
00000006 00 00              	 .var sendNum       //发送数据个数
                            	 
00008D46                    	.code
                            	.public _UART;
                            	_UART:
                            	
00008D46 09 93 FF FF        	    r1 = 0xffff;      //设置A口为输出
00008D48 19 D3 03 70        	    [P_IOA_Attrib] = r1;    
00008D4A 19 D3 02 70        	    [P_IOA_Dir] = r1;
00008D4C 09 93 FF FF        	    r1 = 0xffff;    
00008D4E 19 D3 00 70        	    [P_IOA_Data] = r1; 
                            	       
00008D50 40 94              	    r2 = RecData;   
                            	    
                            	_UART_INIT:		
                            	F_UART_INIT:
00008D51 40 F1              		INT OFF;
00008D52 40 92              		R1 = 0x0000;		    //关闭中断	
00008D53 19 D3 10 70        		[P_INT_Ctrl] = R1;   
                            	
00008D55 09 93 80 04        		R1 = 0x0480;		    //设置IOB7为输入IOB10为输出
00008D57 19 D3 08 70        		[P_IOB_Attrib] = R1;
00008D59 09 93 00 04        		R1 = 0x0400;
00008D5B 19 D3 07 70        		[P_IOB_Dir] = R1;
00008D5D 40 92              		R1 = 0x0000;	
00008D5E 19 D3 05 70        		[P_IOB_Data] = R1;
                            	
00008D60 09 93 6B 00        		R1 = 0x006b;		    //设置波特率 114.84KHz(~=115.2KHz)
00008D62 19 D3 24 70        		[P_UART_BaudScalarLow] = R1;
00008D64 40 92              		R1 = 0x0000;
00008D65 19 D3 25 70        		[P_UART_BaudScalarHigh] = R1;
                            		
                            		
00008D67 40 92              		R1 = 0x0000;
00008D68 0C 99 C0 00        		R4 = 0x00C0;	      //使能RX和TX
00008D6A 19 D3 21 70        		[P_UART_Command1] = R1;
00008D6C 1C D9 22 70        		[P_UART_Command2] = R4;
                            		
                            	
                            	
                            		
00008D6E 40 96              		R3 = 0x00;
00008D6F 40 9A              		bp = 0x0000
00008D70 C6 DB              		[sendNum] = bp
00008D71 C5 DB              	    [recNum] = bp
                            		
                            	L_sendData:
                            		
                            	L_Check_TxRDY:
00008D72 0C 99 FA C6        	    R4 = SendData;				//准备发送数据
00008D74 C6 9B              	    bp = [sendNum] 
                            		
00008D75 41 26              		R3 -= 1;
00008D76 24 5E              		jz	L_TxRDY_TimeOut;
                            	
00008D77 45 4A              	    cmp bp,5                    //发送是否结束
00008D78 0C 5E              	    je L_Check_RxRDY;           
                            	    
00008D79 11 93 22 70        		R1 = [P_UART_Command2];    
00008D7B 09 B3 40 00        		R1 &= 0x0040;			      //检测 TxRDY = 1;
00008D7D 07 5E              		JZ L_Check_RxRDY;
00008D7E 05 09              	    r4 = r4 + bp
00008D7F C4 98              		r4 = [r4]
00008D80 1C D9 23 70        		[P_UART_Data] = R4;	          //发送数据
                            	    
00008D82 41 0A              	    bp += 1     
00008D83 C6 DB              	    [sendNum] = bp                //发送数据的个数      
                            	    
                            	L_recData:      
00008D84 40 96              		R3 = 0x00;
                            	L_Check_RxRDY:
                            		
00008D85 41 26              		R3 -= 1;
00008D86 14 5E              		jz	L_RxRDY_TimeOut;
                            	    
00008D87 C5 9B              	    bp = [recNum]
00008D88 0D 05 00 00        	    r2 =  bp + RecData            
                            	    
00008D8A 11 93 22 70        		R1 = [P_UART_Command2];			//检测是否有数据接收
00008D8C 09 B3 80 00        		R1 &= 0x0080;
00008D8E 5D 5E              		JZ L_Check_TxRDY;
                            		                                //接收自己发送的8位十六进制数
00008D8F 40 92              		r1 = 0x0000;
                            		//... Get data .................
00008D90 11 93 23 70        		R1 = [P_UART_Data];				//取接收的数据
                            	    
00008D92 C2 D2              	    [r2] = r1;    
00008D93 41 0A              	    bp += 1
00008D94 C5 DB              	    [recNum] = bp                   //数据是否全部接收
00008D95 45 4A              	    cmp bp ,5
00008D96 52 4E              	    jne L_Check_RxRDY
                            	    
00008D97 40 92              	    R1 = 0x0000;
00008D98 19 D3 22 70        	    [P_UART_Command2] = R1;        //禁止接收
00008D9A 00 EE              	    jmp L_TxRDY_TimeOut
                            	
                            		
                            	L_TxRDY_TimeOut:
                            	L_RxRDY_TimeOut:		
00008D9B 40 F0 9E 8D        	    call CmpRecSend;
00008D9D 90 9A              		retf;
                            	
                            	//==============================//
                            	//函数名称:CmpRecSend:
                            	
                            	//比较发送数据与接收数据是否相等
                            	//==============================//
                            	CmpRecSend:
00008D9E C5 9B              	   bp = [recNum] 
00008D9F 41 2A              	   bp -= 1
                            	loopCmp:   
00008DA0 0D 07 00 00        	   r3 = bp + RecData
00008DA2 0D 09 FA C6        	   r4 = bp + SendData
                            	  // r3 -= 1 
00008DA4 C3 96              	   r3 = [r3] 
00008DA5 C4 98              	   r4 = [r4]
00008DA6 04 47              	   cmp r3,r4;
00008DA7 06 4E              	   jne UartFail;
00008DA8 41 2A              	   bp -= 1 
00008DA9 0D 4B FF FF        	   cmp bp,0xffff
00008DAB 4C 4E              	   jne loopCmp;      
00008DAC 41 92              	   r1 = 0x0001  //成功
00008DAD 90 9A              	   retf
                            	 UartFail:
00008DAE 40 92              	   r1 = 0x0000;   //失败
00008DAF 90 9A              	 retf;
                            	//==============================//
                            	// MIC测试部分
                            	//==============================//
00008DB0                    	.CODE
                            	_InitAD_DA: 
00008DB0 40 F1              			INT OFF;	
                            		
00008DB1 70 92              			R1 = 0x0030; 				// 时钟频率为CLKA的Fosc/2
00008DB2 19 D3 0B 70        			[P_TimerA_Ctrl] = R1;		//
00008DB4 09 93 23 FA        			R1 = TIMER_DATA_FOR_8KHZ; 	// 采样率为 8kHz
00008DB6 19 D3 0A 70        			[P_TimerA_Data] = R1;		//
                            			
00008DB8 55 92              			R1 = 0x0015;				// 设置AGC 
                            			//R1 = 0x0011				// 取消AGC 
00008DB9 19 D3 15 70        			[P_ADC_Ctrl] = R1;			// 采用自动方式、且通过MIC_IN通道输入,
                            			
                            			
00008DBB 09 93 A8 00        			R1 = 0x00A8;				//通过定时器A的溢出锁存数据,ADC为自动方式
00008DBD 19 D3 2A 70        			[P_DAC_Ctrl] = R1;			
00008DBF 09 93 00 10        			R1 = 0x1000;				//
00008DC1 19 D3 10 70        			[P_INT_Ctrl] = R1;			// 开中断IRQ1_TM
                            			
00008DC3 41 F1              			INT IRQ;
00008DC4 90 9A              			retf; 
                            	
                            	//主程序
                            	.PUBLIC _MICTEST	
                            	_MICTEST: .PROC 
00008DC5 40 F0 B0 8D        			call _InitAD_DA				// 调用AD 初始化子程序 
                            		.ENDP
                            	loop:
00008DC7 00 EE              		nop 
00008DC8 00 EE              		nop 
00008DC9 00 EE              		nop 
00008DCA 00 EE              		nop 
00008DCB 45 EE              		jmp loop 
00008098                    	.text
                            	.PUBLIC _IRQ1 
                            	_IRQ1:       
00008098 88 D2              			push R1 to [SP]
                            		
00008099 11 93 14 70        			R1 = [P_ADC] 
0000809B 19 D3 17 70        			[P_DAC1] = R1 
0000809D 19 D3 16 70        			[P_DAC2] = R1 
0000809F 09 93 00 10        			R1 = 0x1000 
000080A1 19 D3 11 70        			[P_INT_Clear] = R1 
000080A3 88 90              			pop R1 from [SP] 
000080A4 98 9A              			reti 
0 error(s), 0 warning(s).











⌨️ 快捷键说明

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