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

📄 splc501sys.asm

📁 这是一个语音电压表
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		call	display_point_erase
        retf
//----------------------------------------------------------------------------  
display_point_dotted_cover:
		r1=[sign]
		r1&=0x0010
		jz	display_dotted_cover_empty_point
		call display_point_solid
		r1=[sign]
		r1&=0xffef
		[sign]=r1
		retf
display_dotted_cover_empty_point:	
		call display_point_erase
		r1=[sign]
		r1|=0x0010
		[sign]=r1
        retf
//----------------------------------------------------------------------------  
display_point_solid_xor:
		r2=[_page_place_bit]
        r1=TAB_pixel;
        r1=r1+r2;
        r1=[r1]
		push	r1 to [sp]
		call	_Read_Lcd_data
		r3=r3 lsr	0x04
		r3=r3 lsr	0x04
		pop		r1 from [sp]
		r1^=r3
		[_point_value]=r1
        retf
//----------------------------------------------------------------------------        
display_point_dotted_xor:
		r1=[sign]
		r1&=0x0010
		jz	display_xor_empty_point
		call display_point_solid_xor
		r1=[sign]
		r1&=0xffef
		[sign]=r1
		retf
display_xor_empty_point:	
		r2=[_page_place_bit]
        r1=TAB_pixel;
        r1=r1+r2;
        r1=[r1]
		push	r1 to [sp]
		call	_Read_Lcd_data
		r3=r3 lsr	0x04
		r3=r3 lsr	0x04
		pop		r1 from [sp]
		r3^=r1
		r3^=r1
		[_point_value]=r3
		r1=[sign]
		r1|=0x0010
		[sign]=r1
        retf      
//---------------------------------------------------------------------------------		   
////Filename : get_a_point_address
//Function  Description	:work out place of appoint point
//Input    : [_x][_y]
//Output   : [_page][_page_place][_page_place_bit]
//Destory  : R1,R2,R3,R4
//---------------------------------------------------------------------------------	
.public get_a_point_address		
get_a_point_address:     .proc 	
//get a point	page,page_place_bit,page_place
		r1=0x00
		[_page]=r1
		[_page_place]=r1
		[_page_place_bit]=r1		
		r1=[_x]
		[_page_place]=r1	
		r1=[_y]
		[_y]=r1
		cmp	r1,_public_area_y_l
		jae	lab_get_address_1
		r1=0xff
		[_public_area_sign]=r1
		retf
lab_get_address_1:
		cmp	r1,_public_area_y_h
		jb	lab_get_address_2
		r1=0xff
		[_public_area_sign]=r1
		retf
lab_get_address_2:
		cmp	r1,_public_area_x_l
		jae	lab_get_address_3
		r1=0xff
		[_public_area_sign]=r1
		retf
lab_get_address_3:
		cmp	r1,_public_area_x_h
		jb	lab_get_page
		r1=0xff
		[_public_area_sign]=r1
		retf	
lab_get_page:
		r1=0x00
		[_public_area_sign]=r1
		r1=[_y]
		r1+=0x01	
lab_get_page1:			
		cmp	r1,	0x08
		jbe lab_get_page_place_bit
		r1-=0x08
		r2=r1
		r1=[_page]
		r1+=0x01
		[_page]=r1
		r1=r2
		jmp lab_get_page1
lab_get_page_place_bit:
		[_page_place_bit]=r1
lab_get_address_end:	
	retf
	.endp
//////////////////////////////////////////////////////////////////////////////
//Filename : _FG_Rectangle
//Function  Description	:display a rectangle on lcd 
//Input    : [_rectangle_jumping_off_y][_rectangle_jumping_off_x]
//			 [_rectangle_end_point_x][_rectangle_end_point_y]
//the jump off point must is left downside point of rectangle.the end point must is
//right upside of rectangle 
//Mode:
//	DG_RECT_COVER			(default)
//	DG_RECT_ERASE			
//	DG_RECT_HOLLOW	
//	DG_RECT_DOTTED			
//	DG_RECT_HOLLOW_ERASE	
//	DG_RECT_DOTTED_COVER
//	DG_RECT_SOLID_XOR	
//	DG_RECT_DOTTED_XOR	
//usage: FG_Rectangle(short _rectangle_jumping_off_x,short _rectangle_jumping_off_y
//					  ,short _rectangle_end_point_x,short _rectangle_end_point_y)
//Destory  : R1,R2,R3,R4
//////////////////////////////////////////////////////////////////////////////
.public		_FG_Rectangle
_FG_Rectangle:
		PUSH BP,BP TO [SP]
		r1=sp
		r2=bp
		[bp_temp]=r2
		r2-=r1
L_Rectangle_Parameters_two:
		cmp	r2,0x06
		jne	L_Rectangle_Parameters_four
		call	F_Rectangle_Parameters_two
		jmp		L_Rectangle
L_Rectangle_Parameters_four:		
		cmp	r2,0x08
		jne		L_Rectangle
		call	F_Rectangle_Parameters_four
L_Rectangle:		
		call	rectagle		//_rectagle1
		pop	bp from	[sp]
		retf	 
//----------------------------------------------------------------------------
F_Rectangle_Parameters_two:
		r1=[R_GraphicMode_temp]
		r1&=dotted_mode_bit_clear
		[R_GraphicMode_temp]=r1
		r1=[R_GraphicMode]
		r1&=dotted_mode_bit
		r1|=[R_GraphicMode_temp]
		[R_GraphicMode_temp]=r1
		r1=[_x0]
		[_rectangle_jumping_off_x]=r1
		r1=[_y0]
		[_rectangle_jumping_off_y]=r1
		r2=[bp_temp]
		r2-=0x01
		r1=[r2]
		r1-=[_rectangle_jumping_off_y]
		[_rectangle_high]=r1
		r2-=0x01
		r1=[r2]
		r1-=[_rectangle_jumping_off_x]
		[_rectangle_wide]=r1
		retf
//----------------------------------------
F_Rectangle_Parameters_four:
		r1=[R_GraphicMode_temp]
		r1&=dotted_mode_bit_clear
		[R_GraphicMode_temp]=r1
		r1=[R_GraphicMode]
		r1&=dotted_mode_bit
		r1|=[R_GraphicMode_temp]
		[R_GraphicMode_temp]=r1
		r2=[bp_temp]
		r2-=0x01
		r1=[r2]
		[_rectangle_high]=r1
		r2-=0x01
		r1=[r2]
		[_rectangle_wide]=r1
		r2-=0x01
		r1=[r2]
		[_rectangle_jumping_off_y]=r1
		r2-=0x01
		r1=[r2]
		[_rectangle_jumping_off_x]=r1
		r1=[_rectangle_wide]
		r1-=[_rectangle_jumping_off_x]
		[_rectangle_wide]=r1
		r1=[_rectangle_high]
		r1-=[_rectangle_jumping_off_y]
		[_rectangle_high]=r1
		retf
//----------------------------------------------------------------------------
	
//////////////////////////////////////////////////////////////////////////////
//	display a rectange on lcd
//input		_rectangle_jumping_off_x,_rectangle_jumping_off_y,_rectagle_shape
//			_rectagle_mode,_rectangle_wide,_rectangle_high
//////////////////////////////////////////////////////////////////////////////
.external	_rectagle_shape
.external	_rectagle_mode
.external	_rectagle_high_temp
.external	_rectagle_wide_temp
.external	_rectangle_temp_x					//矩形x
//.public		_rectagle		
//_rectagle:		.proc
rectangle_hollow:
		r1=[_rectangle_jumping_off_x]
		[_line_x0]=r1
		r1+=[_rectangle_wide]
		r1-=0x01
		[_line_x1]=r1
		r1=[_rectangle_jumping_off_y]
		[_line_y0]=r1
		[_line_y1]=r1
		call	DISPLAY_A_LINE
		r1=[_line_x0]
		[_line_x1]=r1
		r1=[_line_y0]
		r1+=[_rectangle_high]
		r1-=0x01		
		[_line_y1]=r1
		call	DISPLAY_A_LINE	
		r1=[_line_y1]
		[_line_y0]=r1
		r1=[_line_x1]
		r1+=[_rectangle_wide]
		r1-=0x01
		[_line_x1]=r1
		call	DISPLAY_A_LINE	
		r1=[_line_x1]
		[_line_x0]=r1
		r1=[_line_y1]
		r1-=[_rectangle_high]
		r1+=0x01
		[_line_y1]=r1	
		call	DISPLAY_A_LINE
		retf

//----------------------------------------------------------
//r2-->high
rectangle_dotted:
		r1=[R_GraphicMode_temp]
		r1|=0x0004
		[R_GraphicMode_temp]=r1
		r2=0x00
		r1=[_rectangle_jumping_off_x]
		[_line_x0]=r1
		r1=[_rectangle_jumping_off_y]
		[_line_y0]=r1
		[_line_y1]=r1
		r1=[_rectangle_jumping_off_x]
		r1+=[_rectangle_wide]
		r1-=0x01
		[_line_x1]=r1
rectangle_dotted_loop:	
		push r2 to [sp]
		call	DISPLAY_A_LINE
		r1=[R_GraphicMode_temp]
		r1^=0x0004
		[R_GraphicMode_temp]=r1
		pop r2 from [sp]
		r2+=0x01
		cmp	r2,[_rectangle_high]
		je 	rectangle_dotted_end
		r1=[_line_y0]
		r1+=0x01
		[_line_y0]=r1
		[_line_y1]=r1
		jmp rectangle_dotted_loop
rectangle_dotted_end:		
		retf		
					
//////////////////////////////////////////////////////////////////////////////
//	display a rectange on lcd
// put in	[_rectangle_jumping_off_x][_rectangle_jumping_off_y]
//			[_rectangle_high][_rectangle_wide]
//////////////////////////////////////////////////////////////////////////////
.external	_rectangle_jumping_off_x					//矩形起点x
.external	_rectangle_jumping_off_y					//矩形起点y
.external	_rectangle_high								//矩形高
.external	_rectangle_wide								//矩形宽
.external	_rectangle_jumping_off_page					//矩形起点page
.external	_rectangle_jumping_off_place				//矩形起点place
.external	_rectangle_jumping_off_bit					//矩形起点bit
.external	_rectangle_end_place						//矩形终点page
.external	_rectangle_end_page							//矩形终点place
.external	_rectangle_end_bit							//矩形终点bit

//.public		_rectagle1		
//_rectagle1:		.proc
rectagle:	
		r4=[R_GraphicMode_temp]
rectangle_mod_dotted:
		r4&=line_mode_bit
		cmp r4,rect_mode_DOTTED
		jne	rectangle_mod_dotted_cove
		call	rectangle_dotted
		retf
rectangle_mod_dotted_cove:	
		r4&=line_mode_bit
		cmp r4,rect_mode_DOTTED_COVER
		jne	rectangle_mod_dotted_xor
		call	rectangle_dotted
		retf
rectangle_mod_dotted_xor:
		r4&=line_mode_bit
		cmp r4,rect_mode_DOTTED_XOR
		jne	rectangle_process3_loop_solid
		call	rectangle_dotted
		retf
rectangle_process3_loop_solid:
		r4&=line_mode_bit
		cmp r4,rect_mode_HOLLOW
		jne	rectangle_process3_loop_solid_cover
		call	rectangle_hollow			//_rectagle
		retf
rectangle_process3_loop_solid_cover:
		r4&=line_mode_bit
		cmp r4,rect_mode_HOLLOW_ERASE
		jne	rectangle_mod_part_end
		r1=[R_GraphicMode_temp]
		r1&=line_mode_bit_clear
		r1|=rect_mode_ERASE
		[R_GraphicMode_temp]=r1
		push r1 to [sp]
		call	rectangle_hollow			//_rectagle
		pop r1 from [sp]
		[R_GraphicMode_temp]=r1
		retf
rectangle_mod_part_end:		
		r1=[_rectangle_jumping_off_x]
		[_x]=r1
		r1=[_rectangle_jumping_off_y]
		[_y]=r1
		call	get_a_point_address
		r1=[_page]
		[_rectangle_jumping_off_page]=r1
		r1=[_page_place]
		[_rectangle_end_place]=r1
		r1=[_page_place_bit]
		[_rectangle_jumping_off_bit]=r1	
		
		
		r1=[_rectangle_high]
		r1-=0x01
		r1+=[_rectangle_jumping_off_y]
	//	r1-=0x01
		[_y]=r1
		r1=[_rectangle_jumping_off_x]
		[_x]=r1
		call	get_a_point_address
		r1=[_page]
		[_rectangle_end_page]=r1
		r1=[_page_place_bit]
		[_rectangle_end_bit]=r1	
		
		r1=[_rectangle_end_page]
		cmp	r1,[_rectangle_jumping_off_page]
		jae		rectangle_entity				//rectangle_1
		r1=[_rectangle_high]
		jne	rectangle_entity
//		r1=[_public_area_sign]
//		cmp	r1,0xff
//		jne	rectangle_5
//		call 	rectangle_process1
		//小于非法
//rectangle_5:	
		retf
//rectangle_1:
rectangle_entity:
		r1=[_rectangle_end_page]
		cmp	r1,[_rectangle_jumping_off_page]
		je		rectangle_2	
		//大于
		call 	rectangle_entity_frist		//rectangle_process1
		retf
rectangle_2:
		//等于
		r1=[_public_area_sign]
		cmp	r1,0xff
		jne	rectangle_3
		call 	rectangle_entity_frist		//rectangle_process1
		jmp	rectangle_4
rectangle_3:		
		call 	rectangle_entity_second		//rectangle_process2	
rectangle_4:						
		retf	

//////////////////////////////////////////////////////////////////////////////
//rectangle_process1
//rectangle_entity_frist
//////////////////////////////////////////////////////////////////////////////
.external  tab_rectangle2
.external  tab_rectangle1
.external	_rectangle_jumping_off_page_temp
//.public	rectangle_process1
//rectangle_process1:		.proc
rectangle_entity_frist:
		r1=[_rectangle_jumping_off_page]
		[_page]=r1
		r2=[_rectangle_jumping_off_bit]
        r1=tab_rectangle2;
        r1=r1+r2;
        r1=[r1]
        [rectangle_temp_bit]=r1
        call	rectangle_display_in_a_page		//rectangle_process3
        r2=[_rectangle_jumping_off_page]
//rectangle_process1_loop1:
rectangle_entity_frist_loop:
		r2=[_page]
		r2+=0x01
		[_page]=r2
		
		cmp	r2,0x08
		//jae	rectangle_process1_1
		jae	rectangle_entity_frist_1
		r1=[_public_area_sign]
		cmp	r1,	0xff
		//jne	rectangle_process1_2
		//jmp	rectangle_process1_3
		jne	rectangle_entity_frist_2
		jmp	rectangle_entity_frist_3
//rectangle_process1_2:
rectangle_entity_frist_2:
		cmp	r2,[_rectangle_end_page]
		//jae	rectangle_process1_1
		jae	rectangle_entity_frist_1
//rectangle_process1_3:
rectangle_entity_frist_3:		
		r1=0xff
		[rectangle_temp_bit]=r1
        call	rectangle_display_in_a_page		//rectangle_process3
		goto	 rectangle_entity_frist_loop		//rectangle_process1_loop1
//rectangle_process1_1:
rectangle_entity_frist_1:
		r1=[_public_area_sign]
		cmp	r1,	0xff
		//jne	rectangle_process1_4
		//jmp	rectangle_process1_5
		jne	rectangle_entity_frist_4
		jmp	rectangle_entity_frist_5
//rectangle_process1_4:
rectangle_entity_frist_4:
		r1=[_rectangle_end_page]
		[_page]=r1
		r2=[_rectangle_end_bit]
        r1=tab_rectangle1;
        r1=r1+r2;
        r1=[r1]
        [rectangle_temp_bit]=r1
        call	rectangle_display_in_a_page		//rectangle_process3	
//rectangle_process1_5:
rectangle_entity_frist_5:         	      
		retf	

//////////////////////////////////////////////////////////////////////////////
//rectangle_process2
//rectangle_entity_second
//////////////////////////////////////////////////////////////////////////////
.external		rectangle_temp_bit
.external		rectangle_temp_page
.external		_rectangle_jumping_off_bit_temp
//.public	rectangle_process2
//rectangle_process2:		.proc
rectangle_entity_second:
		r1=[_rectangle_end_page]
		[_page]=r1
		r1=[_rectangle_end_bit]
		cmp	r1,[_rectangle_jumping_off_bit]
		//jae	rectangle_process2_1
		jae	rectangle_entity_second_begin
		retf
//rectangle_process2_1:
rectangle_entity_second_begin:
		r2=[_rectangle_jumping_off_bit]
        r1=TAB_pixel;
        r1=r1+r2;
        r2=[r1]
		[rectangle_temp_bit]=r2
		r1=[_rectangle_end_bit]
		r1-=[_rectangle_jumping_off_bit]
		r3=r1
//		cmp		r3,0x01
//		je		rectangle_process2_loop
		cmp		r3,0x00
		//je		rectangle_process2_2
		je		rectangle_entity_second_2
		r2=[rectangle_temp_bit]
		[_rectangle_jumping_off_bit_temp]=r2
//		r3-=0x01
//rectangle_process2_loop:	
rectangle_entity_second_loop:
		r2=	[_rectangle_jumping_off_bit_temp]
		r2=r2 lsl	0x01
		[_rectangle_jumping_off_bit_temp]=r2
		r2+=[rectangle_temp_bit]
		[rectangle_temp_bit]=r2

⌨️ 快捷键说明

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