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

📄 rd_uselcdsp027.s

📁 一个直流电机的闭环控制源代码程序
💻 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 + -