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

📄 rd_useled_flash_ctr.s

📁 LCD1602键盘显示模块实例
💻 S
字号:
	.module RD_UseLED_Flash_CTR.c
	.area text(rom, con, rel)
	.dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
	.dbfunc e LED_Flash_Control_INIT _LED_Flash_Control_INIT fV
;             n1 -> R20
	.even
_LED_Flash_Control_INIT::
	st -y,R20
	.dbline -1
	.dbline 97
; /***********************************************************
; *   函数库说明:LED闪烁控制函数库                          *
; *   版本:      v1.00                                      *
; *   作者:      王卓然                                     *
; *   创建日期:  2007年4月4日                               *
; * -------------------------------------------------------- *
; *  [支 持 库]                                              *
; *   支持库名称:LIB_Config.h                               *
; *   需要版本:  -----                                      *
; *   支持库说明:库函数配置声明库                           *
; *                                                          *
; *   支持库名称:RD_MacroAndConst.h                         *
; *   需要版本:  v0.01 &abv                                 *
; *   支持库说明:系统常用宏定义库                           *
; *                                                          *
; *   支持库名称:RD_UseLED_Flash_CTR.h                      *
; *   需要版本:  -----                                      *
; *   支持库说明:LED闪烁控制函数声明库                      *
; * -------------------------------------------------------- *
; *  [版本更新]                                              *
; *   修改:                                                 *
; * -------------------------------------------------------- *
; *  [版本历史]                                              *
; * -------------------------------------------------------- *
; *  [使用说明]                                              *
; ***********************************************************/
; 
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "LIB_Config.h"
; # include "RD_MacroAndConst.h"
; # include "RD_UseLED_Flash_CTR.h" 
; 
; /********************
; *   系 统 宏 定 义  *
; ********************/
; 
; /*------------------*
; *   常 数 宏 定 义  *
; *------------------*/
; 
; #ifndef LED_FCTR_LED_COUNT
;     # error Need for the number of the LEDs: LED_FCTR_LED_COUNT
; #endif
; #ifndef LED_PORT_START
;     # error Need for the start pin number of LEDs: LED_PORT_START
; #endif
; #ifndef LED_PORT
;     # error Need for the port name of the LEDs: LED_PORT
; #endif
; 
; /*------------------*
; *   动 作 宏 定 义  *
; *------------------*/
; #ifndef SYS_TIMER_MS_ADD_UNTILL_OVF
;     #error Need for SYS_TIMER_MS_ADD_UNTILL_OVF !
; #else
;     extern uint16 SYS_TIMER_MS_ADD_UNTILL_OVF;
; #endif
; 
; /********************
; *  用户变量类型定义 *
; ********************/
; 
; /********************
; *    结构体定义区   *
; ********************/
; 
; /********************
; *   模块函数声明区  *
; ********************/
; 
; /********************
; *   全局函数声明区  *
; ********************/
; void LED_Flash_Control_INIT(void);
; BOOL LED_Flash_Control_Refresh(void);
; 
; /********************
; *   模块变量声明区  *
; ********************/
; 
; /********************
; *   全局变量声明区  *
; ********************/
; uint8 g_cLEDs[LED_FCTR_LED_COUNT];
; 
; 
; /***********************************************************
; *   函数说明:LED闪烁控制初始化函数                        *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; void LED_Flash_Control_INIT(void)
; {
	.dbline 98
;     uint8 n = 0;
	.dbline 100
;     
;     for (n = 0;n < UBOUND(g_cLEDs);n++)
	clr R20
	xjmp L5
L2:
	.dbline 101
;     {
	.dbline 102
;         g_cLEDs[n] = LED_OFF;
	ldi R24,<_g_cLEDs
	ldi R25,>_g_cLEDs
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 104
;         
;         LED_PORT |= BIT(LED_PORT_START+n); 
	mov R17,R20
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 105
;     }
L3:
	.dbline 100
	inc R20
L5:
	.dbline 100
	cpi R20,2
	brlo L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r n1 20 c
	.dbend
	.area data(ram, con, rel)
	.dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
L7:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
	.area text(rom, con, rel)
	.dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
	.dbfunc e LED_Flash_Control_Refresh _LED_Flash_Control_Refresh fc
	.dbsym s n L7 c
	.even
_LED_Flash_Control_Refresh::
	st -y,R20
	.dbline -1
	.dbline 115
; }
; 
; /***********************************************************
; *   函数说明:LED闪烁刷新函数                              *
; *   输入:    无                                           *
; *   输出:    是否继续执行                                 *
; *   调用函数:无                                           *
; ***********************************************************/
; BOOL LED_Flash_Control_Refresh(void)
; {
	.dbline 118
;     static uint8 n = 0;
;      
;     switch(g_cLEDs[n])
	ldi R24,<_g_cLEDs
	ldi R25,>_g_cLEDs
	lds R30,L7
	clr R31
	add R30,R24
	adc R31,R25
	ldd R20,z+0
	tst R20
	brne X14
	xjmp L27
X14:
X1:
	cpi R20,1
	breq L11
X2:
	cpi R20,2
	breq L12
X3:
	cpi R20,3
	brne X15
	xjmp L15
X15:
X4:
	cpi R20,4
	brne X16
	xjmp L18
X16:
X5:
	cpi R20,5
	brne X17
	xjmp L21
X17:
X6:
	cpi R20,6
	brne X18
	xjmp L24
X18:
X7:
	xjmp L8
L11:
	.dbline 122
;     {
;         case LED_ON:
;         #ifdef _LED_FLASH_CTR_ANODE
;             LED_PORT |= BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 126
;         #else
;             LED_PORT &= ~BIT(LED_PORT_START+n);
;         #endif
;             break;
	xjmp L9
L12:
	.dbline 128
;         case LED_FLASH_VERY_SLOW:
;             if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x07ff) > 0x03ff)
	ldi R24,1023
	ldi R25,3
	lds R30,_g_wSystemTimer
	lds R31,_g_wSystemTimer+1
	andi R31,7
	cp R24,R30
	cpc R25,R31
	brsh L13
X8:
	.dbline 129
;             {
	.dbline 130
;                 LED_PORT |= BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 131
;             }
	xjmp L9
L13:
	.dbline 133
;             else
;             {
	.dbline 134
;                 LED_PORT &= ~BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 135
;             }
	.dbline 136
;             break;
	xjmp L9
L15:
	.dbline 138
;         case LED_FLASH_SLOW:
;             if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x03ff) > 0x01ff)
	ldi R24,511
	ldi R25,1
	lds R30,_g_wSystemTimer
	lds R31,_g_wSystemTimer+1
	andi R31,3
	cp R24,R30
	cpc R25,R31
	brsh L16
X9:
	.dbline 139
;             {
	.dbline 140
;                 LED_PORT |= BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 141
;             }
	xjmp L9
L16:
	.dbline 143
;             else
;             {
	.dbline 144
;                 LED_PORT &= ~BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 145
;             }
	.dbline 146
;             break;
	xjmp L9
L18:
	.dbline 148
;         case LED_FLASH:
;             if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x01ff) > 0x00ff)
	ldi R24,255
	ldi R25,0
	lds R30,_g_wSystemTimer
	lds R31,_g_wSystemTimer+1
	andi R31,1
	cp R24,R30
	cpc R25,R31
	brsh L19
X10:
	.dbline 149
;             {
	.dbline 150
;                 LED_PORT |= BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 151
;             }
	xjmp L9
L19:
	.dbline 153
;             else
;             {
	.dbline 154
;                 LED_PORT &= ~BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 155
;             }
	.dbline 156
;             break;
	xjmp L9
L21:
	.dbline 158
;         case LED_FLASH_FAST:
;             if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x00ff) > 0x007f)
	ldi R24,127
	ldi R25,0
	lds R30,_g_wSystemTimer
	lds R31,_g_wSystemTimer+1
	andi R31,0
	cp R24,R30
	cpc R25,R31
	brsh L22
X11:
	.dbline 159
;             {
	.dbline 160
;                 LED_PORT |= BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 161
;             }
	xjmp L9
L22:
	.dbline 163
;             else
;             {
	.dbline 164
;                 LED_PORT &= ~BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 165
;             }
	.dbline 166
;             break;
	xjmp L9
L24:
	.dbline 168
;         case LED_FLASH_VERY_FAST:
;             if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x003f) > 0x001f)
	ldi R24,31
	ldi R25,0
	lds R30,_g_wSystemTimer
	lds R31,_g_wSystemTimer+1
	andi R30,63
	andi R31,0
	cp R24,R30
	cpc R25,R31
	brsh L25
X12:
	.dbline 169
;             {
	.dbline 170
;                 LED_PORT |= BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	in R2,0x15
	or R2,R16
	out 0x15,R2
	.dbline 171
;             }
	xjmp L9
L25:
	.dbline 173
;             else
;             {
	.dbline 174
;                 LED_PORT &= ~BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 175
;             }
	.dbline 176
;             break;
	xjmp L9
L27:
L8:
	.dbline 180
;         case LED_OFF:
;         default:
;             #ifdef _LED_FLASH_CTR_ANODE
;             LED_PORT &= ~BIT(LED_PORT_START+n);
	lds R17,L7
	subi R17,250    ; addi 6
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x15
	and R3,R2
	out 0x15,R3
	.dbline 184
;             #else
;             LED_PORT |= BIT(LED_PORT_START+n);
;             #endif
;             break;
L9:
	.dbline 187
;     }
;     
;     n++;
	lds R24,L7
	subi R24,255    ; addi 1
	sts L7,R24
	.dbline 188
;     if (n == LED_FCTR_LED_COUNT)
	cpi R24,2
	brne L28
X13:
	.dbline 189
;     {
	.dbline 190
;         n = 0;
	clr R2
	sts L7,R2
	.dbline 191
;         return FALSE;
	clr R16
	xjmp L6
L28:
	.dbline 194
;     }
;     
;     return TRUE;
	ldi R16,1
	.dbline -2
L6:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
_g_cLEDs::
	.blkb 2
	.dbsym e g_cLEDs _g_cLEDs A[2:2]c
; }
; 
; 
; 

⌨️ 快捷键说明

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