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

📄 splc501hardware.lst

📁 电子词典的设计开发
💻 LST
📖 第 1 页 / 共 4 页
字号:
0000CC1A 59 93              			R1 = R1 LSl 4;
0000CC1B 59 93              			R1 = R1 LSl 4;
0000CC1C 09 B3 00 0F        	        R1 &= 0x0F00;   
0000CC1E 88 D2              	        push r1,r1 to [sp]
0000CC1F 11 93 00 70        	        r1=[P_IO_Data_Data]
                            	   //     r1&=0x00ff
0000CC21 88 D4              	  		push r2 to [sp]
0000CC22 0A 95 00 FF        			r2=C_DataBus
0000CC24 0A 85 FF FF        			r2^=0xffff
0000CC26 02 B3              			r1&=r2
0000CC27 88 92              			pop r2 from [sp]
0000CC28 19 D3 00 70        	        [P_IO_Data_Data]=r1
0000CC2A 88 90              	        pop r1,r1 from [sp] 
0000CC2B 11 A3 00 70        	        r1|=[P_IO_Data_Data]    
                            	        .if	C_BusHighLow
                            		.else
                            			R1	=	R1	lsr	4;
                            			R1	=	R1	lsr	4;		
                            		.endif    	         	 	
0000CC2D 19 D3 00 70        	        [P_IO_Data_Data]=r1
0000CC2F 40 F0 63 CC        			CALL F_Send_data
0000CC31 88 94              			pop	r3 from [sp]
0000CC32 88 90              			pop	r1 from [sp]
                            	        
0000CC33 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:
0000CC34 0B B7 00 FF        	        R3 &= 0xFF00;           	//Filling value
0000CC36 40 92              	        R1 = 0x0000;            	//Page No. = 0
                            			.if	C_BusHighLow
                            		.else
                            			R3	=	R3	lsr	4;
                            			R3	=	R3	lsr	4;		
                            		.endif
                            	L_Fill_Page_Loop:
0000CC37 98 D6              	        PUSH R1,R3 TO [SP];     	//Store R1 temporarily
0000CC38 40 F0 D5 CB        	        CALL F_Set_LCD_Page_No; 	//Page No. = 0
0000CC3A 40 94              	        R2 = 0x0000;            	//Column address (00H ~ 63H)
0000CC3B 40 F0 FE CB        	        CALL F_Set_LCD_Column_Addr; //Column Addr. = 0
0000CC3D 98 90              	        POP R1,R3 FROM [SP];    	//Restore R1
0000CC3E 0A 95 84 00        	        R2 = 0x0084;            	//Max. column address +1
                            	L_Fill_Column_Loop:
0000CC40 88 D6              	        push r3,r3 to[sp]
0000CC41 13 97 00 70        			r3=[P_IO_Data_Data]
0000CC43 88 D4              			push r2 to [sp]
0000CC44 0A 95 00 FF        			r2=C_DataBus
0000CC46 0A 85 FF FF        			r2^=0xffff
0000CC48 02 B7              			r3&=r2
0000CC49 88 92              			pop r2 from [sp]
0000CC4A 1B D7 00 70        			[P_IO_Data_Data]=r3
0000CC4C 88 94              			pop r3,r3 from [sp]
0000CC4D 13 A7 00 70        			r3|=[P_IO_Data_Data]
                            	
0000CC4F 1B D7 00 70        	        [P_IO_Data_Data]=r3
0000CC51 88 D6              	        PUSH R3,R3 TO [SP];
0000CC52 50 96              	        r3=C_AOP_Pin				//0x2000
0000CC53 13 A7 05 70        	        r3|=[P_IO_Control_Data]
0000CC55 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000CC57 40 F0 63 CC        			CALL F_Send_data					////xxxxxxxx	  
0000CC59 88 94              	        POP R3,R3 FROM [SP]
0000CC5A 41 24              	        R2 -= 0x0001;           	//Next column address
0000CC5B 5C 4E              	        JNZ L_Fill_Column_Loop; 	//End Page ?
0000CC5C 41 02              	        R1 += 0x0001;
0000CC5D 48 42              	        CMP R1,0x0008;          	//Next page address
0000CC5E 68 4E              	        JNE L_Fill_Page_Loop;
0000CC5F 41 92              	        R1 = 0x0001;
0000CC60 19 D3 12 70        	        [P_Watchdog_Clear] = R1;  	// reset watchdog
                            	
0000CC62 90 9A              	        RETF;
                            	
                            	//////////////////////////////////////////////////////////////////////////////
                            	//destory: r3
                            	//////////////////////////////////////////////////////////////////////
                            	.public	 _Send_data
                            	.public	 F_Send_data
                            	F_Send_data:
                            	_Send_data:			.proc
0000CC63 13 97 05 70        			r3=[P_IO_Control_Data]
0000CC65 0B A7 40 00        			r3|=C_EP_Pin				//0x4000
0000CC67 1B D7 05 70        			[P_IO_Control_Data]=r3
0000CC69 88 D2              			push  r1 to [sp]
0000CC6A 09 93 40 00        			r1=C_EP_Pin
0000CC6C 09 83 FF FF        			r1^=0xffff
0000CC6E 01 B7              			r3&=r1						//0xbfff
0000CC6F 88 90              			pop r1 from [sp]
0000CC70 1B D7 05 70        			[P_IO_Control_Data]=r3
0000CC72 88 D2              	        push r1 to [sp]
0000CC73 50 92              	        r1=C_AOP_Pin
0000CC74 09 83 FF FF        			r1^=0xffff
0000CC76 01 B7              			r3&=r1
0000CC77 60 92              			r1=C_RWP_Pin
0000CC78 09 83 FF FF        			r1^=0xffff
0000CC7A 01 B7              			r3&=r1
0000CC7B 88 90              			pop r1 from [sp]
                            	//        r3&=0x1fff
0000CC7C 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000CC7E 90 9A              	        retf
                            	        .endp
                            	////////////////////////////////////////////////////////////////////////////// 
                            	F_Delay_Bus_Time:
                            	
0000CC7F 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:
0000CC80 11 93 02 70        			r1=[P_IO_Data_Dir]
0000CC82 88 D4              			push r2 to [sp]
0000CC83 0A 95 00 FF        			r2=C_DataBus
0000CC85 0A 85 FF FF        			r2^=0xffff
0000CC87 02 B3              			r1&=r2
0000CC88 88 92              			pop r2 from [sp]
                            		//	r1&=0x00ff
0000CC89 19 D3 02 70        			[P_IO_Data_Dir]=r1					
                            	//		r1=[P_IOA_Attrib]
                            	//		r1|=0xff00
                            	//		[P_IOA_Attrib]=r1				
                            	
                            	//		r3=0x00fd
0000CC8B 13 97 05 70        	        r3=[P_IO_Control_Data]
                            	//       r3|=0xb000
0000CC8D 50 A6              			r3|=C_AOP_Pin
0000CC8E 60 A6              			r3|=C_RWP_Pin
0000CC8F 09 93 40 00        			r1=C_EP_Pin
0000CC91 09 83 FF FF        			r1^=0xffff
0000CC93 01 B7              	        r3&=r1
0000CC94 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000CC96 40 F0 63 CC        	        CALL F_Send_data				//Dummy read after setting column address immediately
                            	 //       r3=0x00fd
0000CC98 13 97 05 70        	        r3=[P_IO_Control_Data]
0000CC9A 50 A6              	        r3|=C_AOP_Pin
0000CC9B 60 A6              			r3|=C_RWP_Pin
0000CC9C 09 93 40 00        			r1=C_EP_Pin
0000CC9E 09 83 FF FF        			r1^=0xffff
0000CCA0 01 B7              	        r3&=r1
0000CCA1 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000CCA3 40 F0 63 CC        	        CALL F_Send_data                //Read Data
0000CCA5 13 97 00 70        	        R3 = [P_IO_Data_Data]               //Get it
                            	    .if	C_BusHighLow
                            		.else
                            			R3	=	R3	lsl	4;
                            			R3	=	R3	lsl	4;		
                            		.endif 
0000CCA7 11 93 02 70        	        r1=[P_IO_Data_Dir]
0000CCA9 09 A3 00 FF        	   	 	r1|=C_DataBus
0000CCAB 19 D3 02 70        			[P_IO_Data_Dir]=r1
0000CCAD 90 9A              			retf
                            	        .endp    
                            	//////////////////////////////////////////////////////////////////////
                            	//input: r3
                            	//destory: r3
                            	//////////////////////////////////////////////////////////////////////
                            	.PUBLIC  		F_Display_point
                            	//_Display_point:		.proc
                            	F_Display_point:
0000CCAE 00 EE              			nop
0000CCAF 00 EE              			nop 
0000CCB0 88 D6              			push r3,r3 to[sp]
0000CCB1 13 97 00 70        			r3=[P_IO_Data_Data]
0000CCB3 0A 95 00 FF        			r2=C_DataBus
0000CCB5 0A 85 FF FF        			r2^=0xffff
0000CCB7 02 B7              			r3&=r2
                            		
0000CCB8 1B D7 00 70        			[P_IO_Data_Data]=r3
0000CCBA 88 94              			pop r3,r3 from [sp]
0000CCBB 5B 97              			r3=r3 lsl	0x04
0000CCBC 5B 97              			r3=r3 lsl	0x04 
                            	//        R3 |= 0x00f4;           	//Write data
                            		.if	C_BusHighLow
                            		.else
                            			R3	=	R3	lsr	4;
                            			R3	=	R3	lsr	4;		
                            		.endif
0000CCBD 13 A7 00 70        			r3|=[P_IO_Data_Data]
0000CCBF 1B D7 00 70        	        [P_IO_Data_Data]=r3
0000CCC1 13 97 05 70        	        r3=[P_IO_Control_Data]
0000CCC3 50 A6              	        r3|=C_AOP_Pin			//0x2000
0000CCC4 1B D7 05 70        	        [P_IO_Control_Data]=r3
0000CCC6 40 F0 63 CC        	        CALL F_Send_data
0000CCC8 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
                            		
0000CCC9 11 93 02 70        	    r1=[P_IO_Data_Dir]
0000CCCB 09 A3 00 FF        	    r1|=C_DataBus
0000CCCD 19 D3 02 70        		[P_IO_Data_Dir]=r1
0000CCCF 11 93 03 70        		r1=[P_IO_Data_Attrib]					
0000CCD1 09 A3 00 FF        		r1|=C_DataBus
0000CCD3 19 D3 03 70        		[P_IO_Data_Attrib]=r1				
0000CCD5 11 93 00 70        		r1=[P_IO_Data_Data]
0000CCD7 0A 95 00 FF        		r2=C_DataBus
0000CCD9 0A 85 FF FF        		r2^=0xffff
0000CCDB 02 B3              		r1&=r2
0000CCDC 19 D3 00 70        		[P_IO_Data_Data]=r1					//Initial porta
                            		
0000CCDE 11 93 07 70        		r1=[P_IO_Control_Dir]
0000CCE0 50 A2              		r1|=C_AOP_Pin
0000CCE1 09 A3 40 00        		r1|=C_EP_Pin
0000CCE3 60 A2              		r1|=C_RWP_Pin
0000CCE4 19 D3 07 70        		[P_IO_Control_Dir]=r1					
0000CCE6 12 95 08 70        		r2=[P_IO_Control_Attrib]
0000CCE8 01 A5              		r2|=r1
0000CCE9 1A D5 08 70        		[P_IO_Control_Attrib]=r2				
0000CCEB 12 95 05 70        		r2=[P_IO_Control_Data]
0000CCED 09 83 FF FF        		r1^=0xffff
0000CCEF 01 B5              		r2&=r1
0000CCF0 19 D3 05 70        		[P_IO_Control_Data]=r1	
0000CCF2 90 9A              	    RETF
                            		.endp
0 error(s), 0 warning(s).



⌨️ 快捷键说明

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