📄 enoronhand.lss
字号:
334: b0 95 com r27
336: 11 23 and r17, r17
338: 91 f5 brne .+100 ; 0x39e
33a: fe 01 movw r30, r28
33c: ea 0f add r30, r26
33e: fb 1f adc r31, r27
340: 83 81 ldd r24, Z+3 ; 0x03
342: 86 17 cp r24, r22
344: 81 f5 brne .+96 ; 0x3a6
346: 92 2f mov r25, r18
348: 39 81 ldd r19, Y+1 ; 0x01
34a: 23 17 cp r18, r19
34c: 81 f0 breq .+32 ; 0x36e
34e: 4a 81 ldd r20, Y+2 ; 0x02
350: 9f 5f subi r25, 0xFF ; 255
352: 94 17 cp r25, r20
354: 0c f0 brlt .+2 ; 0x358
356: 90 e0 ldi r25, 0x00 ; 0
358: 93 17 cp r25, r19
35a: 49 f0 breq .+18 ; 0x36e
35c: e9 2f mov r30, r25
35e: ff 27 eor r31, r31
360: e7 fd sbrc r30, 7
362: f0 95 com r31
364: ec 0f add r30, r28
366: fd 1f adc r31, r29
368: 83 81 ldd r24, Z+3 ; 0x03
36a: 86 17 cp r24, r22
36c: 89 f3 breq .-30 ; 0x350
36e: 89 81 ldd r24, Y+1 ; 0x01
370: 98 17 cp r25, r24
372: 79 f0 breq .+30 ; 0x392
374: ac 0f add r26, r28
376: bd 1f adc r27, r29
378: e9 2e mov r14, r25
37a: ff 24 eor r15, r15
37c: e7 fc sbrc r14, 7
37e: f0 94 com r15
380: ec 0e add r14, r28
382: fd 1e adc r15, r29
384: f7 01 movw r30, r14
386: 83 81 ldd r24, Z+3 ; 0x03
388: fd 01 movw r30, r26
38a: 83 83 std Z+3, r24 ; 0x03
38c: f7 01 movw r30, r14
38e: 63 83 std Z+3, r22 ; 0x03
390: 0a c0 rjmp .+20 ; 0x3a6
392: ac 0f add r26, r28
394: bd 1f adc r27, r29
396: fd 01 movw r30, r26
398: 13 82 std Z+3, r1 ; 0x03
39a: 11 e0 ldi r17, 0x01 ; 1
39c: 04 c0 rjmp .+8 ; 0x3a6
39e: ac 0f add r26, r28
3a0: bd 1f adc r27, r29
3a2: fd 01 movw r30, r26
3a4: 13 82 std Z+3, r1 ; 0x03
3a6: 2f 5f subi r18, 0xFF ; 255
3a8: 3a 81 ldd r19, Y+2 ; 0x02
3aa: 23 17 cp r18, r19
3ac: 0c f0 brlt .+2 ; 0x3b0
3ae: 20 e0 ldi r18, 0x00 ; 0
3b0: 27 17 cp r18, r23
3b2: 09 f0 breq .+2 ; 0x3b6
3b4: bc cf rjmp .-136 ; 0x32e
3b6: 95 2f mov r25, r21
}
ucTemp++;
if (ucTemp >= fh->ucSize)
ucTemp = 0;
3b8: 97 17 cp r25, r23
3ba: 79 f0 breq .+30 ; 0x3da
3bc: e9 2f mov r30, r25
3be: ff 27 eor r31, r31
3c0: e7 fd sbrc r30, 7
3c2: f0 95 com r31
3c4: ec 0f add r30, r28
3c6: fd 1f adc r31, r29
3c8: 83 81 ldd r24, Z+3 ; 0x03
3ca: 88 23 and r24, r24
3cc: 09 f4 brne .+2 ; 0x3d0
3ce: ab cf rjmp .-170 ; 0x326
3d0: 9f 5f subi r25, 0xFF ; 255
3d2: 93 17 cp r25, r19
3d4: 8c f3 brlt .-30 ; 0x3b8
3d6: 90 e0 ldi r25, 0x00 ; 0
3d8: ef cf rjmp .-34 ; 0x3b8
}
return _TRUE_;
3da: 81 e0 ldi r24, 0x01 ; 1
3dc: 90 e0 ldi r25, 0x00 ; 0
3de: df 91 pop r29
3e0: cf 91 pop r28
3e2: 1f 91 pop r17
3e4: ff 90 pop r15
3e6: ef 90 pop r14
3e8: 08 95 ret
000003ea <KeyboardScan>:
}
Bool KeyboardScan(Void)
{
3ea: cf 93 push r28
Un_Sizet_1 ucVirtualKey = GetKeyCode();
3ec: 0e 94 e1 03 call 0x7c2
3f0: c8 2f mov r28, r24
if ( ucVirtualKey )
3f2: 88 23 and r24, r24
3f4: 09 f4 brne .+2 ; 0x3f8
3f6: 85 c0 rjmp .+266 ; 0x502
{
if ( ucVirtualKey == t_KeyboardData.ucLastKey )
3f8: 28 2f mov r18, r24
3fa: 33 27 eor r19, r19
3fc: 80 91 e9 00 lds r24, 0x00E9
400: 99 27 eor r25, r25
402: 87 fd sbrc r24, 7
404: 90 95 com r25
406: 28 17 cp r18, r24
408: 39 07 cpc r19, r25
40a: 09 f0 breq .+2 ; 0x40e
40c: 5a c0 rjmp .+180 ; 0x4c2
{
if ( t_KeyboardData.wFirstDelay &&
40e: 40 91 e1 00 lds r20, 0x00E1
412: 50 91 e2 00 lds r21, 0x00E2
416: 41 15 cp r20, r1
418: 51 05 cpc r21, r1
41a: 09 f4 brne .+2 ; 0x41e
41c: 6f c0 rjmp .+222 ; 0x4fc
41e: 60 91 e5 00 lds r22, 0x00E5
422: 70 91 e6 00 lds r23, 0x00E6
426: 80 91 e7 00 lds r24, 0x00E7
42a: 90 91 e8 00 lds r25, 0x00E8
42e: 0e 94 ae 02 call 0x55c
432: 88 23 and r24, r24
434: 09 f4 brne .+2 ; 0x438
436: 62 c0 rjmp .+196 ; 0x4fc
tdCompareTickCount(t_KeyboardData.dwLastTick, t_KeyboardData.wFirstDelay))
{
if(g_KeyInfo.bFastRepeatKeyEnable||g_KeyInfo.bSlowRepeatKeyEnable)
438: 80 91 d8 00 lds r24, 0x00D8
43c: 83 70 andi r24, 0x03 ; 3
43e: 51 f0 breq .+20 ; 0x454
{
tdAddVirtualKey(ucVirtualKey);
440: 6c 2f mov r22, r28
442: 89 ed ldi r24, 0xD9 ; 217
444: 90 e0 ldi r25, 0x00 ; 0
446: 0e 94 32 03 call 0x664
g_KeyInfo.bRepeatKeyDown = _TRUE_;
44a: 80 91 d8 00 lds r24, 0x00D8
44e: 80 62 ori r24, 0x20 ; 32
450: 80 93 d8 00 sts 0x00D8, r24
}
//set g_KeyInfo.bKeyboardDown flag
g_KeyInfo.bKeyboardDown = _TRUE_;
454: 80 91 d8 00 lds r24, 0x00D8
458: 80 61 ori r24, 0x10 ; 16
45a: 80 93 d8 00 sts 0x00D8, r24
if(g_KeyInfo.bSlowRepeatKeyEnable)
45e: 81 ff sbrs r24, 1
460: 17 c0 rjmp .+46 ; 0x490
t_KeyboardData.dwLastTick = tdGetTickCount() - t_KeyboardData.wFirstDelay
462: 0e 94 a3 02 call 0x546
466: 9b 01 movw r18, r22
468: ac 01 movw r20, r24
46a: 80 91 e1 00 lds r24, 0x00E1
46e: 90 91 e2 00 lds r25, 0x00E2
472: aa 27 eor r26, r26
474: bb 27 eor r27, r27
476: 28 1b sub r18, r24
478: 39 0b sbc r19, r25
47a: 4a 0b sbc r20, r26
47c: 5b 0b sbc r21, r27
47e: 80 91 e3 00 lds r24, 0x00E3
482: 90 91 e4 00 lds r25, 0x00E4
486: 88 0f add r24, r24
488: 99 1f adc r25, r25
48a: 88 0f add r24, r24
48c: 99 1f adc r25, r25
48e: 12 c0 rjmp .+36 ; 0x4b4
+ t_KeyboardData.wRepeatDelay*4;
else
t_KeyboardData.dwLastTick = tdGetTickCount() - t_KeyboardData.wFirstDelay
490: 0e 94 a3 02 call 0x546
494: 9b 01 movw r18, r22
496: ac 01 movw r20, r24
498: 80 91 e1 00 lds r24, 0x00E1
49c: 90 91 e2 00 lds r25, 0x00E2
4a0: aa 27 eor r26, r26
4a2: bb 27 eor r27, r27
4a4: 28 1b sub r18, r24
4a6: 39 0b sbc r19, r25
4a8: 4a 0b sbc r20, r26
4aa: 5b 0b sbc r21, r27
4ac: 80 91 e3 00 lds r24, 0x00E3
4b0: 90 91 e4 00 lds r25, 0x00E4
4b4: aa 27 eor r26, r26
4b6: bb 27 eor r27, r27
4b8: 82 0f add r24, r18
4ba: 93 1f adc r25, r19
4bc: a4 1f adc r26, r20
4be: b5 1f adc r27, r21
4c0: 15 c0 rjmp .+42 ; 0x4ec
+ t_KeyboardData.wRepeatDelay;
}
}
else
{
g_KeyInfo.bFastRepeatKeyEnable = _FALSE_;
4c2: 80 91 d8 00 lds r24, 0x00D8
g_KeyInfo.bSlowRepeatKeyEnable = _FALSE_;
g_KeyInfo.bRepeatKeyDown = _FALSE_;
4c6: 8c 7d andi r24, 0xDC ; 220
4c8: 80 93 d8 00 sts 0x00D8, r24
tdAddVirtualKey( ucVirtualKey );
4cc: 6c 2f mov r22, r28
4ce: 89 ed ldi r24, 0xD9 ; 217
4d0: 90 e0 ldi r25, 0x00 ; 0
4d2: 0e 94 32 03 call 0x664
//set g_KeyInfo.bKeyboardDown flag
g_KeyInfo.bKeyboardDown = _TRUE_;
4d6: 80 91 d8 00 lds r24, 0x00D8
4da: 80 61 ori r24, 0x10 ; 16
4dc: 80 93 d8 00 sts 0x00D8, r24
t_KeyboardData.ucLastKey = ucVirtualKey;
4e0: c0 93 e9 00 sts 0x00E9, r28
t_KeyboardData.dwLastTick = tdGetTickCount();
4e4: 0e 94 a3 02 call 0x546
4e8: dc 01 movw r26, r24
4ea: cb 01 movw r24, r22
4ec: 80 93 e5 00 sts 0x00E5, r24
4f0: 90 93 e6 00 sts 0x00E6, r25
4f4: a0 93 e7 00 sts 0x00E7, r26
4f8: b0 93 e8 00 sts 0x00E8, r27
}
return _TRUE_;
4fc: 81 e0 ldi r24, 0x01 ; 1
4fe: 90 e0 ldi r25, 0x00 ; 0
500: 20 c0 rjmp .+64 ; 0x542
}
else
{
if (g_KeyInfo.bKeyboardDown)
502: 80 91 d8 00 lds r24, 0x00D8
506: 84 ff sbrs r24, 4
508: 18 c0 rjmp .+48 ; 0x53a
{
if (g_KeyInfo.bRepeatKeyDown) //clear repeat key in fifo
50a: 85 ff sbrs r24, 5
50c: 06 c0 rjmp .+12 ; 0x51a
tdClearKeyInFIFO((FifoHandle)t_VirtualKeyBuffer, t_KeyboardData.ucLastKey);
50e: 60 91 e9 00 lds r22, 0x00E9
512: 89 ed ldi r24, 0xD9 ; 217
514: 90 e0 ldi r25, 0x00 ; 0
516: 0e 94 83 01 call 0x306
g_KeyInfo.bKeyboardDown = _FALSE_;
51a: 90 91 d8 00 lds r25, 0x00D8
g_KeyInfo.bRepeatKeyDown = _FALSE_;
51e: 89 2f mov r24, r25
520: 8f 7c andi r24, 0xCF ; 207
522: 80 93 d8 00 sts 0x00D8, r24
if (g_KeyInfo.bKeyStatusUpEnable)
526: 92 ff sbrs r25, 2
528: 08 c0 rjmp .+16 ; 0x53a
tdAddVirtualKey(t_KeyboardData.ucLastKey | _VK_STATUS_UP_);
52a: 80 91 e9 00 lds r24, 0x00E9
52e: 80 68 ori r24, 0x80 ; 128
530: 68 2f mov r22, r24
532: 89 ed ldi r24, 0xD9 ; 217
534: 90 e0 ldi r25, 0x00 ; 0
536: 0e 94 32 03 call 0x664
}
t_KeyboardData.ucLastKey = 0;
53a: 10 92 e9 00 sts 0x00E9, r1
return _FALSE_;
53e: 80 e0 ldi r24, 0x00 ; 0
540: 90 e0 ldi r25, 0x00 ; 0
542: cf 91 pop r28
544: 08 95 ret
00000546 <tdGetTickCount>:
{
Dword t;
// _DI();
t = t_dwTimerCount;
546: 80 91 ea 00 lds r24, 0x00EA
54a: 90 91 eb 00 lds r25, 0x00EB
54e: a0 91 ec 00 lds r26, 0x00EC
552: b0 91 ed 00 lds r27, 0x00ED
// _EI();
return t;
}
556: bc 01 movw r22, r24
558: cd 01 movw r24, r26
55a: 08 95 ret
0000055c <tdCompareTickCount>:
55c: cf 92 push r12
55e: df 92 push r13
560: ef 92 push r14
562: ff 92 push r15
564: 0f 93 push r16
566: 1f 93 push r17
568: cf 93 push r28
56a: df 93 push r29
56c: 6b 01 movw r12, r22
56e: 7c 01 movw r14, r24
570: 8a 01 movw r16, r20
572: 0e 94 a3 02 call 0x546
576: e8 01 movw r28, r16
578: ee 27 eor r30, r30
57a: ff 27 eor r31, r31
57c: 9b 01 movw r18, r22
57e: ac 01 movw r20, r24
580: 2c 1b sub r18, r28
582: 3d 0b sbc r19, r29
584: 4e 0b sbc r20, r30
586: 5f 0b sbc r21, r31
588: 62 17 cp r22, r18
58a: 73 07 cpc r23, r19
58c: 84 07 cpc r24, r20
58e: 95 07 cpc r25, r21
590: 60 f4 brcc .+24 ; 0x5aa
592: dc 01 movw r26, r24
594: cb 01 movw r24, r22
596: 8c 19 sub r24, r12
598: 9d 09 sbc r25, r13
59a: ae 09 sbc r26, r14
59c: bf 09 sbc r27, r15
59e: 8c 17 cp r24, r28
5a0: 9d 07 cpc r25, r29
5a2: ae 07 cpc r26, r30
5a4: bf 07 cpc r27, r31
5a6: 70 f4 brcc .+28 ; 0x5c4
5a8: 0a c0 rjmp .+20 ; 0x5be
5aa: 6c 15 cp r22, r12
5ac: 7d 05 cpc r23, r13
5ae: 8e 05 cpc r24, r14
5b0: 9f 05 cpc r25, r15
5b2: 40 f0 brcs .+16 ; 0x5c4
5b4: 2c 15 cp r18, r12
5b6: 3d 05 cpc r19, r13
5b8: 4e 05 cpc r20, r14
5ba: 5f 05 cpc r21, r15
5bc: 18 f4 brcc .+6 ; 0x5c4
5be: 80 e0 ldi r24, 0x00 ; 0
5c0: 90 e0 ldi r25, 0x00 ; 0
5c2: 02 c0 rjmp .+4 ; 0x5c8
5c4: 81 e0 ldi r24, 0x01 ; 1
5c6: 90 e0 ldi r25, 0x00 ; 0
5c8: df 91 pop r29
5ca: cf 91 pop r28
5cc: 1f 91 pop r17
5ce: 0f 91 pop r16
5d0: ff 90 pop r15
5d2: ef 90 pop r14
5d4: df 90 pop r13
5d6: cf 90 pop r12
5d8: 08 95 ret
000005da <tdSleep>:
5da: ef 92 push r14
5dc: ff 92 push r15
5de: 0f 93 push r16
5e0: 1f 93 push r17
5e2: cf 93 push r28
5e4: df 93 push r29
5e6: ec 01 movw r28, r24
5e8: 0e 94 a3 02 call 0x546
5ec: 7b 01 movw r14, r22
5ee: 8c 01 movw r16, r24
5f0: ae 01 movw r20, r28
5f2: c8 01 movw r24, r16
5f4: b7 01 movw r22, r14
5f6: 0e 94 ae 02 call 0x55c
5fa: 88 23 and r24, r24
5fc: c9 f3 breq .-14 ; 0x5f0
5fe: df 91 pop r29
600: cf 91 pop r28
602: 1f 91 pop r17
604: 0f 91 pop r16
606: ff 90 pop r15
608: ef 90 pop r14
60a: 08 95 ret
0000060c <tdClearFIFO>:
* @see tdGetFIFO
* @see tdSetFIFO
*/
void tdClearFIFO(FifoHandle fh)
{
60c: fc 01 movw r30, r24
fh->ucHead = 0;
60e: 10 82 st Z, r1
fh->ucTail = 0;
610: 11 82 std Z+1, r1 ; 0x01
612: 08 95 ret
00000614 <tdInitFIFO2>:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -