📄 main.txt
字号:
;;;439 LcdSendCommand(0x04);//发送进入点命令
000500 2104 MOVS r1,#4
000502 0020 MOVS r0,r4
000504 f7ff fffe BL _ZN6LcdObj14LcdSendCommandEc
;;;440 LcdSendCommand(0x0c);//发送开显示关光标命令
000508 210c MOVS r1,#0xc
00050a 0020 MOVS r0,r4
00050c f7ff fffe BL _ZN6LcdObj14LcdSendCommandEc
;;;441 LcdSendCommand(0x01);//发送清除显示命令
000510 2101 MOVS r1,#1
000512 0020 MOVS r0,r4
000514 f7ff fffe BL _ZN6LcdObj14LcdSendCommandEc
;;;442 LcdSendCommand(0x80);//发送设定DDRAM地址0x00命令
000518 2180 MOVS r1,#0x80
00051a 0020 MOVS r0,r4
00051c f7ff fffe BL _ZN6LcdObj14LcdSendCommandEc
;;;443 }
000520 bc10 POP {r4}
000522 bc08 POP {r3}
000524 4718 BX r3
ENDP
_ZN6LcdObjC1Ev PROC ; LcdObj::LcdObj()
_ZN6LcdObjC2Ev ; Second entry point ; LcdObj::LcdObj__sub_object()
;;;405 LcdObj::LcdObj(void)
;;;406 {
000526 b510 PUSH {r4,lr}
000528 0004 MOVS r4,r0
;;;407 LcdInit();
00052a 0020 MOVS r0,r4
00052c f7ff fffe BL _ZN6LcdObj7LcdInitEv
000530 0020 MOVS r0,r4
000532 bc10 POP {r4}
000534 bc08 POP {r3}
;;;408 }
000536 4718 BX r3
ENDP
_ZN6LcdObj10LcdDisplayEjha PROC ; LcdObj::LcdDisplay(unsigned, unsigned char, signed char)
;;;563 void LcdObj::LcdDisplay(unsigned int Val, unsigned char size1, signed char size0)
;;;564 {
000538 b5ff PUSH {r0-r7,lr}
00053a b083 SUB sp,sp,#0xc
00053c 0015 MOVS r5,r2
00053e 001c MOVS r4,r3
;;;565 char str[7], *ptr;
;;;566 unsigned char i;
;;;567 ptr = str + 5;
000540 ae02 ADD r6,sp,#8
000542 1c76 ADDS r6,r6,#1
;;;568 if (size0 > 0) {//有小数
000544 2c00 CMP r4,#0
000546 dd19 BLE |L1.1404|
;;;569 for (i = 0; i < 3; i ++) {
000548 2700 MOVS r7,#0
00054a e00e B |L1.1386|
;;;570 *ptr -- = (Val % 10) + '0';
|L1.1356|
00054c 210a MOVS r1,#0xa
00054e 9804 LDR r0,[sp,#0x10]
000550 f7ff fffe BL __aeabi_uidivmod
000554 3130 ADDS r1,r1,#0x30
000556 7031 STRB r1,[r6,#0]
000558 1e76 SUBS r6,r6,#1
;;;571 Val /= 10;
00055a 210a MOVS r1,#0xa
00055c 9804 LDR r0,[sp,#0x10]
00055e f7ff fffe BL __aeabi_uidivmod
000562 9004 STR r0,[sp,#0x10]
000564 1c78 ADDS r0,r7,#1 ;569
000566 0607 LSLS r7,r0,#24 ;569
000568 0e3f LSRS r7,r7,#24 ;569
|L1.1386|
00056a 2f03 CMP r7,#3 ;569
00056c dbee BLT |L1.1356| ;569
;;;572 }
;;;573 ptr[size0 + 1] = 0;
00056e 2100 MOVS r1,#0
000570 1c60 ADDS r0,r4,#1
000572 5431 STRB r1,[r6,r0]
;;;574 *ptr -- = '.';
000574 202e MOVS r0,#0x2e
000576 7030 STRB r0,[r6,#0]
000578 1e76 SUBS r6,r6,#1
00057a e002 B |L1.1410|
;;;575 }
;;;576 else {
;;;577 *ptr -- = 0;
|L1.1404|
00057c 2000 MOVS r0,#0
00057e 7030 STRB r0,[r6,#0]
000580 1e76 SUBS r6,r6,#1
;;;578 }
;;;579 for (i = 0; i < size1; i ++) {
|L1.1410|
000582 2700 MOVS r7,#0
000584 e01d B |L1.1474|
;;;580 if (i && (Val == 0)) {
|L1.1414|
000586 2f00 CMP r7,#0
000588 d00c BEQ |L1.1444|
00058a 9804 LDR r0,[sp,#0x10]
00058c 2800 CMP r0,#0
00058e d109 BNE |L1.1444|
;;;581 if (size0 < 0) {
000590 2c00 CMP r4,#0
000592 da03 BGE |L1.1436|
;;;582 *ptr -- = '0';
000594 2030 MOVS r0,#0x30
000596 7030 STRB r0,[r6,#0]
000598 1e76 SUBS r6,r6,#1
00059a e00a B |L1.1458|
;;;583 }
;;;584 else {
;;;585 *ptr -- = ' ';
|L1.1436|
00059c 2020 MOVS r0,#0x20
00059e 7030 STRB r0,[r6,#0]
0005a0 1e76 SUBS r6,r6,#1
0005a2 e006 B |L1.1458|
;;;586 }
;;;587 }
;;;588 else *ptr -- = (Val % 10) + '0';
|L1.1444|
0005a4 210a MOVS r1,#0xa
0005a6 9804 LDR r0,[sp,#0x10]
0005a8 f7ff fffe BL __aeabi_uidivmod
0005ac 3130 ADDS r1,r1,#0x30
0005ae 7031 STRB r1,[r6,#0]
0005b0 1e76 SUBS r6,r6,#1
;;;589 Val /= 10;
|L1.1458|
0005b2 210a MOVS r1,#0xa
0005b4 9804 LDR r0,[sp,#0x10]
0005b6 f7ff fffe BL __aeabi_uidivmod
0005ba 9004 STR r0,[sp,#0x10]
0005bc 1c78 ADDS r0,r7,#1 ;579
0005be 0607 LSLS r7,r0,#24 ;579
0005c0 0e3f LSRS r7,r7,#24 ;579
|L1.1474|
0005c2 42af CMP r7,r5 ;579
0005c4 dbdf BLT |L1.1414| ;579
;;;590 }
;;;591 LcdDisplay(ptr + 1);
0005c6 1c71 ADDS r1,r6,#1
0005c8 9803 LDR r0,[sp,#0xc]
0005ca f7ff fffe BL _ZN6LcdObj10LcdDisplayEPKc
;;;592 }
0005ce b007 ADD sp,sp,#0x1c
0005d0 bcf0 POP {r4-r7}
0005d2 bc08 POP {r3}
0005d4 4718 BX r3
ENDP
_ZN6KeyObj7KeyInitEv PROC ; KeyObj::KeyInit()
;;;34 void KeyObj::KeyInit(void)
;;;35 {
0005d6 493b LDR r1,|L1.1732|
;;;36 IODIR1 &= ~((1 << KEY1) | (1 << KEY2) | (1 << KEY3) | (1 << KEY4) | (1 << KEY5) | (1 << KEY6));
0005d8 6989 LDR r1,[r1,#0x18]
0005da 223f MOVS r2,#0x3f
0005dc 0512 LSLS r2,r2,#20
0005de 4391 BICS r1,r1,r2
0005e0 4a38 LDR r2,|L1.1732|
0005e2 6191 STR r1,[r2,#0x18]
;;;37 IODIR1 &= ~((1 << KEYA) | (1 << KEYB) | (1 << KEYC) | (1 << KEYD));
0005e4 0011 MOVS r1,r2
0005e6 6989 LDR r1,[r1,#0x18]
0005e8 220f MOVS r2,#0xf
0005ea 06d2 LSLS r2,r2,#27
0005ec 4391 BICS r1,r1,r2
0005ee 4a35 LDR r2,|L1.1732|
0005f0 6191 STR r1,[r2,#0x18]
;;;38 KeyBuffer = IOPIN1;//取键盘缓冲区
0005f2 0011 MOVS r1,r2
0005f4 6909 LDR r1,[r1,#0x10]
0005f6 60c1 STR r1,[r0,#0xc]
;;;39 KeyBuffer &= (1 << KEY1)
0005f8 4a33 LDR r2,|L1.1736|
0005fa 68c1 LDR r1,[r0,#0xc]
0005fc 4011 ANDS r1,r1,r2
0005fe 60c1 STR r1,[r0,#0xc]
;;;40 | (1 << KEY2)
;;;41 | (1 << KEY3)
;;;42 | (1 << KEY4)
;;;43 | (1 << KEY5)
;;;44 | (1 << KEY6)
;;;45 | (1 << KEYA)
;;;46 | (1 << KEYB)
;;;47 | (1 << KEYC)
;;;48 | (1 << KEYD);//只取有效键值
;;;49 }
000600 4770 BX lr
ENDP
_ZN6KeyObjC1Ev PROC ; KeyObj::KeyObj()
_ZN6KeyObjC2Ev ; Second entry point ; KeyObj::KeyObj__sub_object()
;;;28 KeyObj::KeyObj(void)
;;;29 {
000602 b500 PUSH {lr}
000604 0003 MOVS r3,r0
;;;30 KeyInit();
000606 0018 MOVS r0,r3
000608 f7ff fffe BL _ZN6KeyObj7KeyInitEv
00060c 0018 MOVS r0,r3
00060e bc08 POP {r3}
;;;31 }
000610 4718 BX r3
ENDP
_ZN6KeyObj4ExecEv PROC ; KeyObj::Exec()
;;;87 void KeyObj::Exec(void)
;;;88 {
000612 b510 PUSH {r4,lr}
000614 0004 MOVS r4,r0
;;;89 if (KeyCount == GetKeyVal()) {//有键压下(每次只取1键以实现“零耗时消除键盘抖动”)
000616 0020 MOVS r0,r4
000618 f7ff fffe BL _ZN6KeyObj9GetKeyValEv
00061c 7a21 LDRB r1,[r4,#8]
00061e 4288 CMP r0,r1
000620 d10f BNE |L1.1602|
;;;90 if (KeyTest[KeyCount] < SystemKeyPushTime) {//100*20mS=2S//压键长短判别
000622 7a20 LDRB r0,[r4,#8]
000624 5c20 LDRB r0,[r4,r0]
000626 2828 CMP r0,#0x28
000628 da07 BGE |L1.1594|
;;;91 KeyTest[KeyCount] ++;//计数每20mS键盘压键的次数(选2较好些)
00062a 7a20 LDRB r0,[r4,#8]
00062c 5c20 LDRB r0,[r4,r0]
00062e 1c40 ADDS r0,r0,#1
000630 7a21 LDRB r1,[r4,#8]
000632 5460 STRB r0,[r4,r1]
000634 7a20 LDRB r0,[r4,#8]
000636 5c20 LDRB r0,[r4,r0]
000638 e008 B |L1.1612|
;;;92 if (KeyTest[KeyCount] == SystemKeyPushNum) {//键刚压下//短压键
;;;93 // KeyWaitCount[KeyCount] = 8000;//键盘压键释放计数器
;;;94 // KeyCommandExec(1);//短压键事件处理(1)
;;;95 // ::Ctrl.BeepStart(DefBeep_1);//蜂鸣器发1声
;;;96 }
;;;97 }
;;;98 else {//长压键 20mS*100=2S
;;;99 KeyTest[KeyCount] = SystemKeyPushNum;//再压3S继续执行下一次长压键
|L1.1594|
00063a 2003 MOVS r0,#3
00063c 7a21 LDRB r1,[r4,#8]
00063e 5460 STRB r0,[r4,r1]
000640 e004 B |L1.1612|
|L1.1602|
000642 7a20 LDRB r0,[r4,#8]
000644 5c20 LDRB r0,[r4,r0]
;;;100 // if (KeyWaitCount[KeyCount] == 0) {
;;;101 // KeyWaitCount[KeyCount] = 8000;//键盘压键释放计数器
;;;102 // }
;;;103 // KeyCommandExec(2);//长压键3S事件处理(2)
;;;104 // ::Ctrl.BeepStart(DefBeep_2);//蜂鸣器发2声
;;;105 }
;;;106 }
;;;107 else {//无键压下
;;;108 if (KeyTest[KeyCount] >= SystemKeyPushNum) {//键释放
;;;109 // KeyWaitCount[KeyCount] = 8000;//键盘压键释放计数器
;;;110 // KeyCommandExec(0);//键释放事件处理(0)
;;;111 }
;;;112 else {//无键压下或干扰
;;;113 }
;;;114 KeyTest[KeyCount] = 0;//清除压键计数器
000646 2000 MOVS r0,#0
000648 7a21 LDRB r1,[r4,#8]
00064a 5460 STRB r0,[r4,r1]
;;;115 }
;;;116 KeyCount ++;//为下次扫描做准备
|L1.1612|
00064c 7a20 LDRB r0,[r4,#8]
00064e 1c40 ADDS r0,r0,#1
000650 7220 STRB r0,[r4,#8]
;;;117 if (KeyCount >= 10) KeyCount = 0;//只有10个键
000652 7a20 LDRB r0,[r4,#8]
000654 280a CMP r0,#0xa
000656 db01 BLT |L1.1628|
000658 2000 MOVS r0,#0
00065a 7220 STRB r0,[r4,#8]
;;;118 }
|L1.1628|
00065c bc10 POP {r4}
00065e bc08 POP {r3}
000660 4718 BX r3
ENDP
_ZN6KeyObj5Key00Ev PROC ; KeyObj::Key00()
;;;149 void KeyObj::Key00(void)
;;;150 {
000662 b510 PUSH {r4,lr}
;;;151 os_evt_set (8, Beep_Task);//开关BEEP
000664 4819 LDR r0,|L1.1740|
000666 6801 LDR r1,[r0,#0] ; Beep_Task
000668 2008 MOVS r0,#8
00066a f7ff fffe BL os_evt_set
;;;152 }
00066e bc10 POP {r4}
000670 bc08 POP {r3}
000672 4718 BX r3
ENDP
_ZN6KeyObj5Key01Ev PROC ; KeyObj::Key01()
;;;158 void KeyObj::Key01(void)
;;;159 {
000674 4770 BX lr
;;;160 }
ENDP
_ZN6KeyObj5Key02Ev PROC ; KeyObj::Key02()
;;;166 void KeyObj::Key02(void)
;;;167 {
000676 4770 BX lr
;;;168 }
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -