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

📄 lcd1.asm

📁 我在公司做的基于430F206的互感器现场效验仪
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;>>>> 	                        Lcd_wc=CSRDIR_RG;       wait();
	LACK	76
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	29
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	30
;>>>> 	                                Lcd_wd=Cursor_X;        wait();
	MAR	* ,AR2
	SBRK	3
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	31
;>>>> 	                                Lcd_wd=Cursor_Y;        wait();
	MAR	*+
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	32
;>>>> 	                        Lcd_wc=MREAD;   wait();
	LACK	67
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	33
;>>>> 	                                Read_Data=Lcd_rd&0x00ff;
	IN	* ,0301h
	LAC	* ,AR2
	ANDK	255
	ADRK	3
	SACL	* 
	.line	34
;>>>> 	                                        wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	36
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	37
;>>>> 	                                Lcd_wd=Cursor_X;        wait();
	MAR	* ,AR2
	SBRK	4
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	38
;>>>> 	                                Lcd_wd=Cursor_Y;        wait();
	MAR	*+
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	39
;>>>> 	                        Lcd_wc=MWRITE;  wait();
	LACK	66
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	40
;>>>> 	                                Lcd_wd=Dot_Type|Read_Data;
	MAR	* ,AR2
	ADRK	2
	LAC	*+
	OR	* ,AR1
	SACL	* 
	OUT	* ,0300h
	.line	41
;>>>> 	                                        wait();
;>>>> 	                 else
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	B	L12
L16:
	.line	46
;>>>> 	                        Dot_Type=0xff>>(X0&0x07);
	LACK	7
	MAR	* ,AR2
	AND	* ,AR0
	CMPL
	SACL	* 
	LT	* 
	LACK	255
	SACL	* 
	SSXM
	LACT	* ,AR2
	ADRK	7-LF5
	SACH	* ,1,AR0
	.line	47
;>>>> 	                        Lcd_wc=CSRDIR_RG;       wait();
	LACK	76
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	48
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	49
;>>>> 	                                Lcd_wd=Cursor_X;        wait();
	MAR	* ,AR2
	SBRK	3
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	50
;>>>> 	                                Lcd_wd=Cursor_Y;        wait();
	MAR	*+
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	51
;>>>> 	                        Lcd_wc=MREAD;   wait();
	LACK	67
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	52
;>>>> 	                                Read_Data=Lcd_rd&0x00ff;
	IN	* ,0301h
	LAC	* ,AR2
	ANDK	255
	ADRK	3
	SACL	* 
	.line	53
;>>>> 	                                wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	55
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	56
;>>>> 	                                Lcd_wd=Cursor_X;        wait();
	MAR	* ,AR2
	SBRK	4
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	57
;>>>> 	                                Lcd_wd=Cursor_Y;        wait();
	MAR	*+
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	58
;>>>> 	                        Lcd_wc=MWRITE;  wait();
	LACK	66
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	59
;>>>> 	                                Lcd_wd=Dot_Type|Read_Data;
	MAR	* ,AR2
	ADRK	2
	LAC	*+
	OR	* ,AR1
	SACL	* 
	OUT	* ,0300h
	.line	60
;>>>> 	                                        wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	61
;>>>> 	                        for (Counter=(X0>>3);Counter<((X1>>3)-1);Counter++)
	RSXM
	MAR	* ,AR2
	SBRK	8-LF5
	LAC	* ,12
	ADRK	6-LF5
	SACH	* ,1
	SBRK	8-LF5
	LAC	* ,12,AR0
	SBLK	1,15
	SACH	* ,1
	ZALS	* ,AR2
	ADRK	8-LF5
	SUBS	* 
	BLEZ	L19
	MAR	* ,AR0
L18:
	.line	63
;>>>> 	                                        Lcd_wd=0xff;
	LACK	255
	SACL	* 
	OUT	* ,0300h
	.line	64
;>>>> 	                                        wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	61
	MAR	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	SBRK	8-LF5
	LAC	* ,12,AR0
	SBLK	1,15
	SACH	* ,1
	ZALS	* ,AR2
	ADRK	8-LF5
	SUBS	* ,AR0
	BGZ	L18
L19:
	.line	67
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	68
;>>>> 	                                Lcd_wd=Cursor_X+(X1>>3)-(X0>>3);
	MAR	* ,AR2
	SBRK	8-LF5
	LAC	* ,12
	ADRK	6-LF5
	ADD	* ,15,AR1
	SACH	*+,1,AR2
	SBRK	4-LF5
	LAC	* ,12,AR1
	MAR	*-,AR0
	SACH	* ,1,AR1
	LAC	* ,AR0
	SUB	* ,AR1
	SACL	* 
	OUT	* ,0300h
	.line	69
;>>>> 	                                        wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	70
;>>>> 	                                Lcd_wd=Cursor_Y;        wait();
	MAR	* ,AR2
	ADRK	5-LF5
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	71
;>>>> 	                        Lcd_wc=MREAD;   wait();
	LACK	67
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	72
;>>>> 	                                Read_Data=Lcd_rd&0x00ff;
	IN	* ,0301h
	LAC	* ,AR2
	ANDK	255
	ADRK	3
	SACL	* 
	.line	73
;>>>> 	                                        wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	75
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	76
;>>>> 	                                Lcd_wd=Cursor_X+(X1>>3)-(X0>>3);
	MAR	* ,AR2
	SBRK	10-LF5
	LAC	* ,12
	ADRK	6-LF5
	ADD	* ,15,AR1
	SACH	*+,1,AR2
	SBRK	4-LF5
	LAC	* ,12,AR1
	MAR	*-,AR0
	SACH	* ,1,AR1
	LAC	* ,AR0
	SUB	* ,AR1
	SACL	* 
	OUT	* ,0300h
	.line	77
;>>>> 	                                        wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	78
;>>>> 	                                Lcd_wd=Cursor_Y;        wait();
	MAR	* ,AR2
	ADRK	5-LF5
	OUT	* ,0300h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	79
;>>>> 	                        Lcd_wc=MWRITE;  wait();
	LACK	66
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	80
;>>>> 	                        Dot_Type=(0xff<<(7-X1&0x07))&0xff;
	LACK	7
	MAR	* ,AR2
	SBRK	7-LF5
	SUB	* ,AR0
	ANDK	7
	SACL	* 
	LT	* 
	LACK	255
	SACL	* 
	LACT	* ,AR2
	ANDK	255
	ADRK	9-LF5
	SACL	* 
	.line	81
;>>>> 	                                Lcd_wd=Dot_Type|Read_Data;
	LAC	*+
	OR	* ,AR1
	SACL	* 
	OUT	* ,0300h
	.line	82
;>>>> 	                                wait();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	B	L12
L13:
	.line	86
;>>>> 	        else if(abs((int)X1-(int)X0)>fabs((int)Y1-(int)Y0))
	SSXM
	LAC	* 
	ADRK	2
	SUB	*-,AR1
	CALL	F$$ITOF
	MAR	*-
	ZALS	* 
	ANDK	07FFFh
	SACL	*+,AR2
	SSXM
	LAC	* 
	ADRK	2
	SUB	* ,AR1
	ABS
	CALL	F$$ITOF
	CALL	F$$GT
	BZ	L20
	.line	88
;>>>> 	                 k=((double)Y1-(double)Y0)/((double)X1-(double)X0);      
	MAR	* ,AR2
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	SBRK	2
	ZALS	*+,AR1
	CALL	F$$UTOF
	CALL	F$$SUB
	MAR	* ,AR2
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	SBRK	2
	ZALS	* ,AR1
	CALL	F$$UTOF
	CALL	F$$SUB
	CALL	F$$DIV
	MAR	*-
	ZALH	*-
	ADDS	* ,AR2
	ADRK	12-LF5
	SACL	*+
	SACH	* 
	.line	89
;>>>> 	                 if (X0>X1)     
	SBRK	10-LF5
	ZALS	* 
	SBRK	2
	SUBS	* 
	BLEZ	L21
	.line	91
;>>>> 	                         for(Cursor_X=X1;Cursor_X<=X0;Cursor_X++)
	LAC	* 
	ADRK	6-LF5
	SACL	* 
	ZALS	* 
	SBRK	4-LF5
	SUBS	* 
	BGZ	L12
	SBRK	3
L22:
	.line	93
;>>>> 	                                 Cursor_Y=(int)((double)(Cursor_X-X1)*k+(double)Y1);
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	ADRK	12-LF5
	LAC	*+,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+,AR2
	SBRK	6
	ZALS	* 
	SBRK	6-LF5
	SUBS	* ,AR1
	ANDK	0FFFFh
	CALL	F$$UTOF
	CALL	F$$MUL
	CALL	F$$ADD
	CALL	F$$FTOI
	MAR	* ,AR2
	ADRK	7-LF5
	SACL	* 
	.line	94
;>>>> 	                                 Lcd_Point(Cursor_X,Cursor_Y);
;>>>> 	                 else
	LAC	*-,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_Lcd_Point
	SBRK	2
	.line	91
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	4-LF5
	SUBS	* 
	SBRK	3
	BLEZ	L22
	B	L12
L21:
	.line	100
;>>>> 	                         for(Cursor_X=X0;Cursor_X<=X1;Cursor_X++)
	ADRK	2
	LAC	* 
	ADRK	4-LF5
	SACL	* 
	ZALS	* 
	SBRK	6-LF5
	SUBS	* 
	BGZ	L12
	MAR	*+
L25:
	.line	102
;>>>> 	                                 Cursor_Y=(int)((double)(Cursor_X-X0)*k+(double)Y0);
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	ADRK	10-LF5
	LAC	*+,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+,AR2
	SBRK	6
	ZALS	* 
	SBRK	4-LF5
	SUBS	* ,AR1
	ANDK	0FFFFh
	CALL	F$$UTOF
	CALL	F$$MUL
	CALL	F$$ADD
	CALL	F$$FTOI
	MAR	* ,AR2
	ADRK	5-LF5
	SACL	* 
	.line	103
;>>>> 	                                 Lcd_Point(Cursor_X,Cursor_Y);
;>>>> 	        else
	LAC	*-,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_Lcd_Point
	SBRK	2
	.line	100
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	6-LF5
	SUBS	*+
	BLEZ	L25
	B	L12
L20:
	.line	111
;>>>> 	                 k=((double)X1-(double)X0)/((double)Y1-(double)Y0);      
	MAR	* ,AR2
	MAR	*-
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	SBRK	2
	ZALS	* ,AR1
	CALL	F$$UTOF
	CALL	F$$SUB
	MAR	* ,AR2
	ADRK	3
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	SBRK	2
	ZALS	* ,AR1
	CALL	F$$UTOF
	CALL	F$$SUB
	CALL	F$$DIV
	MAR	*-
	ZALH	*-
	ADDS	* ,AR2
	ADRK	11-LF5
	SACL	*+
	SACH	* 
	.line	112
;>>>> 	                 if (Y0>Y1)     
	SBRK	11-LF5
	ZALS	* 
	SBRK	2
	SUBS	* 
	BLEZ	L27
	.line	114
;>>>> 	                         for(Cursor_Y=Y1;Cursor_Y<=Y0;Cursor_Y++)
	LAC	* 
	ADRK	8-LF5
	SACL	* 
	ZALS	* 
	SBRK	6-LF5
	SUBS	* 
	BGZ	L12
	MAR	*-
L28:
	.line	116
;>>>> 	                                 Cursor_X=(int)((double)(Cursor_Y-Y1)*k+(double)X1);
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	ADRK	11-LF5
	LAC	*+,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+,AR2
	SBRK	5
	ZALS	* 
	SBRK	8-LF5
	SUBS	* ,AR1
	ANDK	0FFFFh
	CALL	F$$UTOF
	CALL	F$$MUL
	CALL	F$$ADD
	CALL	F$$FTOI
	MAR	* ,AR2
	ADRK	7-LF5
	SACL	*+
	.line	117
;>>>> 	                                 Lcd_Point(Cursor_X,Cursor_Y);
;>>>> 	                 else
	LAC	*-,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_Lcd_Point
	SBRK	2
	.line	114
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	6-LF5
	SUBS	*-
	BLEZ	L28
	B	L12
L27:
	.line	123
;>>>> 	                         for(Cursor_Y=Y0;Cursor_Y<=Y1;Cursor_Y++)
	ADRK	2
	LAC	* 
	ADRK	6-LF5
	SACL	* 
	ZALS	* 
	SBRK	8-LF5
	SUBS	* 
	BGZ	L12
	ADRK	3
L31:
	.line	125
;>>>> 	                                 Cursor_X=(int)((double)(Cursor_Y-Y0)*k+(double)X0);
	ZALS	* ,AR1
	CALL	F$$UTOF
	MAR	* ,AR2
	ADRK	9-LF5
	LAC	*+,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+,AR2
	SBRK	5
	ZALS	* 
	SBRK	6-LF5
	SUBS	* ,AR1
	ANDK	0FFFFh
	CALL	F$$UTOF
	CALL	F$$MUL
	CALL	F$$ADD
	CALL	F$$FTOI
	MAR	* ,AR2
	ADRK	5-LF5
	SACL	*+
	.line	126
;>>>> 	                                 Lcd_Point(Cursor_X,Cursor_Y);
	LAC	*-,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_Lcd_Point
	SBRK	2
	.line	123
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	8-LF5
	SUBS	* 
	ADRK	3
	BLEZ	L31
L12:
EPI0_5:
	.line	132
	MAR	* ,AR1
	SBRK	9
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	341,000000000H,8

	.sym	_Lcd_Cctw,_Lcd_Cctw,32,2,0
	.globl	_Lcd_Cctw

	.func	360
;>>>> 	void    Lcd_Cctw(unsigned int Row,unsigned int Column,unsigned int Dot1,unsigned int Dot2,pointer *Data_Add,unsigned int Flag)
******************************************************
* FUNCTION DEF : _Lcd_Cctw
******************************************************
_Lcd_Cctw:

LF6	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+,AR2

	.sym	_Row,-3+LF6,14,9,16
	.sym	_Column,-4+LF6,14,9,16
	.sym	_Dot1,-5+LF6,14,9,16
	.sym	_Dot2,-6+LF6,14,9,16
	.sym	_Data_Add,-7+LF6,30,9,16
	.sym	_Flag,-8+LF6,14,9,16
	.sym	_Cursor_X,1,14,1,16
	.sym	_Cursor_Y,2,14,1,16
	.sym	_Counter1,3,14,1,16
	.sym	_Counter2,4,14,1,16
	.line	3
;>>>> 	        unsigned  int   Cursor_X,Cursor_Y;
;>>>> 	        unsigned  int   Counter1,Counter2;
	.line	6
;>>>> 	        Cursor_X=((Row<<3)*Lcd_AP+Column+0x4000)&0x00ff;
	LARK	AR2,-3+LF6
	MAR	*0+
	LAC	*-,3,AR0
	SACL	* 
	LT	* ,AR2
	MPYK	40
	PAC
	ADDK	16384
	ADD	* 
	ANDK	255
	ADRK	5-LF6
	SACL	* 
	.line	7
;>>>> 	        Cursor_Y=(((Row<<3)*Lcd_AP+Column+0x4000)&0xff00)>>8;
	SBRK	4-LF6
	LAC	*-,3,AR0
	SACL	* 
	LT	* 
	LACK	40
	SACL	*
	MPYU	*,AR2
	PAC
	ADDK	16384
	ADDS	* ,AR0
	ANDK	65280
	SACL	* 
	RSXM
	LAC	* ,7,AR2
	ADRK	6-LF6
	SACH	* ,1,AR0
	.line	8
;>>>> 	        Lcd_wc=CSRDIR_DW;       wait();
	LACK	79
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	9
;>>>> 	        for(Counter2=0;Counter2<(Dot1>>3);Counter2++)
	LACK	0
	MAR	* ,AR2
	ADRK	2
	SACL	* 
	SBRK	9-LF6
	LAC	* ,12,AR0
	SACH	* ,1
	ZALS	* ,AR2
	ADRK	9-LF6
	SUBS	* 
	BLEZ	L34
	SBRK	3
	MAR	* ,AR0
L33:
	.line	11
;>>>> 	                        Lcd_wc=CSRW;    wait();
	LACK	70
	SACL	* 
	OUT	* ,0301h
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	.line	12
;>>>> 	                                Lcd_wd=Cursor_X;        wait();
	MAR	* ,AR2

⌨️ 快捷键说明

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