📄 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,255
.area data(ram, con, rel)
.dbfile H:\单片机\源程序\2007全国电子设计大赛\键盘显示模块\RD_UseLCDSP027.c
.blkb 2
.area idata
.byte 247,23
.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_SP027 _Set_DISP_BUFF_SP027 fV
; e -> y+4
; d -> y+2
; c -> y+0
; b -> R18
; a -> R16
.even
_Set_DISP_BUFF_SP027::
.dbline -1
.dbline 135
; /***********************************************************
; * 函数库说明: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
; # define SP027_NO_ICON 17
; # define SP027_MID_LINE 18
; # define SP027_CIRCLE 19
; /********************
; * 模块变量声明区 *
; ********************/
; 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,0xff,0xf7,0x17};
;
; /********************
; * 函 数 声 明 区 *
; ********************/
; void Set_DISP_BUFF_SP027(char a,char b,char c,char d,char e);
; void LCDSP027_refresh_DISP_BUFF(void);
; void LCDSP027_Clear(void);
; void LCDSP027_PrintN(int16 nNumber);
; void LCDSP027_PrintU(uint16 nNumber);
;
; /********************
; * 模块函数声明区 *
; ********************/
;
; static void LCDSP027_Send_Data(char Data);
; /*
; void LCDSP027_PrintU(uint16 nNumber)
; {
; uint16 wAbsNUM = nNumber;
; uint8 NumberA = 0;
; uint8 NumberB = 0;
; uint8 NumberC = 0;
; uint8 NumberD = 0;
;
; NumberD = wAbsNUM % 10;
; wAbsNUM = wAbsNUM * 0.1;
; NumberC = wAbsNUM % 10;
; wAbsNUM = wAbsNUM * 0.1;
; NumberB = wAbsNUM % 10;
; wAbsNUM = wAbsNUM * 0.1;
; NumberA = wAbsNUM % 10;
;
; Set_DISP_BUFF_SP027
; (
; NumberA,
; NumberB,
; NumberC,
; NumberD,
; SP027_NO_ICON
; );
; }
;
; void LCDSP027_PrintN(int16 nNumber)
; {
; uint16 wAbsNUM = ABS(nNumber);
; uint8 NumberA = 0;
; uint8 NumberB = 0;
; uint8 NumberC = 0;
;
; //NumberC = wAbsNUM % 10;
; //wAbsNUM = wAbsNUM * 0.1;
; //NumberB = wAbsNUM % 10;
; //wAbsNUM = wAbsNUM * 0.1;
; //NumberA = wAbsNUM % 10;
;
; if (nNumber < 0)
; {
; Set_DISP_BUFF_SP027
; (
; SP027_MID_LINE,
; NumberA,
; NumberB,
; NumberC,
; SP027_CIRCLE
; );
; }
; else
; {
; Set_DISP_BUFF_SP027
; (
; SP027_NO_ICON,
; NumberA,
; NumberB,
; NumberC,
; SP027_CIRCLE
; );
; }
; }*/
;
; /***********************************************************
; * 函数说明:显示缓冲区设置函数 *
; * 输入: 要显示的5个数字量(BCD) *
; * 输出: 无 *
; * 调用函数:LCDSP027_refresh_DISP_BUFF() *
; ***********************************************************/
; void Set_DISP_BUFF_SP027(char a,char b,char c,char d,char e)
; {
.dbline 136
; LCDSP027_DispBuff[0] = a;
sts _LCDSP027_DispBuff,R16
.dbline 137
; LCDSP027_DispBuff[1] = b;
sts _LCDSP027_DispBuff+1,R18
.dbline 138
; LCDSP027_DispBuff[2] = c;
ldd R0,y+0
sts _LCDSP027_DispBuff+2,R0
.dbline 139
; LCDSP027_DispBuff[3] = d;
ldd R0,y+2
sts _LCDSP027_DispBuff+3,R0
.dbline 140
; 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 152
;
; //LCDSP027_refresh_DISP_BUFF();
; }
;
; /***********************************************************
; * 函数说明:刷新显示缓冲区函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:LCDSP027_Send_Data() *
; ***********************************************************/
; void LCDSP027_refresh_DISP_BUFF(void)
; {
.dbline 153
; char n = 0;
.dbline 155
; //LCDSP027_Clear();
; for (n = 0;n<5;n++)
clr R20
xjmp L10
L7:
.dbline 156
; {
.dbline 157
; if (n == 2)
cpi R20,2
brne L11
X0:
.dbline 158
; {
.dbline 159
; LCDSP027_Send_Data
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
andi R16,254
xcall _LCDSP027_Send_Data
.dbline 163
; (
; LCDSP027_DISPCODE[LCDSP027_DispBuff[n]] & ~BIT(0)
; );
; }
xjmp L12
L11:
.dbline 165
; else
; {
.dbline 166
; 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
xcall _LCDSP027_Send_Data
.dbline 167
; }
L12:
.dbline 169
;
; }
L8:
.dbline 155
inc R20
L10:
.dbline 155
cpi R20,5
brlo L7
X1:
.dbline 170
; SP027_CLK = LOW;
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 171
; SP027_CLK = HIGH;
in R24,0x15
ori R24,2
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
.even
_LCDSP027_Clear::
sbiw R28,5
.dbline -1
.dbline 181
; }
;
; /***********************************************************
; * 函数说明:清屏函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; void LCDSP027_Clear(void)
; {
.dbline 191
; /*
; char n = 0;
; for (n = 0;n<40;n++)
; {
; SP027_CLK = LOW;
; SP027_DI = HIGH;
; SP027_CLK = HIGH;
; }
; */
; Set_DISP_BUFF_SP027
ldi R24,17
std y+4,R24
std y+2,R24
std y+0,R24
ldi R18,17
ldi R16,17
xcall _Set_DISP_BUFF_SP027
.dbline -2
L13:
.dbline 0 ; func end
adiw R28,5
ret
.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 208
; (
; SP027_NO_ICON,
; SP027_NO_ICON,
; SP027_NO_ICON,
; SP027_NO_ICON,
; SP027_NO_ICON
; );
; }
;
; /***********************************************************
; * 函数说明:发送数据函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; static void LCDSP027_Send_Data(char Data)
; {
.dbline 209
; char n = 0;
.dbline 211
;
; for (n = 0;n<8;n++)
clr R20
xjmp L18
L15:
.dbline 212
; {
.dbline 213
; SP027_CLK = LOW;
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 214
; if (Data<<n>>7)
mov R16,R10
mov R17,R20
xcall lsl8
mov R2,R16
lsr R2
lsr R2
lsr R2
lsr R2
lsr R2
lsr R2
lsr R2
breq L19
X2:
.dbline 215
; {
.dbline 216
; SP027_DI = HIGH;
in R24,0x15
ori R24,1
out 0x15,R24
.dbline 217
; }
xjmp L20
L19:
.dbline 219
; else
; {
.dbline 220
; SP027_DI = LOW;
in R24,0x15
andi R24,254
out 0x15,R24
.dbline 221
; }
L20:
.dbline 222
; SP027_CLK = HIGH;
in R24,0x15
ori R24,2
out 0x15,R24
.dbline 223
; }
L16:
.dbline 211
inc R20
L18:
.dbline 211
cpi R20,8
brlo L15
X3:
.dbline -2
L14:
.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 + -