📄 rd_uselcdsp027.s
字号:
.module RD_UseLCDSP027.c
.area text(rom, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
_LCDSP027_DispBuff:
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
_LCDSP027_DISPCODE:
.blkb 2
.area idata
.byte 9,207
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 145,133
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 'G,37
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 33,143
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 1,5
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 3,'a
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 57,193
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 49,51
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 41,'C
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 123,201
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.area text(rom, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
.dbfunc e Set_DISP_BUFF _Set_DISP_BUFF fV
; e -> y+4
; d -> y+2
; c -> y+0
; b -> R18
; a -> R16
.even
_Set_DISP_BUFF::
.dbline -1
.dbline 67
; /***********************************************************
; * 函数库说明:SP-027液晶段码显示器驱动函数库 *
; * 版本: v1.00 *
; * 作者: 王卓然 *
; * 创建日期: 2006年5月11日 *
; * -------------------------------------------------------- *
; * [支 持 库] *
; * 支持库名称:RD_UseLCDPS027.h *
; * 需要版本: v1.00 *
; * 支持库说明:SP-027液晶段码显示器驱动函数库 *
; * -------------------------------------------------------- *
; * [版本更新] *
; * 修改: *
; * 修改日期: *
; * 版本: *
; * -------------------------------------------------------- *
; * [版本历史] *
; * -------------------------------------------------------- *
; * [说 明] *
; ***********************************************************/
;
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "RD_UseLCDSP027.h"
;
; /********************
; * 系 统 宏 定 义 *
; ********************/
;
; /*------------------*
; * 硬 件 连 接 定 义 *
; *------------------*/
; #ifndef SP027_DI
; #error None defined SP027 PIN: DI
; #endif
; #ifndef SP027_CLK
; #error None defined SP027 PIN: CLK
; #endif
;
; /********************
; * 模块变量声明区 *
; ********************/
; static unsigned char LCDSP027_DispBuff[5] = {0,0,0,0,0};
; static unsigned char LCDSP027_DISPCODE[] = {0x09,0xcf,0x91,0x85,0x47,0x25,0x21,0x8f,0x01,0x05,
; 0x03,0x61,0x39,0xc1,0x31,0x33,0x29,0x43,0x7b,0xc9};
;
; /********************
; * 函 数 声 明 区 *
; ********************/
; void Set_DISP_BUFF(char a,char b,char c,char d,char e);
; void LCDSP027_Clear(void);
; void LCDSP027_refresh_DISP_BUFF(void);
; /********************
; * 模块函数声明区 *
; ********************/
;
; static void LCDSP027_Send_Data(char Data);
;
; /***********************************************************
; * 函数说明:显示缓冲区设置函数 *
; * 输入: 要显示的5个数字量(BCD) *
; * 输出: 无 *
; * 调用函数:LCDSP027_refresh_DISP_BUFF() *
; ***********************************************************/
; void Set_DISP_BUFF(char a,char b,char c,char d,char e)
; {
.dbline 68
; LCDSP027_DispBuff[0] = a;
sts _LCDSP027_DispBuff,R16
.dbline 69
; LCDSP027_DispBuff[1] = b;
sts _LCDSP027_DispBuff+1,R18
.dbline 70
; LCDSP027_DispBuff[2] = c;
ldd R0,y+0
sts _LCDSP027_DispBuff+2,R0
.dbline 71
; LCDSP027_DispBuff[3] = d;
ldd R0,y+2
sts _LCDSP027_DispBuff+3,R0
.dbline 72
; LCDSP027_DispBuff[4] = e;
ldd R0,y+4
sts _LCDSP027_DispBuff+4,R0
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym l e 4 c
.dbsym l d 2 c
.dbsym l c 0 c
.dbsym r b 18 c
.dbsym r a 16 c
.dbend
.dbfunc e LCDSP027_refresh_DISP_BUFF _LCDSP027_refresh_DISP_BUFF fV
; n1 -> R20
.even
_LCDSP027_refresh_DISP_BUFF::
st -y,R20
.dbline -1
.dbline 82
; }
;
; /***********************************************************
; * 函数说明:刷新显示缓冲区函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:LCDSP027_Send_Data() *
; ***********************************************************/
; void LCDSP027_refresh_DISP_BUFF(void)
; {
.dbline 83
; char n = 0;
.dbline 84
; LCDSP027_Clear();
rcall _LCDSP027_Clear
.dbline 85
; for (n = 0;n<5;n++)
clr R20
rjmp L10
L7:
.dbline 86
; {
.dbline 87
; LCDSP027_Send_Data(LCDSP027_DISPCODE[LCDSP027_DispBuff[n]]);
ldi R24,<_LCDSP027_DispBuff
ldi R25,>_LCDSP027_DispBuff
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R30,z+0
clr R31
ldi R24,<_LCDSP027_DISPCODE
ldi R25,>_LCDSP027_DISPCODE
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _LCDSP027_Send_Data
.dbline 88
; }
L8:
.dbline 85
inc R20
L10:
.dbline 85
cpi R20,5
brlo L7
X0:
.dbline 89
; SP027_CLK = LOW;
in R24,0x15
andi R24,223
out 0x15,R24
.dbline 90
; SP027_CLK = HIGH;
in R24,0x15
ori R24,32
out 0x15,R24
.dbline -2
L6:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym r n1 20 c
.dbend
.dbfunc e LCDSP027_Clear _LCDSP027_Clear fV
; n1 -> R16
.even
_LCDSP027_Clear::
.dbline -1
.dbline 100
; }
;
; /***********************************************************
; * 函数说明:清屏函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; void LCDSP027_Clear(void)
; {
.dbline 101
; char n = 0;
.dbline 102
; for (n = 0;n<40;n++)
clr R16
rjmp L15
L12:
.dbline 103
; {
.dbline 104
; SP027_CLK = LOW;
in R24,0x15
andi R24,223
out 0x15,R24
.dbline 105
; SP027_DI = HIGH;
in R24,0x15
ori R24,16
out 0x15,R24
.dbline 106
; SP027_CLK = HIGH;
in R24,0x15
ori R24,32
out 0x15,R24
.dbline 107
; }
L13:
.dbline 102
inc R16
L15:
.dbline 102
cpi R16,40
brlo L12
X1:
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbsym r n1 16 c
.dbend
.dbfunc s LCDSP027_Send_Data _LCDSP027_Send_Data fV
; n1 -> R20
; Data -> R10
.even
_LCDSP027_Send_Data:
st -y,R10
st -y,R20
mov R10,R16
.dbline -1
.dbline 117
; }
;
; /***********************************************************
; * 函数说明:发送数据函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; static void LCDSP027_Send_Data(char Data)
; {
.dbline 118
; char n = 0;
.dbline 119
; for (n = 0;n<8;n++)
clr R20
rjmp L20
L17:
.dbline 120
; {
.dbline 121
; SP027_CLK = LOW;
in R24,0x15
andi R24,223
out 0x15,R24
.dbline 122
; if (Data<<n>>7)
mov R16,R10
mov R17,R20
rcall lsl8
mov R2,R16
lsr R2
lsr R2
lsr R2
lsr R2
lsr R2
lsr R2
lsr R2
breq L21
X2:
.dbline 123
; {
.dbline 124
; SP027_DI = HIGH;
in R24,0x15
ori R24,16
out 0x15,R24
.dbline 125
; }
rjmp L22
L21:
.dbline 127
; else
; {
.dbline 128
; SP027_DI = LOW;
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 129
; }
L22:
.dbline 130
; SP027_CLK = HIGH;
in R24,0x15
ori R24,32
out 0x15,R24
.dbline 131
; }
L18:
.dbline 119
inc R20
L20:
.dbline 119
cpi R20,8
brlo L17
X3:
.dbline -2
L16:
.dbline 0 ; func end
ld R20,y+
ld R10,y+
ret
.dbsym r n1 20 c
.dbsym r Data 10 c
.dbend
; }
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -