📄 rd_useled_flash_ctr.lis
字号:
.module RD_UseLED_Flash_CTR.c
.area text(rom, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
0000 .dbfunc e LED_Flash_Control_INIT _LED_Flash_Control_INIT fV
0000 ; n1 -> R20
.even
0000 _LED_Flash_Control_INIT::
0000 4A93 st -y,R20
0002 .dbline -1
0002 .dbline 97
0002 ; /***********************************************************
0002 ; * 函数库说明:LED闪烁控制函数库 *
0002 ; * 版本: v1.00 *
0002 ; * 作者: 王卓然 *
0002 ; * 创建日期: 2007年4月4日 *
0002 ; * -------------------------------------------------------- *
0002 ; * [支 持 库] *
0002 ; * 支持库名称:LIB_Config.h *
0002 ; * 需要版本: ----- *
0002 ; * 支持库说明:库函数配置声明库 *
0002 ; * *
0002 ; * 支持库名称:RD_MacroAndConst.h *
0002 ; * 需要版本: v0.01 &abv *
0002 ; * 支持库说明:系统常用宏定义库 *
0002 ; * *
0002 ; * 支持库名称:RD_UseLED_Flash_CTR.h *
0002 ; * 需要版本: ----- *
0002 ; * 支持库说明:LED闪烁控制函数声明库 *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本更新] *
0002 ; * 修改: *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本历史] *
0002 ; * -------------------------------------------------------- *
0002 ; * [使用说明] *
0002 ; ***********************************************************/
0002 ;
0002 ; /********************
0002 ; * 头 文 件 配 置 区 *
0002 ; ********************/
0002 ; # include "LIB_Config.h"
0002 ; # include "RD_MacroAndConst.h"
0002 ; # include "RD_UseLED_Flash_CTR.h"
0002 ;
0002 ; /********************
0002 ; * 系 统 宏 定 义 *
0002 ; ********************/
0002 ;
0002 ; /*------------------*
0002 ; * 常 数 宏 定 义 *
0002 ; *------------------*/
0002 ;
0002 ; #ifndef LED_FCTR_LED_COUNT
0002 ; # error Need for the number of the LEDs: LED_FCTR_LED_COUNT
0002 ; #endif
0002 ; #ifndef LED_PORT_START
0002 ; # error Need for the start pin number of LEDs: LED_PORT_START
0002 ; #endif
0002 ; #ifndef LED_PORT
0002 ; # error Need for the port name of the LEDs: LED_PORT
0002 ; #endif
0002 ;
0002 ; /*------------------*
0002 ; * 动 作 宏 定 义 *
0002 ; *------------------*/
0002 ; #ifndef SYS_TIMER_MS_ADD_UNTILL_OVF
0002 ; #error Need for SYS_TIMER_MS_ADD_UNTILL_OVF !
0002 ; #else
0002 ; extern uint16 SYS_TIMER_MS_ADD_UNTILL_OVF;
0002 ; #endif
0002 ;
0002 ; /********************
0002 ; * 用户变量类型定义 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 结构体定义区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 模块函数声明区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 全局函数声明区 *
0002 ; ********************/
0002 ; void LED_Flash_Control_INIT(void);
0002 ; BOOL LED_Flash_Control_Refresh(void);
0002 ;
0002 ; /********************
0002 ; * 模块变量声明区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 全局变量声明区 *
0002 ; ********************/
0002 ; uint8 g_cLEDs[LED_FCTR_LED_COUNT];
0002 ;
0002 ;
0002 ; /***********************************************************
0002 ; * 函数说明:LED闪烁控制初始化函数 *
0002 ; * 输入: 无 *
0002 ; * 输出: 无 *
0002 ; * 调用函数:无 *
0002 ; ***********************************************************/
0002 ; void LED_Flash_Control_INIT(void)
0002 ; {
0002 .dbline 98
0002 ; uint8 n = 0;
0002 .dbline 100
0002 ;
0002 ; for (n = 0;n < UBOUND(g_cLEDs);n++)
0002 4427 clr R20
0004 11C0 xjmp L5
0006 L2:
0006 .dbline 101
0006 ; {
0006 .dbline 102
0006 ; g_cLEDs[n] = LED_OFF;
0006 80E0 ldi R24,<_g_cLEDs
0008 90E0 ldi R25,>_g_cLEDs
000A E42F mov R30,R20
000C FF27 clr R31
000E E80F add R30,R24
0010 F91F adc R31,R25
0012 2224 clr R2
0014 2082 std z+0,R2
0016 .dbline 104
0016 ;
0016 ; LED_PORT |= BIT(LED_PORT_START+n);
0016 142F mov R17,R20
0018 1A5F subi R17,250 ; addi 6
001A 01E0 ldi R16,1
001C 0E940000 xcall lsl8
0020 25B2 in R2,0x15
0022 202A or R2,R16
0024 25BA out 0x15,R2
0026 .dbline 105
0026 ; }
0026 L3:
0026 .dbline 100
0026 4395 inc R20
0028 L5:
0028 .dbline 100
0028 4230 cpi R20,2
002A 68F3 brlo L2
002C X0:
002C .dbline -2
002C L1:
002C .dbline 0 ; func end
002C 4991 ld R20,y+
002E 0895 ret
0030 .dbsym r n1 20 c
0030 .dbend
.area data(ram, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
0000 L7:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
.area text(rom, con, rel)
0030 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseLED_Flash_CTR.c
0030 .dbfunc e LED_Flash_Control_Refresh _LED_Flash_Control_Refresh fc
0030 .dbsym s n L7 c
.even
0030 _LED_Flash_Control_Refresh::
0030 4A93 st -y,R20
0032 .dbline -1
0032 .dbline 115
0032 ; }
0032 ;
0032 ; /***********************************************************
0032 ; * 函数说明:LED闪烁刷新函数 *
0032 ; * 输入: 无 *
0032 ; * 输出: 是否继续执行 *
0032 ; * 调用函数:无 *
0032 ; ***********************************************************/
0032 ; BOOL LED_Flash_Control_Refresh(void)
0032 ; {
0032 .dbline 118
0032 ; static uint8 n = 0;
0032 ;
0032 ; switch(g_cLEDs[n])
0032 80E0 ldi R24,<_g_cLEDs
0034 90E0 ldi R25,>_g_cLEDs
0036 E0910000 lds R30,L7
003A FF27 clr R31
003C E80F add R30,R24
003E F91F adc R31,R25
0040 4081 ldd R20,z+0
0042 4423 tst R20
0044 09F4 brne X14
0046 BCC0 xjmp L27
0048 X14:
0048 X1:
0048 4130 cpi R20,1
004A 79F0 breq L11
004C X2:
004C 4230 cpi R20,2
004E B9F0 breq L12
0050 X3:
0050 4330 cpi R20,3
0052 09F4 brne X15
0054 34C0 xjmp L15
0056 X15:
0056 X4:
0056 4430 cpi R20,4
0058 09F4 brne X16
005A 51C0 xjmp L18
005C X16:
005C X5:
005C 4530 cpi R20,5
005E 09F4 brne X17
0060 6EC0 xjmp L21
0062 X17:
0062 X6:
0062 4630 cpi R20,6
0064 09F4 brne X18
0066 8BC0 xjmp L24
0068 X18:
0068 X7:
0068 ABC0 xjmp L8
006A L11:
006A .dbline 122
006A ; {
006A ; case LED_ON:
006A ; #ifdef _LED_FLASH_CTR_ANODE
006A ; LED_PORT |= BIT(LED_PORT_START+n);
006A 10910000 lds R17,L7
006E 1A5F subi R17,250 ; addi 6
0070 01E0 ldi R16,1
0072 0E940000 xcall lsl8
0076 25B2 in R2,0x15
0078 202A or R2,R16
007A 25BA out 0x15,R2
007C .dbline 126
007C ; #else
007C ; LED_PORT &= ~BIT(LED_PORT_START+n);
007C ; #endif
007C ; break;
007C ACC0 xjmp L9
007E L12:
007E .dbline 128
007E ; case LED_FLASH_VERY_SLOW:
007E ; if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x07ff) > 0x03ff)
007E 8FEF ldi R24,1023
0080 93E0 ldi R25,3
0082 E0910000 lds R30,_g_wSystemTimer
0086 F0910100 lds R31,_g_wSystemTimer+1
008A F770 andi R31,7
008C 8E17 cp R24,R30
008E 9F07 cpc R25,R31
0090 50F4 brsh L13
0092 X8:
0092 .dbline 129
0092 ; {
0092 .dbline 130
0092 ; LED_PORT |= BIT(LED_PORT_START+n);
0092 10910000 lds R17,L7
0096 1A5F subi R17,250 ; addi 6
0098 01E0 ldi R16,1
009A 0E940000 xcall lsl8
009E 25B2 in R2,0x15
00A0 202A or R2,R16
00A2 25BA out 0x15,R2
00A4 .dbline 131
00A4 ; }
00A4 98C0 xjmp L9
00A6 L13:
00A6 .dbline 133
00A6 ; else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -