📄 lhy.asm
字号:
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SUBK 10
BLZ L15
L16:
.line 15
;>>>> Lcd_wc=HDOT_SCR; wait();
LACK 90
MAR * ,AR0
SACL *
OUT * ,011h
L18:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L18
.line 16
;>>>> Lcd_wd=0x00; wait();
LACK 0
SACL *
OUT * ,010h
L19:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L19
.line 17
;>>>> Lcd_wc=OVLAY; wait();
LACK 91
SACL *
OUT * ,011h
L20:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L20
.line 18
;>>>> Lcd_wd=0x08; wait();
LACK 8
SACL *
OUT * ,010h
L21:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L21
.line 20
;>>>> Lcd_Clear(0,0x8000,0x00);
MAR * ,AR1
LACK 0
SACL *+
LALK 1,15
SACL *+
LACK 0
SACL *+
CALL _Lcd_Clear
SBRK 3
.line 21
;>>>> Lcd_wc=DISP_ON; wait();
LACK 89
MAR * ,AR0
SACL *
OUT * ,011h
L22:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L22
.line 22
;>>>> Lcd_wd=0x54; wait();
LACK 84
SACL *
OUT * ,010h
L23:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L23
.line 23
;>>>> Lcd_wc=CSRFORM; wait();
LACK 93
SACL *
OUT * ,011h
L24:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L24
.line 24
;>>>> Lcd_wd=0x07; wait();
LACK 7
SACL *
OUT * ,010h
L25:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L25
.line 25
;>>>> Lcd_wd=0x87; wait();
LACK 135
SACL *
OUT * ,010h
L26:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L26
.line 26
;>>>> Lcd_wc=CSRDIR_DW; wait();
LACK 79
SACL *
OUT * ,011h
L27:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L27
EPI0_2:
.line 28
MAR * ,AR1
SBRK 3
LAR AR0,*-
PSHD *
RET
.endfunc 120,000000000H,2
.sym _Lcd_Point,_Lcd_Point,32,2,0
.globl _Lcd_Point
.func 131
;>>>> void Lcd_Point(unsigned int Dot_X,unsigned int Dot_Y)
******************************************************
* FUNCTION DEF : _Lcd_Point
******************************************************
_Lcd_Point:
LF3 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR2
.sym _Dot_X,-3+LF3,14,9,16
.sym _Dot_Y,-4+LF3,14,9,16
.sym _Cursor_X,1,14,1,16
.sym _Cursor_Y,2,14,1,16
.sym _Counter,3,14,1,16
.sym _Read_Data,4,14,1,16
.line 2
;>>>> unsigned int Cursor_X,Cursor_Y;
;>>>> unsigned int Counter;
;>>>> unsigned int Read_Data;
.line 6
;>>>> Counter=Dot_X&0x0007;
LACK 7
LARK AR2,-3+LF3
MAR *0+
AND *
ADRK 6-LF3
SACL *
.line 7
;>>>> Cursor_X=(Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0x00ff;
RSXM
SBRK 6-LF3
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR1
MPYK 40
PAC
ADDK 16384
ADD * ,AR2
ANDK 255
ADRK 5-LF3
SACL *
.line 8
;>>>> Cursor_Y=((Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0xff00)>>8;
SBRK 4-LF3
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR0
LACK 40
SACL *
MPYU *,AR1
PAC
ADDK 16384
ADDS * ,AR0
ANDK 65280
SACL *
LAC * ,7,AR2
ADRK 6-LF3
SACH * ,1,AR0
.line 9
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L28:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L28
.line 10
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L29:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L29
.line 11
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L30:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L30
.line 12
;>>>> Lcd_wc=MREAD; wait();
LACK 67
SACL *
OUT * ,011h
L31:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L31
.line 13
;>>>> Read_Data=Lcd_rd&0x00ff;
IN * ,011h
LAC * ,AR2
ANDK 255
LARK AR2,4
MAR *0+
SACL * ,AR0
L32:
.line 14
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L32
.line 16
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L33:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L33
.line 17
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L34:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L34
.line 18
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L35:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L35
.line 19
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L36:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L36
.line 20
;>>>> Lcd_wd=(0x80>>Counter)|Read_Data;
MAR * ,AR2
LARK AR2,3
MAR *0+
ZALS *+,AR0
CMPL
SACL *
LT *
LACK 128
SACL *
SSXM
LACT *
SACH * ,1
LAC * ,AR2
OR * ,AR1
SACL *
OUT * ,010h,AR0
L37:
.line 21
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L37
EPI0_3:
.line 22
MAR * ,AR1
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 152,000000000H,5
.sym _Lcd_Dot,_Lcd_Dot,32,2,0
.globl _Lcd_Dot
.func 166
;>>>> void Lcd_Dot(unsigned int Dot_X,unsigned int Dot_Y,unsigned int Dot_Type)
******************************************************
* FUNCTION DEF : _Lcd_Dot
******************************************************
_Lcd_Dot:
LF4 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,6
LAR AR0,*0+,AR2
.sym _Dot_X,-3+LF4,14,9,16
.sym _Dot_Y,-4+LF4,14,9,16
.sym _Dot_Type,-5+LF4,14,9,16
.sym _Cursor_X,1,14,1,16
.sym _Cursor_Y,2,14,1,16
.sym _Counter,3,14,1,16
.sym _Loop,4,14,1,16
.sym _Read_Data,5,14,1,16
.line 2
;>>>> unsigned int Cursor_X,Cursor_Y;
;>>>> unsigned int Counter,Loop;
;>>>> unsigned int Read_Data;
.line 6
;>>>> Counter=0x8-(Dot_X&0x0007);
LACK 7
LARK AR2,-3+LF4
MAR *0+
AND *
NEG
ADDK 8
ADRK 6-LF4
SACL *
.line 7
;>>>> Dot_Type=Dot_Type<<Counter;
LT *
SBRK 8-LF4
LACT *
SACL *
.line 8
;>>>> Cursor_X=(Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0x00ff;
RSXM
ADRK 2
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR1
MPYK 40
PAC
ADDK 16384
ADD * ,AR2
ANDK 255
ADRK 5-LF4
SACL *
.line 9
;>>>> Cursor_Y=((Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0xff00)>>8;
SBRK 4-LF4
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR0
LACK 40
SACL *
MPYU *,AR1
PAC
ADDK 16384
ADDS * ,AR0
ANDK 65280
SACL *
LAC * ,7,AR2
ADRK 6-LF4
SACH * ,1,AR0
.line 10
;>>>> Lcd_wc=CSRDIR_RG; wait();
LACK 76
SACL *
OUT * ,011h
L38:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L38
.line 11
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L39:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L39
.line 12
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L40:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L40
.line 13
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L41:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L41
.line 14
;>>>> Lcd_wc=MREAD; wait();
LACK 67
SACL *
OUT * ,011h
L42:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L42
.line 15
;>>>> Read_Data=Lcd_rd&0x00ff;
IN * ,011h
LAC * ,AR2
ANDK 255
LARK AR2,5
MAR *0+
SACL * ,AR0
L43:
.line 16
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L43
.line 18
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L44:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L44
.line 19
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L45:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L45
.line 20
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L46:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L46
.line 21
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L47:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L47
.line 22
;>>>> Lcd_wd=((Dot_Type&0xff00)>>8)|Read_Data;
LACK 65280
MAR * ,AR2
LARK AR2,-5+LF4
MAR *0+
AND * ,AR0
SACL *
LAC * ,7
SACH * ,1
LAC * ,AR2
ADRK 10-LF4
OR * ,AR1
SACL *
OUT * ,010h,AR0
L48:
.line 23
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L48
.line 25
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L49:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L49
.line 26
;>>>> Lcd_wd=Cursor_X+1; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC * ,AR1
ADDK 1
SACL *
OUT * ,010h,AR0
L50:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L50
.line 27
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L51:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L51
.line 28
;>>>> Lcd_wc=MREAD; wait();
LACK 67
SACL *
OUT * ,011h
L52:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L52
.line 29
;>>>> Read_Data=Lcd_rd&0x00ff;
IN * ,011h
LAC * ,AR2
ANDK 255
LARK AR2,5
MAR *0+
SACL * ,AR0
L53:
.line 30
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L53
.line 32
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L54:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L54
.line 33
;>>>> Lcd_wd=Cursor_X+1; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC * ,AR1
ADDK 1
SACL *
OUT * ,010h,AR0
L55:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L55
.line 34
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L56:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L56
.line 35
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L57:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L57
.line 37
;>>>> Lcd_wd=(Dot_Type&0x00ff)|Read_Data;
LACK 255
MAR * ,AR2
LARK AR2,-5+LF4
MAR *0+
AND *
ADRK 10-LF4
OR * ,AR1
SACL *
OUT * ,010h,AR0
L58:
.line 38
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L58
EPI0_4:
.line 39
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 204,000000000H,6
.sym _Lcd_Line,_Lcd_Line,32,2,0
.globl _Lcd_Line
.func 220
;>>>> void Lcd_Line(unsigned int X0,unsigned int Y0,unsigned int X1,unsigned int Y1)
******************************************************
* FUNCTION DEF : _Lcd_Line
******************************************************
_Lcd_Line:
LF5 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,8
LAR AR0,*0+,AR2
.sym _X0,-3+LF5,14,9,16
.sym _Y0,-4+LF5,14,9,16
.sym _X1,-5+LF5,14,9,16
.sym _Y1,-6+LF5,14,9,16
.sym _Cursor_X,1,14,1,16
.sym _Cursor_Y,2,14,1,16
.sym _Counter,3,14,1,16
.sym _Dot_Type,4,14,1,16
.sym _Read_Data,5,14,1,16
.sym _k,6,7,1,32
.line 2
;>>>> unsigned int Cursor_X,Cursor_Y;
;>>>> unsigned int Counter,Dot_Type;
;>>>> unsigned int Read_Data;
;>>>> double k;
.line 8
;>>>> if(X0==X1)
LARK AR2,-3+LF5
MAR *0+
LAC *
SBRK 2
SUB *
BNZ L59
.line 10
;>>>> if (Y0>Y1) {Counter=Y0;Y0=Y1;Y1=Counter;}
MAR *+
ZALS *
SBRK 2
SUBS *
BLEZ L60
ADRK 2
LAC *
ADRK 7-LF5
SACL *
SBRK 9-LF5
LAC *
ADRK 2
SACL *
ADRK 7-LF5
LAC *
SBRK 9-LF5
SACL *
L60:
.line 11
;>>>> if (Y1>=239) Y1=239;
ZALS *
SUBK 239
BLZ L61
LACK 239
SACL *
L61:
.line 12
;>>>> for (Counter=Y0;Counter<=Y1;Counter++)
ADRK 2
LAC *
ADRK 7-LF5
SACL *
ZALS *
SBRK 9-LF5
SUBS *
BGZ L64
ADRK 9-LF5
L62:
.line 13
;>>>> Lcd_Point(X0,Counter);
LAC * ,AR1
SACL *+,AR2
SBRK 6-LF5
LAC * ,AR1
SACL *+
CALL _Lcd_Point
SBRK 2
.line 12
MAR * ,AR2
LARK AR2,3
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SBRK 9-LF5
SUBS *
ADRK 9-LF5
BLEZ L62
B L64
L59:
.line 15
;>>>> else if(Y0==Y1)
MAR *+
LAC *
SBRK 2
SUB *
BNZ L65
.line 17
;>>>> if (X0>X1) {Counter=X0;X0=X1;X1=Counter;}
ADRK 3
ZALS *
SBRK 2
SUBS *
BLEZ L66
ADRK 2
LAC *
ADRK 6-LF5
SACL *
SBRK 8-LF5
LAC *
ADRK 2
SACL *
ADRK 6-LF5
LAC *
SBRK 8-LF5
SACL *
L66:
.line 18
;>>>> if (X1>=319) X1=319;
ZALS *
SUBK 319
BLZ L67
SPLK #319,*
L67:
.line 20
;>>>> Cursor_X=(Y0*Lcd_AP+(X0>>3)+0x4000)&0x00ff;
RSXM
ADRK 2
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR1
MPYK 40
PAC
ADDK 16384
ADD * ,AR2
ANDK 255
ADRK 5-LF5
SACL *
.line 21
;>>>> Cursor_Y=((Y0*Lcd_AP+(X0>>3)+0x4000)&0xff00)>>8;
SBRK 4-LF5
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR0
LACK 40
SACL *
MPYU *,AR1
PAC
ADDK 16384
ADDS * ,AR0
ANDK 65280
SACL *
LAC * ,7,AR2
ADRK 6-LF5
SACH * ,1
.line 23
;>>>> if ((X0>>3)==(X1>>3))
SBRK 7-LF5
LAC * ,12,AR1
SACH *+,1,AR2
ADRK 2
LAC * ,12,AR1
MAR *-,AR0
SACH * ,1
ZALS * ,AR1
SUBS *
BNZ L68
.line 25
;>>>> 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
.line 26
;>>>> Read_Data=0xff<<(7-X1&0x07);
LACK 7
SBRK 9-LF5
SUB * ,AR0
ANDK 7
SACL *
LT *
LACK 255
SACL *
LACT * ,AR2
ADRK 10-LF5
SACL *
.line 27
;>>>> Dot_Type=Dot_Type&Read_Data;
LAC *-
AND *
SACL * ,AR0
.line 28
;>>>> Lcd_wc=CSRDIR_RG; wait();
LACK 76
SACL *
OUT * ,011h
L69:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L69
.line 29
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L70:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L70
.line 30
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L71:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L71
.line 31
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L72:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L72
.line 32
;>>>> Lcd_wc=MREAD; wait();
LACK 67
SACL *
OUT * ,011h
L73:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -