📄 hal_led.lst
字号:
\ 00000B 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 00000D 02.... LJMP ?Subroutine10 & 0xFFFF
95 /* Initialize sleepActive to FALSE */
96 HalLedStatusControl.sleepActive = FALSE;
97 #endif /* HAL_LED */
98 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine10:
\ 000000 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000003 E4 CLR A
\ 000004 90.... MOV DPTR,#(??HalLedStatusControl + 36)
\ ??Subroutine10_0:
\ 000007 F0 MOVX @DPTR,A
\ ??Subroutine10_1:
\ 000008 D083 POP DPH
\ 00000A D082 POP DPL
\ 00000C 02.... LJMP ?BRET
99
100 /***************************************************************************************************
101 * @fn HalLedSet
102 *
103 * @brief Tun ON/OFF/TOGGLE given LEDs
104 *
105 * @param led - bit mask value of leds to be turned ON/OFF/TOGGLE
106 * mode - BLINK, FLASH, TOGGLE, ON, OFF
107 * @return None
108 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
109 uint8 HalLedSet (uint8 leds, uint8 mode)
\ HalLedSet:
110 {
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
\ 000005 89.. MOV ?V0 + 0,R1
\ 000007 8A.. MOV ?V0 + 1,R2
111
112 #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE)
113 uint8 led;
114 HalLedControl_t *sts;
115
116 switch (mode)
\ 000009 EA MOV A,R2
\ 00000A 12.... LCALL ?UC_SWITCH_SPARSE
\ `?<Jumptable for HalLedSet>_0`:
\ 00000D 01 DB 1
\ 00000E 00 DB 0
\ 00000F 01 DB 1
\ 000010 .... DW ??HalLedSet_0
\ 000012 03 DB 3
\ 000013 02 DB 2
\ 000014 .... DW ??HalLedSet_1
\ 000016 04 DB 4
\ 000017 .... DW ??HalLedSet_2
\ 000019 08 DB 8
\ 00001A .... DW ??HalLedSet_0
\ 00001C .... DW ??HalLedSet_3
117 {
118 case HAL_LED_MODE_BLINK:
119 /* Default blink, 1 time, D% duty cycle */
120 HalLedBlink (leds, 1, HAL_LED_DEFAULT_DUTY_CYCLE, HAL_LED_DEFAULT_FLASH_TIME);
\ ??HalLedSet_1:
\ 00001E ; Setup parameters for call to function HalLedBlink
\ 00001E 7CE8 MOV R4,#-0x18
\ 000020 7D03 MOV R5,#0x3
\ 000022 7B05 MOV R3,#0x5
\ 000024 7A01 MOV R2,#0x1
\ ??HalLedSet_4:
\ 000026 90.... MOV DPTR,#(HalLedBlink & 0xffff)
\ 000029 74.. MOV A,#((HalLedBlink >> 16) & 0xff)
\ 00002B 12.... LCALL ?BCALL ; Banked call to: DPTR()
121 break;
122
123 case HAL_LED_MODE_FLASH:
124 /* Default flash, N times, D% duty cycle */
125 HalLedBlink (leds, HAL_LED_DEFAULT_FLASH_COUNT, HAL_LED_DEFAULT_DUTY_CYCLE, HAL_LED_DEFAULT_FLASH_TIME);
126 break;
127
128 case HAL_LED_MODE_ON:
129 case HAL_LED_MODE_OFF:
130 case HAL_LED_MODE_TOGGLE:
131
132 led = HAL_LED_1;
133 leds &= HAL_LED_ALL;
134 sts = HalLedStatusControl.HalLedControlTable;
135
136 while (leds)
137 {
138 if (leds & led)
139 {
140 if (mode != HAL_LED_MODE_TOGGLE)
141 {
142 sts->mode = mode; /* ON or OFF */
143 }
144 else
145 {
146 sts->mode ^= HAL_LED_MODE_ON; /* Toggle */
147 }
148 HalLedOnOff (led, sts->mode);
149 leds ^= led;
150 }
151 led <<= 1;
152 sts++;
153 }
154 break;
155
156 default:
157 break;
158 }
159
160 #elif (HAL_LED == TRUE)
161 LedOnOff(leds, mode);
162 #endif /* BLINK_LEDS && HAL_LED */
163
164 return ( HalLedState );
\ ??HalLedSet_3:
\ 00002E 90.... MOV DPTR,#??HalLedState
\ 000031 E0 MOVX A,@DPTR
\ 000032 F9 MOV R1,A
\ 000033 7F03 MOV R7,#0x3
\ 000035 02.... LJMP ?BANKED_LEAVE_XDATA
\ ??HalLedSet_2:
\ 000038 ; Setup parameters for call to function HalLedBlink
\ 000038 7CE8 MOV R4,#-0x18
\ 00003A 7D03 MOV R5,#0x3
\ 00003C 7B05 MOV R3,#0x5
\ 00003E 7A32 MOV R2,#0x32
\ 000040 80E4 SJMP ??HalLedSet_4
\ ??HalLedSet_0:
\ 000042 75..01 MOV ?V0 + 2,#0x1
\ 000045 53..0F ANL ?V0 + 0,#0xf
\ 000048 7E.. MOV R6,#(??HalLedStatusControl & 0xff)
\ 00004A 7F.. MOV R7,#((??HalLedStatusControl >> 8) & 0xff)
\ 00004C 8022 SJMP ??HalLedSet_5
\ ??HalLedSet_6:
\ 00004E E0 MOVX A,@DPTR
\ 00004F 6401 XRL A,#0x1
\ ??HalLedSet_7:
\ 000051 F0 MOVX @DPTR,A
\ 000052 ; Setup parameters for call to function HalLedOnOff
\ 000052 E0 MOVX A,@DPTR
\ 000053 FA MOV R2,A
\ 000054 A9.. MOV R1,?V0 + 2
\ 000056 90.... MOV DPTR,#(HalLedOnOff & 0xffff)
\ 000059 74.. MOV A,#((HalLedOnOff >> 16) & 0xff)
\ 00005B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00005E E5.. MOV A,?V0 + 2
\ 000060 62.. XRL ?V0 + 0,A
\ ??HalLedSet_8:
\ 000062 E5.. MOV A,?V0 + 2
\ 000064 C3 CLR C
\ 000065 33 RLC A
\ 000066 F5.. MOV ?V0 + 2,A
\ 000068 EE MOV A,R6
\ 000069 2409 ADD A,#0x9
\ 00006B FE MOV R6,A
\ 00006C EF MOV A,R7
\ 00006D 3400 ADDC A,#0x0
\ 00006F FF MOV R7,A
\ ??HalLedSet_5:
\ 000070 E5.. MOV A,?V0 + 0
\ 000072 60BA JZ ??HalLedSet_3
\ 000074 E5.. MOV A,?V0 + 2
\ 000076 55.. ANL A,?V0 + 0
\ 000078 60E8 JZ ??HalLedSet_8
\ 00007A 7408 MOV A,#0x8
\ 00007C 65.. XRL A,?V0 + 1
\ 00007E 8E82 MOV DPL,R6
\ 000080 8F83 MOV DPH,R7
\ 000082 60CA JZ ??HalLedSet_6
\ 000084 E5.. MOV A,?V0 + 1
\ 000086 80C9 SJMP ??HalLedSet_7
165
166 }
167
168 /***************************************************************************************************
169 * @fn HalLedBlink
170 *
171 * @brief Blink the leds
172 *
173 * @param leds - bit mask value of leds to be blinked
174 * numBlinks - number of blinks
175 * percent - the percentage in each period where the led
176 * will be on
177 * period - length of each cycle in milliseconds
178 *
179 * @return None
180 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
181 void HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)
\ HalLedBlink:
182 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 4
\ 000005 74FC MOV A,#-0x4
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A 7401 MOV A,#0x1
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
\ 00000F EA MOV A,R2
\ 000010 F0 MOVX @DPTR,A
\ 000011 EB MOV A,R3
\ 000012 85..82 MOV DPL,?XSP + 0
\ 000015 85..83 MOV DPH,?XSP + 1
\ 000018 F0 MOVX @DPTR,A
\ 000019 7402 MOV A,#0x2
\ 00001B 12.... LCALL ?XSTACK_DISP0_8
\ 00001E EC MOV A,R4
\ 00001F F0 MOVX @DPTR,A
\ 000020 A3 INC DPTR
\ 000021 ED MOV A,R5
\ 000022 F0 MOVX @DPTR,A
\ 000023 89.. MOV ?V0 + 0,R1
183 #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE)
184 uint8 led;
185 HalLedControl_t *sts;
186
187 if (leds && percent && period)
\ 000025 E9 MOV A,R1
\ 000026 7003 JNZ $+5
\ 000028 02.... LJMP ??HalLedBlink_0 & 0xFFFF
\ 00002B 85..82 MOV DPL,?XSP + 0
\ 00002E 85..83 MOV DPH,?XSP + 1
\ 000031 E0 MOVX A,@DPTR
\ 000032 7003 JNZ $+5
\ 000034 02.... LJMP ??HalLedBlink_0 & 0xFFFF
\ 000037 7402 MOV A,#0x2
\ 000039 12.... LCALL ?XSTACK_DISP0_8
\ 00003C E0 MOVX A,@DPTR
\ 00003D 7002 JNZ ??HalLedBlink_1
\ 00003F A3 INC DPTR
\ 000040 E0 MOVX A,@DPTR
\ ??HalLedBlink_1:
\ 000041 7003 JNZ $+5
\ 000043 02.... LJMP ??HalLedBlink_0 & 0xFFFF
188 {
189 if (percent < 100)
\ 000046 85..82 MOV DPL,?XSP + 0
\ 000049 85..83 MOV DPH,?XSP + 1
\ 00004C E0 MOVX A,@DPTR
\ 00004D C3 CLR C
\ 00004E 9464 SUBB A,#0x64
\ 000050 4003 JC $+5
\ 000052 02.... LJMP ??HalLedBlink_2 & 0xFFFF
190 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -