📄 lcd1.asm
字号:
;>>>> 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 + -