📄 lhy.asm
字号:
.line 9
ADRK 3
LAC *
ADDK 1
SACL *
RSXM
SBRK 9-LF6
LAC * ,12,AR0
SACH * ,1
ZALS * ,AR2
ADRK 9-LF6
SUBS * ,AR0
BGZ L119
L120:
EPI0_6:
.line 31
MAR * ,AR1
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 400,000000000H,5
.sym _Lcd_Character,_Lcd_Character,32,2,0
.globl _Lcd_Character
.func 414
;>>>> void Lcd_Character(unsigned int Row,unsigned int Column,unsigned int Character)
******************************************************
* FUNCTION DEF : _Lcd_Character
******************************************************
_Lcd_Character:
LF7 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _Row,-3+LF7,14,9,16
.sym _Column,-4+LF7,14,9,16
.sym _Character,-5+LF7,14,9,16
.sym _Cursor_X,1,14,1,16
.sym _Cursor_Y,2,14,1,16
.line 2
;>>>> unsigned int Cursor_X,Cursor_Y;
.line 4
;>>>> Cursor_X=(Row*Lcd_AP+Column+0x0000)&0x00ff;
LARK AR2,-3+LF7
MAR *0+
LT *-
MPYK 40
PAC
ADD *
ANDK 255
ADRK 5-LF7
SACL *
.line 5
;>>>> Cursor_Y=((Row*Lcd_AP+Column+0x0000)&0xff00)>>8;
SBRK 4-LF7
LT *-,AR0
LACK 40
SACL *
MPYU *,AR2
PAC
ADDS * ,AR0
ANDK 65280
SACL *
RSXM
LAC * ,7,AR2
ADRK 6-LF7
SACH * ,1,AR0
.line 6
;>>>> Lcd_wc=CSRDIR_RG; wait();
LACK 76
SACL *
OUT * ,011h
L131:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L131
.line 7
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L132:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L132
.line 8
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L133:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L133
.line 9
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L134:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L134
.line 10
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L135:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L135
.line 11
;>>>> Lcd_wd=Character; wait();
MAR * ,AR2
LARK AR2,-5+LF7
MAR *0+
OUT * ,010h,AR0
L136:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L136
EPI0_7:
.line 12
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 425,000000000H,3
.sym _Lcd_Ascii,_Lcd_Ascii,32,2,0
.globl _Lcd_Ascii
.func 442
;>>>> void Lcd_Ascii(unsigned int Row,unsigned int Column,unsigned int Character,unsigned int Flag)
******************************************************
* FUNCTION DEF : _Lcd_Ascii
******************************************************
_Lcd_Ascii:
LF8 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,2
LAR AR0,*0+,AR2
.sym _Row,-3+LF8,14,9,16
.sym _Column,-4+LF8,14,9,16
.sym _Character,-5+LF8,14,9,16
.sym _Flag,-6+LF8,14,9,16
.sym _Data_Add,1,30,1,16
.line 2
;>>>> pointer *Data_Add;
.line 5
;>>>> Data_Add=Ascii+((Character-0x20)<<4);
LARK AR2,-5+LF8
MAR *0+
LAC * ,4,AR1
SACL *
LAC * ,AR2
ADLK _Ascii+-512,0
ADRK 6-LF8
SACL *
.line 6
;>>>> Lcd_Cctw(Row,Column,8,16,Data_Add,Flag);
SBRK 7-LF8
LAC * ,AR1
SACL *+,AR2
ADRK 7-LF8
LAC * ,AR1
SACL *+
LACK 16
SACL *+
LACK 8
SACL *+,AR2
SBRK 5-LF8
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _Lcd_Cctw
SBRK 6
EPI0_8:
.line 7
SBRK 3
LAR AR0,*-
PSHD *
RET
.endfunc 448,000000000H,2
.sym _Lcd_Out_Bmp,_Lcd_Out_Bmp,32,2,0
.globl _Lcd_Out_Bmp
.func 465
;>>>> void Lcd_Out_Bmp(unsigned int Dot_X,unsigned int Dot_Y,unsigned int Dot1,unsigned int Dot2,pointer *Data_Add,unsigned int Flag)
******************************************************
* FUNCTION DEF : _Lcd_Out_Bmp
******************************************************
_Lcd_Out_Bmp:
LF9 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR2
.sym _Dot_X,-3+LF9,14,9,16
.sym _Dot_Y,-4+LF9,14,9,16
.sym _Dot1,-5+LF9,14,9,16
.sym _Dot2,-6+LF9,14,9,16
.sym _Data_Add,-7+LF9,30,9,16
.sym _Flag,-8+LF9,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=(Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0x00ff;
RSXM
LARK AR2,-3+LF9
MAR *0+
LAC *-,12,AR1
SACH * ,1,AR2
LT * ,AR1
MPYK 40
PAC
ADDK 16384
ADD * ,AR2
ANDK 255
ADRK 5-LF9
SACL *
.line 7
;>>>> Cursor_Y=((Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0xff00)>>8;
SBRK 4-LF9
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-LF9
SACH * ,1,AR0
.line 8
;>>>> Lcd_wc=CSRDIR_RG; wait();
LACK 76
SACL *
OUT * ,011h
L137:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L137
.line 9
;>>>> for(Counter2=0;Counter2<Dot2;Counter2++)
LACK 0
MAR * ,AR2
LARK AR2,4
MAR *0+
SACL *
ZALS *
SBRK 10-LF9
SUBS *
BGEZ L139
MAR * ,AR0
L138:
.line 11
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L140:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L140
.line 12
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L141:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L141
.line 13
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L142:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L142
.line 14
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L143:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L143
.line 15
;>>>> for(Counter1=0;Counter1<(Dot1>>3);Counter1++)
LACK 0
MAR * ,AR2
LARK AR2,3
MAR *0+
SACL *
RSXM
SBRK 8-LF9
LAC * ,12,AR0
SACH * ,1
ZALS * ,AR2
ADRK 8-LF9
SUBS *
BLEZ L145
SBRK 11-LF9
L144:
.line 17
;>>>> if(Flag==Abnormal)
LAC *
SUBK 1
BNZ L146
.line 19
;>>>> Lcd_wd=~(*(Data_Add++));
MAR *+
LAR AR3,* ,AR3
LAC *+,AR2
SAR AR3,* ,AR1
CMPL
SACL *
OUT * ,010h,AR0
L147:
.line 20
;>>>> wait();
;>>>> else
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L147
B L148
L146:
.line 24
;>>>> Lcd_wd=*(Data_Add++);
MAR *+
LAR AR3,* ,AR3
OUT *+,010h,AR2
SAR AR3,* ,AR3
LAC * ,AR0
L149:
.line 25
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L149
L148:
.line 15
MAR * ,AR2
LARK AR2,3
MAR *0+
LAC *
ADDK 1
SACL *
RSXM
SBRK 8-LF9
LAC * ,12,AR0
SACH * ,1
ZALS * ,AR2
ADRK 8-LF9
SUBS *
SBRK 11-LF9
BGZ L144
L145:
.line 28
;>>>> Cursor_Y=Cursor_Y+((Cursor_X+Lcd_AP)>>8);
LARK AR2,1
MAR *0+
ZALS *+,AR0
ADDK 40
SACL *
LAC * ,7,AR2
ADD * ,15
SACH *-,1
.line 29
;>>>> Cursor_X=(Cursor_X+Lcd_AP)&0x00ff;
LAC *
ADDK 40
ANDK 255
SACL *
.line 9
ADRK 3
LAC *
ADDK 1
SACL *
ZALS *
SBRK 10-LF9
SUBS * ,AR0
BLZ L138
L139:
EPI0_9:
.line 32
MAR * ,AR1
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 496,000000000H,5
.sym _Lcd_Real,_Lcd_Real,32,2,0
.globl _Lcd_Real
.func 511
;>>>> void Lcd_Real(unsigned int Row,unsigned int Column,double Real_Data,unsigned int Dot_Bit)
******************************************************
* FUNCTION DEF : _Lcd_Real
******************************************************
_Lcd_Real:
LF10 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,23
LAR AR0,*0+,AR2
.sym _Row,-3+LF10,14,9,16
.sym _Column,-4+LF10,14,9,16
.sym _Real_Data,-6+LF10,7,9,32
.sym _Dot_Bit,-7+LF10,14,9,16
.sym _Dis_Data,1,52,1,320,,20
.sym _Counter,21,4,1,16
.sym _Dot_Flag,22,4,1,16
.line 2
;>>>> int Dis_Data[20];
.line 4
;>>>> int Counter=1;
LACK 1
LARK AR2,21
MAR *0+
SACL *+
.line 5
;>>>> int Dot_Flag=0;
LACK 0
SACL * ,AR1
.line 7
;>>>> if (Real_Data<0)
LALK FL0
RPTK 1
TBLR *+
MAR * ,AR2
SBRK 28-LF10
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$LT
BZ L150
.line 9
;>>>> Dis_Data[0]='-';
LACK 45
MAR * ,AR2
ADRK 6-LF10
SACL *
.line 10
;>>>> Real_Data=fabs(Real_Data);
SBRK 6-LF10
ZALH *-
ANDK 0FFFEh,15
OR *
SACL *+
SACH *
B L151
L150:
.line 12
;>>>> else Dis_Data[0]=' ';
LACK 32
MAR * ,AR2
ADRK 6-LF10
SACL *
L151:
.line 14
;>>>> while (Real_Data>=10.0)
MAR * ,AR1
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LARK AR2,-6+LF10
MAR *0+
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$GE
BZ L153
MAR * ,AR2
MAR *-,AR1
L152:
.line 16
;>>>> Real_Data=Real_Data/10.0;
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$DIV
MAR *-
ZALH *-
ADDS * ,AR2
SACL *+
SACH *
.line 17
;>>>> Dot_Flag++;
ADRK 27-LF10
LAC *
ADDK 1
SACL *-
.line 18
;>>>> Counter=1;
LACK 1
SACL * ,AR1
.line 14
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
SBRK 27-LF10
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$LT
BZ L152
L153:
.line 21
;>>>> while (Real_Data<1)
LALK FL2
RPTK 1
TBLR *+
MAR * ,AR2
LARK AR2,-6+LF10
MAR *0+
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$LT
BZ L155
MAR * ,AR2
MAR *-,AR1
L154:
.line 23
;>>>> Real_Data=Real_Data*10.0;
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS * ,AR2
SACL *+
SACH *
.line 24
;>>>> Dis_Data[1]='0';
LACK 48
ADRK 7-LF10
SACL *+
.line 25
;>>>> Dis_Data[2]='.';
LACK 46
SACL *
.line 26
;>>>> Counter=3-Dot_Flag;
LACK 3
ADRK 19
SUB *-
SACL *+,AR0
.line 27
;>>>> Dis_Data[Counter]='0';
SACL *
LAR AR3,* ,AR3
MAR *0+
LACK 48
MAR *+
SACL * ,AR2
.line 28
;>>>> Dot_Flag--;
LAC *
SUBK 1
SACL * ,AR1
.line 21
LALK FL2
RPTK 1
TBLR *+
MAR * ,AR2
SBRK 28-LF10
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$GE
BZ L154
L155:
.line 31
;>>>> for (Counter=Counter;Counter<=(Dot_Bit+1);Counter++)
MAR * ,AR2
LARK AR2,21
MAR *0+
LAC *
SACL *
SBRK 28-LF10
ZALS * ,AR1
ADDK 1
SACL * ,AR2
ADRK 28-LF10
ZALS * ,AR1
SUBS *
BGZ L157
MAR * ,AR2
SBRK 27-LF10
L156:
.line 33
;>>>> Dis_Data[Counter]=(int)Real_Data+0x30;
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$FTOI
ADDK 48
SACL *+,AR2
ADRK 26-LF10
LAR AR3,* ,AR3
MAR *0+,AR1
MAR *-
LAC * ,AR3
MAR *+
SACL * ,AR1
.line 34
;>>>> Real_Data=(Real_Data-(Dis_Data[Counter]-0x30))*10.0;
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LAR AR3,* ,AR3
MAR *0+
SSXM
MAR *+
LAC * ,AR1
SUBK 48
CALL F$$ITOF
MAR * ,AR2
SBRK 27-LF10
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$SUB
CALL F$$MUL
MAR *-
ZALH *-
ADDS * ,AR2
SACL *+
SACH *
.line 35
;>>>> if (Dot_Flag==0)
ADRK 27-LF10
LAC *
BNZ L158
.line 37
;>>>> Counter=Counter+1;
MAR *-
LAC *
ADDK 1
SACL *
.line 38
;>>>> Dis_Data[Counter]='.';
LAR AR3,* ,AR3
MAR *0+
LACK 46
MAR *+
SACL *
L158:
.line 40
;>>>> Dot_Flag--;
MAR * ,AR2
LARK AR2,22
MAR *0+
LAC *
SUBK 1
SACL *-
.line 31
LAC *
ADDK 1
SACL *
SBRK 28-LF10
ZALS * ,AR1
ADDK 1
SACL * ,AR2
ADRK 28-LF10
ZALS * ,AR1
SUBS * ,AR2
SBRK 27-LF10
BLEZ L156
L157:
.line 43
;>>>> for (Counter=0;Counter<Dot_Bit+2;Counter++)
LACK 0
MAR * ,AR2
LARK AR2,21
MAR *0+
SACL *
SBRK 28-LF10
ZALS * ,AR1
ADDK 2
SACL * ,AR2
ADRK 28-LF10
ZALS * ,AR1
SUBS *
BGEZ L160
MAR * ,AR2
L159:
.line 44
;>>>> Lcd_Character(Row,Column++,Dis_Data[Counter]);
LAR AR3,* ,AR3
MAR *0+
MAR *+
LAC * ,AR1
SACL *+,AR2
SBRK 25-LF10
LAC *
ADDK 1
SACL *+,AR1
SUBK 1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _Lcd_Character
SBRK 3
.line 43
MAR * ,AR2
LARK AR2,21
MAR *0+
LAC *
ADDK 1
SACL *
SBRK 28-LF10
ZALS * ,AR1
ADDK 2
SACL * ,AR2
ADRK 28-LF10
ZALS * ,AR1
SUBS * ,AR2
BLZ L159
L160:
EPI0_10:
.line 46
MAR * ,AR1
SBRK 24
LAR AR0,*-
PSHD *
RET
.endfunc 556,000000000H,23
.sym _Lcd_Exp,_Lcd_Exp,32,2,0
.globl _Lcd_Exp
.func 571
;>>>> void Lcd_Exp(unsigned int Row,unsigned int Column,double Real_Data,unsigned int Dot_Bit)
******************************************************
* FUNCTION DEF : _Lcd_Exp
******************************************************
_Lcd_Exp:
LF11 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,23
LAR AR0,*0+,AR2
.sym _Row,-3+LF11,14,9,16
.sym _Column,-4+LF11,14,9,16
.sym _Real_Data,-6+LF11,7,9,32
.sym _Dot_Bit,-7+LF11,14,9,16
.sym _Dis_Data,1,52,1,320,,20
.sym _Counter,21,4,1,16
.sym _Dot_Flag,22,4,1,16
.line 2
;>>>> int Dis_Data[20];
.line 4
;>>>> int Counter=1;
LACK 1
LARK AR2,21
MAR *0+
SACL *+
.line 5
;>>>> int Dot_Flag=0;
LACK 0
SACL * ,AR1
.line 7
;>>>> if (Real_Data<0)
LALK FL0
RPTK 1
TBLR *+
MAR * ,AR2
SBRK 28-LF11
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$LT
BZ L161
.line 9
;>>>> Dis_Data[0]='-';
LACK 45
MAR * ,AR2
ADRK 6-LF11
SACL *
.line 10
;>>>> Real_Data=fabs(Real_Data);
SBRK 6-LF11
ZALH *-
ANDK 0FFFEh,15
OR *
SACL *+
SACH *
B L162
L161:
.line 12
;>>>> else Dis_Data[0]=' ';
LACK 32
MAR * ,AR2
ADRK 6-LF11
SACL *
L162:
.line 14
;>>>> while (Real_Data>=10.0)
MAR * ,AR1
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LARK AR2,-6+LF11
MAR *0+
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$GE
BZ L164
MAR * ,AR2
MAR *-,AR1
L163:
.line 16
;>>>> Real_Data=Real_Data/10.0;
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$DIV
MAR *-
ZALH *-
ADDS * ,AR2
SACL *+
SACH *
.line 17
;>>>> Dot_Flag++;
ADRK 27-LF11
LAC *
ADDK 1
SACL * ,AR1
.line 14
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
SBRK 28-LF11
LAC *+,AR1
SACL *+,AR2
LAC *-,AR1
SACL *+
CALL F$$LT
BZ L163
L164:
.line 20
;>>>> while (Real_Data<1)
LALK FL2
RPTK 1
TBLR *+
MAR * ,AR2
LARK AR2,-6+LF11
MAR *0+
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL F$$LT
BZ L166
MAR * ,AR2
MAR *-,AR1
L165:
.line 22
;>>>> Real_Data=Real_Data*10.0;
LALK FL1
RPTK 1
TBLR *+
MAR * ,AR2
LAC *+,AR1
S
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -