keyscan.lst
来自「cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表」· LST 代码 · 共 372 行 · 第 1/2 页
LST
372 行
66:driver/KeyScan.c **** KeyCount++;
240 .LM23:
241 0098 2091 0000 lds r18,KeyCount.2
242 009c 822F mov r24,r18
243 009e 8F5F subi r24,lo8(-(1))
244 00a0 8093 0000 sts KeyCount.2,r24
67:driver/KeyScan.c **** if (KeyCount >= 250) //按键时间大于250MS吗?
246 .LM24:
247 00a4 8A3F cpi r24,lo8(-6)
248 00a6 B8F0 brlo .L16
68:driver/KeyScan.c **** {
69:driver/KeyScan.c **** if (TaskID)
250 .LM25:
251 00a8 8091 0000 lds r24,TaskID
252 00ac 8823 tst r24
253 00ae 11F0 breq .L17
70:driver/KeyScan.c **** {
71:driver/KeyScan.c **** SaveFunData(); //常按保存数据
255 .LM26:
256 00b0 00D0 rcall SaveFunData
257 .L18:
72:driver/KeyScan.c **** while(1);
259 .LM27:
260 00b2 FFCF rjmp .L18
261 .L17:
73:driver/KeyScan.c **** }
74:driver/KeyScan.c **** else
75:driver/KeyScan.c **** {
76:driver/KeyScan.c **** KeyVal = 6;
263 .LM28:
264 00b4 86E0 ldi r24,lo8(6)
265 00b6 8093 0000 sts KeyVal,r24
77:driver/KeyScan.c **** KeyCount = 0; //常按进入功能参数设定
267 .LM29:
268 00ba 1092 0000 sts KeyCount.2,__zero_reg__
78:driver/KeyScan.c **** IO_HighAlarm = ON;
270 .LM30:
271 00be 939A sbi 50-0x20,3
79:driver/KeyScan.c **** fH_Alarm = OFF; //关闭报警
273 .LM31:
274 00c0 1092 0000 sts fH_Alarm,__zero_reg__
80:driver/KeyScan.c **** L_Alarm = ON;
276 .LM32:
277 00c4 81E0 ldi r24,lo8(1)
278 00c6 90E0 ldi r25,hi8(1)
279 00c8 9093 0000 sts (L_Alarm)+1,r25
280 00cc 8093 0000 sts L_Alarm,r24
81:driver/KeyScan.c **** fL_Alarm = OFF;
282 .LM33:
283 00d0 1092 0000 sts fL_Alarm,__zero_reg__
82:driver/KeyScan.c **** break;
285 .LM34:
286 00d4 0895 ret
287 .L16:
83:driver/KeyScan.c **** }
84:driver/KeyScan.c **** }
85:driver/KeyScan.c ****
86:driver/KeyScan.c **** else if ((KeyCount >= 15) && (OldKeyCode != 0x04))
289 .LM35:
290 00d6 8F30 cpi r24,lo8(15)
291 00d8 70F0 brlo .L29
292 00da 3430 cpi r19,lo8(4)
293 00dc 61F0 breq .L29
87:driver/KeyScan.c **** {
88:driver/KeyScan.c **** WatchKeyTime.WaitTime = _60S;
295 .LM36:
296 00de 80E7 ldi r24,lo8(6000)
297 00e0 97E1 ldi r25,hi8(6000)
298 00e2 9093 0000 sts (WatchKeyTime+1)+1,r25
299 00e6 8093 0000 sts WatchKeyTime+1,r24
89:driver/KeyScan.c **** if (fDOKEY)
301 .LM37:
302 00ea 8091 0000 lds r24,fDOKEY
303 00ee 8823 tst r24
304 00f0 29F0 breq .L23
90:driver/KeyScan.c **** {
91:driver/KeyScan.c **** KeyCount = 0;
306 .LM38:
307 00f2 1092 0000 sts KeyCount.2,__zero_reg__
308 .L29:
92:driver/KeyScan.c **** KeyVal = 0;
310 .LM39:
311 00f6 1092 0000 sts KeyVal,__zero_reg__
312 00fa 0895 ret
313 .L23:
93:driver/KeyScan.c **** }
94:driver/KeyScan.c **** else
95:driver/KeyScan.c **** {
96:driver/KeyScan.c **** KeyCount -= 15;
315 .LM40:
316 00fc 2E50 subi r18,lo8(-(-14))
317 00fe 2093 0000 sts KeyCount.2,r18
97:driver/KeyScan.c **** KeyVal = OldKeyCode;
319 .LM41:
320 0102 3093 0000 sts KeyVal,r19
321 0106 0895 ret
322 .L15:
98:driver/KeyScan.c **** }
99:driver/KeyScan.c **** }
100:driver/KeyScan.c **** else
101:driver/KeyScan.c **** { KeyVal = 0; }
102:driver/KeyScan.c **** }
103:driver/KeyScan.c **** else
104:driver/KeyScan.c **** {
105:driver/KeyScan.c **** KeyState = 0; //按键松开
324 .LM42:
325 0108 1092 0000 sts KeyState.0,__zero_reg__
106:driver/KeyScan.c **** KeyCount = 0;
327 .LM43:
328 010c 1092 0000 sts KeyCount.2,__zero_reg__
107:driver/KeyScan.c **** fDOKEY = 0;
330 .LM44:
331 0110 1092 0000 sts fDOKEY,__zero_reg__
332 0114 F0CF rjmp .L29
333 /* epilogue: frame size=0 */
334 /* epilogue: noreturn */
335 /* epilogue end (size=0) */
336 /* function ScanKey_MainLoop size 143 (143) */
344 .Lscope0:
346 .global WatchKey
348 WatchKey:
108:driver/KeyScan.c **** KeyVal = 0;
109:driver/KeyScan.c **** }
110:driver/KeyScan.c **** break;
111:driver/KeyScan.c ****
112:driver/KeyScan.c **** default:
113:driver/KeyScan.c **** break;
114:driver/KeyScan.c **** }
115:driver/KeyScan.c **** }
116:driver/KeyScan.c **** }
117:driver/KeyScan.c **** //--------------------------------------------------
118:driver/KeyScan.c **** void WatchKey(void)
119:driver/KeyScan.c **** {
350 .LM45:
351 /* prologue: frame size=0 */
352 /* prologue end (size=0) */
120:driver/KeyScan.c **** if ((TaskID) && (WatchKeyTime.fGetTime))
354 .LM46:
355 0116 8091 0000 lds r24,TaskID
356 011a 8823 tst r24
357 011c 21F0 breq .L31
359 .LM47:
360 011e 8091 0000 lds r24,WatchKeyTime
361 0122 8111 cpse r24,__zero_reg__
362 .L32:
121:driver/KeyScan.c **** while (1);
364 .LM48:
365 0124 FFCF rjmp .L32
366 .L31:
367 0126 0895 ret
368 /* epilogue: frame size=0 */
369 /* epilogue: noreturn */
370 /* epilogue end (size=0) */
371 /* function WatchKey size 10 (10) */
373 .Lscope1:
374 .comm KeyVal,1,1
378 .text
380 Letext:
381 /* File "driver/KeyScan.c": code 153 = 0x0099 ( 153), prologues 0, epilogues 0 */
DEFINED SYMBOLS
*ABS*:00000000 KeyScan.c
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:3 *ABS*:0000003f __SREG__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:106 .bss:00000000 WatchKeyTime
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:112 .data:00000000 KeyScan
.bss:00000003 KeyState.0
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:115 .bss:00000004 OldKeyCode.1
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:116 .bss:00000005 KeyCount.2
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:122 .text:00000000 ScanKey_MainLoop
*COM*:00000001 KeyVal
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:348 .text:00000116 WatchKey
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccG2aaaa.s:380 .text:00000128 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
TaskID
SaveFunData
fH_Alarm
L_Alarm
fL_Alarm
fDOKEY
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?