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

📄 splc501hardware.lst

📁 单片机开发的数字电压表,带保护提示功能,精确度比较高
💻 LST
📖 第 1 页 / 共 4 页
字号:
                            	        .if	C_BusHighLow
                            		.else
                            			R1	=	R1	lsr	4;
                            			R1	=	R1	lsr	4;		
                            		.endif   	
0000E87E 19 D3 00 70        			[P_IO_Data_Data]=r1
0000E880 40 F0 CC E8        			CALL F_Send_data
0000E882 02 93              			R1 = R2
0000E883 59 93              			R1 = R1 LSl 4;
0000E884 59 93              			R1 = R1 LSl 4;
0000E885 09 B3 00 0F        	        R1 &= 0x0F00;   
0000E887 88 D2              	        push r1,r1 to [sp]
0000E888 11 93 00 70        	        r1=[P_IO_Data_Data]
                            	   //     r1&=0x00ff
0000E88A 88 D4              	  		push r2 to [sp]
0000E88B 0A 95 00 FF        			r2=C_DataBus
0000E88D 0A 85 FF FF        			r2^=0xffff
0000E88F 02 B3              			r1&=r2
0000E890 88 92              			pop r2 from [sp]
0000E891 19 D3 00 70        	        [P_IO_Data_Data]=r1
0000E893 88 90              	        pop r1,r1 from [sp] 
0000E894 11 A3 00 70        	        r1|=[P_IO_Data_Data]    
                            	        .if	C_BusHighLow
                            		.else
                            			R1	=	R1	lsr	4;
                            			R1	=	R1	lsr	4;		
                            		.endif    	         	 	
0000E896 19 D3 00 70        	        [P_IO_Data_Data]=r1
0000E898 40 F0 CC E8        			CALL F_Send_data
0000E89A 88 94              			pop	r3 from [sp]
0000E89B 88 90              			pop	r1 from [sp]
                            	        
0000E89C 90 9A              	        RETF;
                            	//////////////////////////////////////////////////////////////////////////////
                            	//Filename : F_Fill_All_LCD_Value
                            	//Function : Clear all LCD dots
                            	//Input    : Value (R3 : b0~7)
                            	//Output   : None
                            	//Destroy  : R1,R2
                            	//////////////////////////////////////////////////////////////////////////////
                            	.public _Fill_All_LCD_Value
                            	.public F_Fill_All_LCD_Value
                            	_Fill_All_LCD_Value:
                            	F_Fill_All_LCD_Value:
0000E89D 0B B7 00 FF        	        R3 &= 0xFF00;           	//Filling value
0000E89F 40 92              	        R1 = 0x0000;            	//Page No. = 0
                            			.if	C_BusHighLow
                            		.else
                            			R3	=	R3	lsr	4;
                            			R3	=	R3	lsr	4;		
                            		.endif
                            	L_Fill_Page_Loop:
0000E8A0 98 D6              	        PUSH R1,R3 TO [SP];     	//Store R1 temporarily
0000E8A1 40 F0 3E E8        	        CALL F_Set_LCD_Page_No; 	//Page No. = 0
0000E8A3 40 94              	        R2 = 0x0000;            	//Column address (00H ~ 63H)
0000E8A4 40 F0 67 E8        	        CALL F_Set_LCD_Column_Addr; //Column Addr. = 0
0000E8A6 98 90              	        POP R1,R3 FROM [SP];    	//Restore R1
0000E8A7 0A 95 84 00        	        R2 = 0x0084;            	//Max. column address +1
                            	L_Fill_Column_Loop:
0000E8A9 88 D6              	        push r3,r3 to[sp]
0000E8AA 13 97 00 70        			r3=[P_IO_Data_Data]
0000E8AC 88 D4              			push r2 to [sp]
0000E8AD 0A 95 00 FF        			r2=C_DataBus
0000E8AF 0A 85 FF FF        			r2^=0xffff
0000E8B1 02 B7              			r3&=r2
0000E8B2 88 92              			pop r2 from [sp]
0000E8B3 1B D7 00 70        			[P_IO_Data_Data]=r3
0000E8B5 88 94              			pop r3,r3 from [sp]
0000E8B6 13 A7 00 70        			r3|=[P_IO_Data_Data]
                            	
0000E8B8 1B D7 00 70        	        [P_IO_Data_Data]=r3
0000E8BA 88 D6              	        PUSH R3,R3 TO [SP];
0000E8BB 50 96              	        r3=C_AOP_Pin				//0x2000
0000E8BC 13 A7 05 70        	        r3|=[P_IO_Control_Data]
0000E8BE 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000E8C0 40 F0 CC E8        			CALL F_Send_data					////xxxxxxxx	  
0000E8C2 88 94              	        POP R3,R3 FROM [SP]
0000E8C3 41 24              	        R2 -= 0x0001;           	//Next column address
0000E8C4 5C 4E              	        JNZ L_Fill_Column_Loop; 	//End Page ?
0000E8C5 41 02              	        R1 += 0x0001;
0000E8C6 48 42              	        CMP R1,0x0008;          	//Next page address
0000E8C7 68 4E              	        JNE L_Fill_Page_Loop;
0000E8C8 41 92              	        R1 = 0x0001;
0000E8C9 19 D3 12 70        	        [P_Watchdog_Clear] = R1;  	// reset watchdog
                            	
0000E8CB 90 9A              	        RETF;
                            	
                            	//////////////////////////////////////////////////////////////////////////////
                            	//destory: r3
                            	//////////////////////////////////////////////////////////////////////
                            	.public	 _Send_data
                            	.public	 F_Send_data
                            	F_Send_data:
                            	_Send_data:			.proc
0000E8CC 13 97 05 70        			r3=[P_IO_Control_Data]
0000E8CE 0B A7 40 00        			r3|=C_EP_Pin				//0x4000
0000E8D0 1B D7 05 70        			[P_IO_Control_Data]=r3
0000E8D2 88 D2              			push  r1 to [sp]
0000E8D3 09 93 40 00        			r1=C_EP_Pin
0000E8D5 09 83 FF FF        			r1^=0xffff
0000E8D7 01 B7              			r3&=r1						//0xbfff
0000E8D8 88 90              			pop r1 from [sp]
0000E8D9 1B D7 05 70        			[P_IO_Control_Data]=r3
0000E8DB 88 D2              	        push r1 to [sp]
0000E8DC 50 92              	        r1=C_AOP_Pin
0000E8DD 09 83 FF FF        			r1^=0xffff
0000E8DF 01 B7              			r3&=r1
0000E8E0 60 92              			r1=C_RWP_Pin
0000E8E1 09 83 FF FF        			r1^=0xffff
0000E8E3 01 B7              			r3&=r1
0000E8E4 88 90              			pop r1 from [sp]
                            	//        r3&=0x1fff
0000E8E5 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000E8E7 90 9A              	        retf
                            	        .endp
                            	////////////////////////////////////////////////////////////////////////////// 
                            	F_Delay_Bus_Time:
                            	
0000E8E8 90 9A              	        RETF;
                            	//////////////////////////////////////////////////////////////////////////////    
                            	//Filename : F_Read_Lcd_data
                            	//Function : frist read appoint  data on lcd
                            	//Input    : 
                            	//Output   : r3
                            	//Destroy  : R1,r3
                            	////////////////////////////////////////////////////////////////////////////// 
                            	.public	_Read_Lcd_data
                            	.public	F_Read_Lcd_data
                            	_Read_Lcd_data:	.proc
                            	F_Read_Lcd_data:
0000E8E9 11 93 02 70        			r1=[P_IO_Data_Dir]
0000E8EB 88 D4              			push r2 to [sp]
0000E8EC 0A 95 00 FF        			r2=C_DataBus
0000E8EE 0A 85 FF FF        			r2^=0xffff
0000E8F0 02 B3              			r1&=r2
0000E8F1 88 92              			pop r2 from [sp]
                            		//	r1&=0x00ff
0000E8F2 19 D3 02 70        			[P_IO_Data_Dir]=r1					
                            	//		r1=[P_IOA_Attrib]
                            	//		r1|=0xff00
                            	//		[P_IOA_Attrib]=r1				
                            	
                            	//		r3=0x00fd
0000E8F4 13 97 05 70        	        r3=[P_IO_Control_Data]
                            	//       r3|=0xb000
0000E8F6 50 A6              			r3|=C_AOP_Pin
0000E8F7 60 A6              			r3|=C_RWP_Pin
0000E8F8 09 93 40 00        			r1=C_EP_Pin
0000E8FA 09 83 FF FF        			r1^=0xffff
0000E8FC 01 B7              	        r3&=r1
0000E8FD 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000E8FF 40 F0 CC E8        	        CALL F_Send_data				//Dummy read after setting column address immediately
                            	 //       r3=0x00fd
0000E901 13 97 05 70        	        r3=[P_IO_Control_Data]
0000E903 50 A6              	        r3|=C_AOP_Pin
0000E904 60 A6              			r3|=C_RWP_Pin
0000E905 09 93 40 00        			r1=C_EP_Pin
0000E907 09 83 FF FF        			r1^=0xffff
0000E909 01 B7              	        r3&=r1
0000E90A 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000E90C 40 F0 CC E8        	        CALL F_Send_data                //Read Data
0000E90E 13 97 00 70        	        R3 = [P_IO_Data_Data]               //Get it
                            	    .if	C_BusHighLow
                            		.else
                            			R3	=	R3	lsl	4;
                            			R3	=	R3	lsl	4;		
                            		.endif 
0000E910 11 93 02 70        	        r1=[P_IO_Data_Dir]
0000E912 09 A3 00 FF        	   	 	r1|=C_DataBus
0000E914 19 D3 02 70        			[P_IO_Data_Dir]=r1
0000E916 90 9A              			retf
                            	        .endp    
                            	//////////////////////////////////////////////////////////////////////
                            	//input: r3
                            	//destory: r3
                            	//////////////////////////////////////////////////////////////////////
                            	.PUBLIC  		F_Display_point
                            	//_Display_point:		.proc
                            	F_Display_point:
0000E917 00 EE              			nop
0000E918 00 EE              			nop 
0000E919 88 D6              			push r3,r3 to[sp]
0000E91A 13 97 00 70        			r3=[P_IO_Data_Data]
0000E91C 0A 95 00 FF        			r2=C_DataBus
0000E91E 0A 85 FF FF        			r2^=0xffff
0000E920 02 B7              			r3&=r2
                            		
0000E921 1B D7 00 70        			[P_IO_Data_Data]=r3
0000E923 88 94              			pop r3,r3 from [sp]
0000E924 5B 97              			r3=r3 lsl	0x04
0000E925 5B 97              			r3=r3 lsl	0x04 
                            	//        R3 |= 0x00f4;           	//Write data
                            		.if	C_BusHighLow
                            		.else
                            			R3	=	R3	lsr	4;
                            			R3	=	R3	lsr	4;		
                            		.endif
0000E926 13 A7 00 70        			r3|=[P_IO_Data_Data]
0000E928 1B D7 00 70        	        [P_IO_Data_Data]=r3
0000E92A 13 97 05 70        	        r3=[P_IO_Control_Data]
0000E92C 50 A6              	        r3|=C_AOP_Pin			//0x2000
0000E92D 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000E92F 40 F0 CC E8        	        CALL F_Send_data
0000E931 90 9A              	        retf    
                            	//////////////////////////////////////////////////////////////////////////////
                            	//Filename : F_Init_IO
                            	//Function : Intialize I/O 
                            	//Input    : None
                            	//Output   : None
                            	//Destory  : R1
                            	//////////////////////////////////////////////////////////////////////////////
                            	.public		F_Init_IO
                            	.public		_Init_IO
                            	_Init_IO:
                            	F_Init_IO:		.proc
                            		
0000E932 11 93 02 70        	    r1=[P_IO_Data_Dir]
0000E934 09 A3 00 FF        	    r1|=C_DataBus
0000E936 19 D3 02 70        		[P_IO_Data_Dir]=r1
0000E938 11 93 03 70        		r1=[P_IO_Data_Attrib]					
0000E93A 09 A3 00 FF        		r1|=C_DataBus
0000E93C 19 D3 03 70        		[P_IO_Data_Attrib]=r1				
0000E93E 11 93 00 70        		r1=[P_IO_Data_Data]
0000E940 0A 95 00 FF        		r2=C_DataBus
0000E942 0A 85 FF FF        		r2^=0xffff
0000E944 02 B3              		r1&=r2
0000E945 19 D3 00 70        		[P_IO_Data_Data]=r1					//Initial porta
                            		
0000E947 11 93 07 70        		r1=[P_IO_Control_Dir]
0000E949 50 A2              		r1|=C_AOP_Pin
0000E94A 09 A3 40 00        		r1|=C_EP_Pin
0000E94C 60 A2              		r1|=C_RWP_Pin
0000E94D 19 D3 07 70        		[P_IO_Control_Dir]=r1					
0000E94F 12 95 08 70        		r2=[P_IO_Control_Attrib]
0000E951 01 A5              		r2|=r1
0000E952 1A D5 08 70        		[P_IO_Control_Attrib]=r2				
0000E954 12 95 05 70        		r2=[P_IO_Control_Data]
0000E956 09 83 FF FF        		r1^=0xffff
0000E958 01 B5              		r2&=r1
0000E959 19 D3 05 70        		[P_IO_Control_Data]=r1	
0000E95B 90 9A              	    RETF
                            		.endp
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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