⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_uselcdsp027.s

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 S
字号:
	.module RD_UseLCDSP027.c
	.area text(rom, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
_LCDSP027_DispBuff:
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
_LCDSP027_DISPCODE:
	.blkb 2
	.area idata
	.byte 9,207
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 145,133
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 'G,37
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 33,143
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 1,5
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 3,'a
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 57,193
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 49,51
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 41,255
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.blkb 2
	.area idata
	.byte 247,23
	.area data(ram, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.area text(rom, con, rel)
	.dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_UseLCDSP027.c
	.dbfunc e LCDSP027_PrintN _LCDSP027_PrintN fV
;       NumberA1 -> R10
;       NumberB1 -> R12
;       NumberC1 -> R14
;       wAbsNUM0 -> R10,R11
;        nNumber -> R20,R21
	.even
_LCDSP027_PrintN::
	rcall push_xgsetF0FC
	movw R20,R16
	sbiw R28,5
	.dbline -1
	.dbline 92
; /***********************************************************
; *   函数库说明: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: SP027_DI
; #endif
; #ifndef SP027_CLK
;     #error None defined SP027 PIN: SP027_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)
; {
	.dbline 93
;     uint16 wAbsNUM = ABS(nNumber);
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge L2
X0:
	movw R22,R20
	com R22
	com R23
	subi R22,0xFF
	sbci R23,0xFF
	rjmp L3
L2:
	movw R22,R20
L3:
	movw R10,R22
	.dbline 94
;     uint8 NumberA = 0;
	.dbline 95
;     uint8 NumberB = 0;
	.dbline 96
;     uint8 NumberC = 0;
	.dbline 98
;     
;     NumberC = wAbsNUM % 10;
	ldi R18,10
	ldi R19,0
	movw R16,R10
	rcall mod16u
	movw R14,R16
	.dbline 99
;     wAbsNUM = wAbsNUM * 0.1;
	ldi R16,<L4
	ldi R17,>L4
	rcall lpm32
	movw R2,R16
	movw R4,R18
	movw R16,R10
	rcall uint2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R2
	movw R18,R4
	rcall fpmule2
	rcall fpint
	movw R10,R16
	.dbline 100
;     NumberB = wAbsNUM % 10;
	ldi R18,10
	ldi R19,0
	rcall mod16u
	movw R12,R16
	.dbline 101
;     wAbsNUM = wAbsNUM * 0.1;
	ldi R16,<L4
	ldi R17,>L4
	rcall lpm32
	movw R2,R16
	movw R4,R18
	movw R16,R10
	rcall uint2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R2
	movw R18,R4
	rcall fpmule2
	rcall fpint
	.dbline 102
;     NumberA = wAbsNUM % 10;
	ldi R18,10
	ldi R19,0
	rcall mod16u
	movw R10,R16
	.dbline 104
;     
;     if (nNumber < 0)
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge L5
X1:
	.dbline 105
;     {
	.dbline 106
;         Set_DISP_BUFF_SP027
	ldi R24,19
	std y+4,R24
	std y+2,R14
	std y+0,R12
	mov R18,R10
	ldi R16,18
	rcall _Set_DISP_BUFF_SP027
	.dbline 114
;         (
;             SP027_MID_LINE,                                             
;             NumberA,
;             NumberB,
;             NumberC,
;             SP027_CIRCLE
;         );
;     }
	rjmp L6
L5:
	.dbline 116
;     else
;     {
	.dbline 117
;         Set_DISP_BUFF_SP027
	ldi R24,19
	std y+4,R24
	std y+2,R14
	std y+0,R12
	mov R18,R10
	ldi R16,17
	rcall _Set_DISP_BUFF_SP027
	.dbline 125
;         (
;             SP027_NO_ICON,                                             
;             NumberA,
;             NumberB,
;             NumberC,
;             SP027_CIRCLE
;         );
;     }
L6:
	.dbline -2
L1:
	.dbline 0 ; func end
	adiw R28,5
	rjmp pop_xgsetF0FC
	.dbsym r NumberA1 10 c
	.dbsym r NumberB1 12 c
	.dbsym r NumberC1 14 c
	.dbsym r wAbsNUM0 10 i
	.dbsym r nNumber 20 I
	.dbend
	.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 136
; }
; 
; 
; /***********************************************************
; *   函数说明:显示缓冲区设置函数                           *
; *   输入:    要显示的5个数字量(BCD)                       *
; *   输出:    无                                           *
; *   调用函数:LCDSP027_refresh_DISP_BUFF()                 *
; ***********************************************************/
; void Set_DISP_BUFF_SP027(char a,char b,char c,char d,char e)
; {
	.dbline 137
;     LCDSP027_DispBuff[0] = a;
	sts _LCDSP027_DispBuff,R16
	.dbline 138
;     LCDSP027_DispBuff[1] = b;
	sts _LCDSP027_DispBuff+1,R18
	.dbline 139
;     LCDSP027_DispBuff[2] = c;
	ldd R0,y+0
	sts _LCDSP027_DispBuff+2,R0
	.dbline 140
;     LCDSP027_DispBuff[3] = d;
	ldd R0,y+2
	sts _LCDSP027_DispBuff+3,R0
	.dbline 141
;     LCDSP027_DispBuff[4] = e;
	ldd R0,y+4
	sts _LCDSP027_DispBuff+4,R0
	.dbline -2
L7:
	.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 153
; 		
;     //LCDSP027_refresh_DISP_BUFF();
; }
; 
; /***********************************************************
; *   函数说明:刷新显示缓冲区函数                           *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:LCDSP027_Send_Data()                         *
; ***********************************************************/
; void LCDSP027_refresh_DISP_BUFF(void)
; {
	.dbline 154
;     char n = 0;
	.dbline 156
;     //LCDSP027_Clear();
;     for (n = 0;n<5;n++)
	clr R20
	rjmp L16
L13:
	.dbline 157
;     {
	.dbline 167
;         /*
;         if (n == 2)
;         {
;             LCDSP027_Send_Data
;                 (
;                     LCDSP027_DISPCODE[LCDSP027_DispBuff[n]] & ~BIT(0)
;                 );
;         }
;         else*/
;         {
	.dbline 168
;             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 169
;         }
	.dbline 171
;         
;     }
L14:
	.dbline 156
	inc R20
L16:
	.dbline 156
	cpi R20,5
	brlo L13
X2:
	.dbline 172
;     SP027_CLK = LOW;
	in R24,0x8
	andi R24,239
	out 0x8,R24
	.dbline 173
;     SP027_CLK = HIGH;
	in R24,0x8
	ori R24,16
	out 0x8,R24
	.dbline -2
L12:
	.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 183
; }
; 
; /***********************************************************
; *   函数说明:清屏函数                                     *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; void LCDSP027_Clear(void)
; {
	.dbline 193
;     /*
;     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
	rcall _Set_DISP_BUFF_SP027
	.dbline -2
L17:
	.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 210
;         (
;             SP027_NO_ICON,
;             SP027_NO_ICON,
;             SP027_NO_ICON,
;             SP027_NO_ICON,
;             SP027_NO_ICON
;         );
; }
; 
; /***********************************************************
; *   函数说明:发送数据函数                                 *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; static void LCDSP027_Send_Data(char Data)
; {
	.dbline 211
;     char n = 0;
	.dbline 213
;     
;     for (n = 0;n<8;n++)
	clr R20
	rjmp L22
L19:
	.dbline 214
;     {
	.dbline 215
;         SP027_CLK = LOW;
	in R24,0x8
	andi R24,239
	out 0x8,R24
	.dbline 216
;         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 L23
X3:
	.dbline 217
;         {
	.dbline 218
;             SP027_DI = HIGH;
	in R24,0x8
	ori R24,32
	out 0x8,R24
	.dbline 219
;         }
	rjmp L24
L23:
	.dbline 221
;         else
;         {
	.dbline 222
;             SP027_DI = LOW;
	in R24,0x8
	andi R24,223
	out 0x8,R24
	.dbline 223
;         }
L24:
	.dbline 224
;         SP027_CLK = HIGH;
	in R24,0x8
	ori R24,16
	out 0x8,R24
	.dbline 225
;     }
L20:
	.dbline 213
	inc R20
L22:
	.dbline 213
	cpi R20,8
	brlo L19
X4:
	.dbline -2
L18:
	.dbline 0 ; func end
	ld R20,y+
	ld R10,y+
	ret
	.dbsym r n1 20 c
	.dbsym r Data 10 c
	.dbend
	.area lit(rom, con, rel)
L4:
	.word 0xcccd,0x3dcc
; }
; 
; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -