📄 lcd.asm
字号:
.line 9
;>>>> PBDATDIR=PBDATDIR&0x00FF; //IOPB口为输入
LARK AR3,28826
LACK 255
AND *
SACL * ,AR2
.line 10
;>>>> if(E==1) PADATDIR=0x0FF18; //E1=1
LARK AR2,-3+LF7
MAR *0+
LAC *
SUBK 1
BNZ L29
MAR * ,AR3
SBRK 2
SPLK #-232,*
B L30
L29:
.line 11
;>>>> else PADATDIR=0x0FF20; //E1=0
MAR * ,AR3
SBRK 2
SPLK #-224,*
L30:
.line 12
;>>>> PFDATDIR=(PFDATDIR|0x0018)&0x0fffb;// LCD_RW = 1;
;>>>> //LCD_DI = 0;
;>>>> //LCD_E = 1;
LACK 24
SBRK 2
OR *
ANDK 65531
SACL * ,AR2
.line 15
;>>>> for(i=0; i<2; i++){}
LACK 0
ADRK 5-LF7
SACL *
LAC *
SUBK 2
BGEZ L32
L31:
LAC *
ADDK 1
SACL *
LAC *
SUBK 2
BLZ L31
L32:
.line 16
;>>>> PFDATDIR=PFDATDIR&0x0FFef; //LCD_E = 0;
LARK AR3,28822
LACK 65519
MAR * ,AR3
AND *
SACL *
.line 17
;>>>> E1FLAG=PBDATDIR&0x0020; // 读液晶状态
LACK 32
ADRK 4
AND * ,AR2
MAR *-
SACL *
.line 18
;>>>> if(E1FLAG==0x0020) break; //如液晶关闭,则退出循环
LAC *
SUBK 32
BZ L28
.line 20
SBRK 4-LF7
B L27
L28:
EPI0_7:
.line 21
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 180,000000000H,3
.sym _LCD1INIT,_LCD1INIT,32,2,0
.globl _LCD1INIT
.func 184
;>>>> void LCD1INIT(int E)
******************************************************
* FUNCTION DEF : _LCD1INIT
******************************************************
_LCD1INIT:
LF8 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR2
.sym _E,-3+LF8,4,9,16
.line 2
.line 3
;>>>> DISOFF1(E); //关显示E1
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
CALL _DISOFF1
MAR *-,AR2
.line 4
;>>>> TRANS1(0x0A4,E); //不静态显示驱动
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
LACK 164
SACL *+
CALL _TRANS1
SBRK 2
.line 5
;>>>> TRANS1(0x0A9,E); //占空比为1/32
MAR * ,AR2
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
LACK 169
SACL *+
CALL _TRANS1
SBRK 2
.line 6
;>>>> TRANS1(0x0E2,E); //复位
MAR * ,AR2
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
LACK 226
SACL *+
CALL _TRANS1
SBRK 2
.line 7
;>>>> TRANS1(0x0A0,E); //ADC选择正常输出
MAR * ,AR2
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
LACK 160
SACL *+
CALL _TRANS1
SBRK 2
.line 8
;>>>> CLEAR1(E); //清屏
MAR * ,AR2
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
CALL _CLEAR1
MAR *-,AR2
.line 9
;>>>> DISP1(E); //开显示
LARK AR2,-3+LF8
MAR *0+
LAC * ,AR1
SACL *+
CALL _DISP1
MAR *-
EPI0_8:
.line 11
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 194,000000000H,1
.sym _DISPLAY1,_DISPLAY1,36,2,0
.globl _DISPLAY1
.func 198
;>>>> DISPLAY1(n,m,E,PAGADD,Yaddress)
;>>>> int n,PAGADD,Yaddress,E; // 定义所需要的局部变量
******************************************************
* FUNCTION DEF : _DISPLAY1
******************************************************
_DISPLAY1:
LF9 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _n,-3+LF9,4,9,16
.sym _m,-4+LF9,4,9,16
.sym _E,-5+LF9,4,9,16
.sym _PAGADD,-6+LF9,4,9,16
.sym _Yaddress,-7+LF9,4,9,16
.sym _K,1,4,1,16
.sym _TEMP,2,2,1,16
.line 3
;>>>> int K;
;>>>> char TEMP;
.line 6
;>>>> TRANS1(0x0C0,E); // 从第0行开始显示
LARK AR2,-5+LF9
MAR *0+
LAC * ,AR1
SACL *+
LACK 192
SACL *+
CALL _TRANS1
SBRK 2
.line 7
;>>>> TRANS1(PAGADD,E); // 送需要显示的页地址
MAR * ,AR2
LARK AR2,-5+LF9
MAR *0+
LAC *-,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _TRANS1
SBRK 2
.line 8
;>>>> n=n*m;
MAR * ,AR2
LARK AR2,-4+LF9
MAR *0+
LT *+
MPY *
SPL *
.line 9
;>>>> for(K=0;K<m;K++,Yaddress++)
LACK 0
ADRK 4-LF9
SACL *
LAC *
SBRK 5-LF9
SUB *
BGEZ L35
ADRK 5-LF9
SSXM ;;;
L34:
.line 11
;>>>> TEMP=table1[K+n];
LAC *
RSXM
ADLK _table1+0,0
SSXM
SBRK 4-LF9
ADD * ,AR0
SACL *
LAR AR3,* ,AR3
LAC * ,AR2
ADRK 5-LF9
SACL *
.line 12
;>>>> WRITE1(TEMP,Yaddress,E); // 送需要显示的数据字节
SBRK 7-LF9
LAC * ,AR1
SACL *+,AR2
SBRK 2
LAC * ,AR1
SACL *+,AR2
ADRK 9-LF9
LAC * ,AR1
SACL *+
CALL _WRITE1
SBRK 3
.line 9
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
SBRK 8-LF9
LAC *
ADDK 1
SACL *
ADRK 8-LF9
LAC *
SBRK 5-LF9
SUB *
ADRK 5-LF9
BLZ L34
L35:
EPI0_9:
.line 14
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 211,000000000H,3
.sym _DISPLAY2,_DISPLAY2,36,2,0
.globl _DISPLAY2
.func 215
;>>>> DISPLAY2(n,m,E,PAGADD,Yaddress)
;>>>> int n,PAGADD,Yaddress,E; // 定义所需要的局部变量
******************************************************
* FUNCTION DEF : _DISPLAY2
******************************************************
_DISPLAY2:
LF10 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _n,-3+LF10,4,9,16
.sym _m,-4+LF10,4,9,16
.sym _E,-5+LF10,4,9,16
.sym _PAGADD,-6+LF10,4,9,16
.sym _Yaddress,-7+LF10,4,9,16
.sym _K,1,4,1,16
.sym _TEMP,2,2,1,16
.line 3
;>>>> int K;
;>>>> char TEMP;
.line 6
;>>>> TRANS1(0x0C0,E); // 从第0行开始显示
LARK AR2,-5+LF10
MAR *0+
LAC * ,AR1
SACL *+
LACK 192
SACL *+
CALL _TRANS1
SBRK 2
.line 7
;>>>> TRANS1(PAGADD,E); // 送需要显示的页地址
MAR * ,AR2
LARK AR2,-5+LF10
MAR *0+
LAC *-,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _TRANS1
SBRK 2
.line 8
;>>>> n=n*m;
MAR * ,AR2
LARK AR2,-4+LF10
MAR *0+
LT *+
MPY *
SPL *
.line 9
;>>>> for(K=0;K<m;K++,Yaddress++)
LACK 0
ADRK 4-LF10
SACL *
LAC *
SBRK 5-LF10
SUB *
BGEZ L37
ADRK 5-LF10
SSXM ;;;
L36:
.line 11
;>>>> TEMP=table2[K+n];
LAC *
RSXM
ADLK _table2+0,0
SSXM
SBRK 4-LF10
ADD * ,AR0
SACL *
LAR AR3,* ,AR3
LAC * ,AR2
ADRK 5-LF10
SACL *
.line 12
;>>>> WRITE1(TEMP,Yaddress,E); // 送需要显示的数据字节
SBRK 7-LF10
LAC * ,AR1
SACL *+,AR2
SBRK 2
LAC * ,AR1
SACL *+,AR2
ADRK 9-LF10
LAC * ,AR1
SACL *+
CALL _WRITE1
SBRK 3
.line 9
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
SBRK 8-LF10
LAC *
ADDK 1
SACL *
ADRK 8-LF10
LAC *
SBRK 5-LF10
SUB *
ADRK 5-LF10
BLZ L36
L37:
EPI0_10:
.line 14
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 228,000000000H,3
.sym _LCD_INIT,_LCD_INIT,32,2,0
.globl _LCD_INIT
.func 230
;>>>> void LCD_INIT()
******************************************************
* FUNCTION DEF : _LCD_INIT
******************************************************
_LCD_INIT:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> LCDIOinit();
CALL _LCDIOinit
.line 4
;>>>> LCD1INIT(1); // LCD的E1边初始化
LACK 1
SACL *+
CALL _LCD1INIT
MAR *-
.line 5
;>>>> LCD1INIT(2); // LCD的E2边初始化
;>>>> //com=PFDATDIR;
LACK 2
SACL *+
CALL _LCD1INIT
MAR *-
EPI0_11:
.line 7
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 236,000000000H,1
.sym _LCD_disp1,_LCD_disp1,32,2,0
.globl _LCD_disp1
.func 239
;>>>> void LCD_disp1()
******************************************************
* FUNCTION DEF : _LCD_disp1
******************************************************
_LCD_disp1:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> LCD_INIT();
;>>>> //显示电流给定值Iref
CALL _LCD_INIT
.line 6
;>>>> DISPLAY1(0,8,1,0xB8,0x40);//I
LACK 64
SACL *+
LACK 184
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 0
SACL *+
CALL _DISPLAY1
SBRK 5
.line 7
;>>>> DISPLAY1(2,8,1,0xB8,0x48);//r
LACK 72
SACL *+
LACK 184
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 2
SACL *+
CALL _DISPLAY1
SBRK 5
.line 8
;>>>> DISPLAY1(3,8,1,0xB8,0x50);//e
LACK 80
SACL *+
LACK 184
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 3
SACL *+
CALL _DISPLAY1
SBRK 5
.line 9
;>>>> DISPLAY1(4,8,1,0xB8,0x58);//f
;>>>> //显示电流反馈值Ifb
LACK 88
SACL *+
LACK 184
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 4
SACL *+
CALL _DISPLAY1
SBRK 5
.line 11
;>>>> DISPLAY1(0,8,2,0xB8,0x40);//I
LACK 64
SACL *+
LACK 184
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 0
SACL *+
CALL _DISPLAY1
SBRK 5
.line 12
;>>>> DISPLAY1(4,8,2,0xB8,0x48);//f
LACK 72
SACL *+
LACK 184
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 4
SACL *+
CALL _DISPLAY1
SBRK 5
.line 13
;>>>> DISPLAY1(5,8,2,0xB8,0x50);//b
;>>>> //显示转速给定值Vref
LACK 80
SACL *+
LACK 184
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 5
SACL *+
CALL _DISPLAY1
SBRK 5
.line 15
;>>>> DISPLAY1(1,8,1,0xBa,0x40);//V
LACK 64
SACL *+
LACK 186
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 1
SACL *+
CALL _DISPLAY1
SBRK 5
.line 16
;>>>> DISPLAY1(2,8,1,0xBa,0x48);//r
LACK 72
SACL *+
LACK 186
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 2
SACL *+
CALL _DISPLAY1
SBRK 5
.line 17
;>>>> DISPLAY1(3,8,1,0xBa,0x50);//e
LACK 80
SACL *+
LACK 186
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 3
SACL *+
CALL _DISPLAY1
SBRK 5
.line 18
;>>>> DISPLAY1(4,8,1,0xBa,0x58);//f
;>>>> //显示电流反馈值Ifb
LACK 88
SACL *+
LACK 186
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 4
SACL *+
CALL _DISPLAY1
SBRK 5
.line 20
;>>>> DISPLAY1(1,8,2,0xBa,0x40);//V
LACK 64
SACL *+
LACK 186
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 1
SACL *+
CALL _DISPLAY1
SBRK 5
.line 21
;>>>> DISPLAY1(4,8,2,0xBa,0x48);//f
LACK 72
SACL *+
LACK 186
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 4
SACL *+
CALL _DISPLAY1
SBRK 5
.line 22
;>>>> DISPLAY1(5,8,2,0xBa,0x50);//b
;>>>> //显示PWM频率fpwm
LACK 80
SACL *+
LACK 186
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 5
SACL *+
CALL _DISPLAY1
SBRK 5
.line 24
;>>>> DISPLAY1(4,8,1,0xBc,0x40);//f
LACK 64
SACL *+
LACK 188
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 4
SACL *+
CALL _DISPLAY1
SBRK 5
.line 25
;>>>> DISPLAY1(7,8,1,0xBc,0x48);//p
LACK 72
SACL *+
LACK 188
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 7
SACL *+
CALL _DISPLAY1
SBRK 5
.line 26
;>>>> DISPLAY1(8,8,1,0xBc,0x50);//w
LACK 80
SACL *+
LACK 188
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
SACL *+
CALL _DISPLAY1
SBRK 5
.line 27
;>>>> DISPLAY1(9,8,1,0xBc,0x58);//m
;>>>> //显示PWM占空比Dpwm
LACK 88
SACL *+
LACK 188
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 9
SACL *+
CALL _DISPLAY1
SBRK 5
.line 29
;>>>> DISPLAY1(6,8,2,0xBc,0x40);//D
LACK 64
SACL *+
LACK 188
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 6
SACL *+
CALL _DISPLAY1
SBRK 5
.line 30
;>>>> DISPLAY1(7,8,2,0xBc,0x48);//p
LACK 72
SACL *+
LACK 188
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 7
SACL *+
CALL _DISPLAY1
SBRK 5
.line 31
;>>>> DISPLAY1(8,8,2,0xBc,0x50);//w
LACK 80
SACL *+
LACK 188
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
SACL *+
CALL _DISPLAY1
SBRK 5
.line 32
;>>>> DISPLAY1(9,8,2,0xBc,0x58);//m
;>>>> //显示换向的状态,0~5中的一个.St
LACK 88
SACL *+
LACK 188
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 9
SACL *+
CALL _DISPLAY1
SBRK 5
.line 34
;>>>> DISPLAY1(10,8,1,0xBe,0x40);//H
LACK 64
SACL *+
LACK 190
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 10
SACL *+
CALL _DISPLAY1
SBRK 5
.line 35
;>>>> DISPLAY1(11,8,1,0xBe,0x48);//S
LACK 72
SACL *+
LACK 190
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 11
SACL *+
CALL _DISPLAY1
SBRK 5
.line 36
;>>>> DISPLAY1(12,8,1,0xBe,0x50);//t
;>>>> //显示霍尔换向表,6个Hmap
LACK 80
SACL *+
LACK 190
SACL *+
LACK 1
SACL *+
LACK 8
SACL *+
LACK 12
SACL *+
CALL _DISPLAY1
SBRK 5
.line 38
;>>>> DISPLAY1(10,8,2,0xBe,0x40);//H
LACK 64
SACL *+
LACK 190
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 10
SACL *+
CALL _DISPLAY1
SBRK 5
.line 39
;>>>> DISPLAY1(9,8,2,0xBe,0x48);//m
LACK 72
SACL *+
LACK 190
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 9
SACL *+
CALL _DISPLAY1
SBRK 5
.line 40
;>>>> DISPLAY1(13,8,2,0xBe,0x50);//a
LACK 80
SACL *+
LACK 190
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 13
SACL *+
CALL _DISPLAY1
SBRK 5
.line 41
;>>>> DISPLAY1(14,8,2,0xBe,0x58);//p
LACK 88
SACL *+
LACK 190
SACL *+
LACK 2
SACL *+
LACK 8
SACL *+
LACK 14
SACL *+
CALL _DISPLAY1
SBRK 5
EPI0_12:
.line 43
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 281,000000000H,1
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -