📄 main.txt
字号:
_Z7__SWI_8ii PROC ; __SWI_8(int, int)
;;;663 int __swi(8) add (int i1, int i2);
;;;664 int __SWI_8 (int i1, int i2) {
000350 0002 MOVS r2,r0
;;;665 return (i1 + i2);
000352 1850 ADDS r0,r2,r1
;;;666 }
000354 4770 BX lr
ENDP
main PROC
;;;667
;;;668 int main (void) {
000356 b570 PUSH {r4-r6,lr}
;;;669 int i, j;
;;;670 //char *m;
;;;671 // m = (char *)malloc(1);
;;;672 // free(m);
;;;673 add (i, j);
000358 0029 MOVS r1,r5
00035a 0020 MOVS r0,r4
00035c df08 SVC 0x8 ; formerly SWI
;;;674 os_sys_init (MainTask);//启动ARTX,此函数并不返回main()
00035e 2200 MOVS r2,#0
000360 2100 MOVS r1,#0
000362 483c LDR r0,|L1.1108|
000364 2300 MOVS r3,#0
000366 f7ff fffe BL os_sys_init_user
00036a 2000 MOVS r0,#0
00036c bc70 POP {r4-r6}
00036e bc08 POP {r3}
;;;675 }
000370 4718 BX r3
ENDP
_ZN9SystemObj8BeepInitEv PROC ; SystemObj::BeepInit()
;;;391 void SystemObj::BeepInit(void)
;;;392 {
000372 4916 LDR r1,|L1.972|
;;;393 IO0DIR |= (1 << BEEP); // 设置BEEP控制口为输出
000374 6889 LDR r1,[r1,#8]
000376 2201 MOVS r2,#1
000378 0552 LSLS r2,r2,#21
00037a 4311 ORRS r1,r1,r2
00037c 4a13 LDR r2,|L1.972|
00037e 6091 STR r1,[r2,#8]
;;;394 IO0SET = (1 << BEEP); // BEEP停止蜂鸣
000380 2101 MOVS r1,#1
000382 0549 LSLS r1,r1,#21
000384 6051 STR r1,[r2,#4]
;;;395 }
000386 4770 BX lr
ENDP
_ZN9SystemObj8PortInitEv PROC ; SystemObj::PortInit()
;;;382 void SystemObj::PortInit(void)
;;;383 {
000388 2100 MOVS r1,#0
;;;384 PINSEL0 = 0x00000000; // 设置管脚连接GPIO
00038a 4a33 LDR r2,|L1.1112|
00038c 6011 STR r1,[r2,#0]
;;;385 PINSEL1 = 0x00000000; // 设置管脚连接GPIO
00038e 6051 STR r1,[r2,#4]
;;;386 PINSEL2 = 0x00000000; // 设置管脚连接GPIO
000390 6151 STR r1,[r2,#0x14]
;;;387 IO0DIR = 0x00000000; // 设置P0口为输入
000392 4a0e LDR r2,|L1.972|
000394 6091 STR r1,[r2,#8]
;;;388 IO1DIR = 0x00000000; // 设置P1口为输入
000396 6191 STR r1,[r2,#0x18]
;;;389 }
000398 4770 BX lr
ENDP
_ZN9SystemObj10SystemInitEv PROC ; SystemObj::SystemInit()
;;;375 void SystemObj::SystemInit(void)
;;;376 {
00039a b500 PUSH {lr}
00039c 0003 MOVS r3,r0
;;;377 PortInit();
00039e 0018 MOVS r0,r3
0003a0 f7ff fffe BL _ZN9SystemObj8PortInitEv
;;;378 BeepInit();
0003a4 0018 MOVS r0,r3
0003a6 f7ff fffe BL _ZN9SystemObj8BeepInitEv
;;;379 }
0003aa bc08 POP {r3}
0003ac 4718 BX r3
ENDP
_ZN9SystemObjC1Ev PROC ; SystemObj::SystemObj()
_ZN9SystemObjC2Ev ; Second entry point ; SystemObj::SystemObj__sub_object()
;;;368 SystemObj::SystemObj(void)
;;;369 {
0003ae b530 PUSH {r4,r5,lr}
0003b0 0004 MOVS r4,r0
;;;370 volatile unsigned int start;
;;;371 for (start = 1; start < 1000000; start ++);
0003b2 2501 MOVS r5,#1
0003b4 e000 B |L1.952|
|L1.950|
0003b6 1c6d ADDS r5,r5,#1
|L1.952|
0003b8 4828 LDR r0,|L1.1116|
0003ba 4285 CMP r5,r0
0003bc d3fb BCC |L1.950|
;;;372 SystemInit();
0003be 0020 MOVS r0,r4
0003c0 f7ff fffe BL _ZN9SystemObj10SystemInitEv
0003c4 0020 MOVS r0,r4
0003c6 bc30 POP {r4,r5}
0003c8 bc08 POP {r3}
;;;373 }
0003ca 4718 BX r3
|L1.972|
0003cc e0028000 DCD 0xe0028000
|L1.976|
0003d0 0000ffff DCD 0x0000ffff
|L1.980|
0003d4 7bf00000 DCD 0x7bf00000
|L1.984|
0003d8 00000000 DCD Key
|L1.988|
0003dc 00000000 DCD Beep_Task
|L1.992|
0003e0 00000000 DCD _ZZN6KeyObj14KeyCommandExecEhhE13KeyCommandTab ; KeyObj::KeyCommandExec(unsigned char, unsigned char)::KeyCommandTab
|L1.996|
0003e4 00000000 DCD tmr1
|L1.1000|
0003e8 00000000 DCD Main_Task
|L1.1004|
0003ec 00000000 DCD _Z7KeyTaskv ; KeyTask()
|L1.1008|
0003f0 00000000 DCD Key_Task
|L1.1012|
0003f4 00000000 DCD _Z7LcdTaskv ; LcdTask()
|L1.1016|
0003f8 00000000 DCD Lcd_Task
|L1.1020|
0003fc 00000000 DCD _Z8BeepTaskv ; BeepTask()
|L1.1024|
000400 00000000 DCD Lcd
|L1.1028|
000404 fdb1fdb0 DCB "\260\375\261\375"
000408 fdb3fdb2 DCB "\262\375\263\375"
00040c fdb5fdb4 DCB "\264\375\265\375"
000410 fdb7fdb6 DCB "\266\375\267\375"
000414 00000000 DCB "\0\0\0\0"
|L1.1048|
000418 fdb9fdb8 DCB "\270\375\271\375"
00041c fdbbfdba DCB "\272\375\273\375"
000420 fdbdfdbc DCB "\274\375\275\375"
000424 fdbffdbe DCB "\276\375\277\375"
000428 00000000 DCB "\0\0\0\0"
|L1.1068|
00042c fdc1fdc0 DCB "\300\375\301\375"
000430 fdc3fdc2 DCB "\302\375\303\375"
000434 fdc5fdc4 DCB "\304\375\305\375"
000438 fdc7fdc6 DCB "\306\375\307\375"
00043c 00000000 DCB "\0\0\0\0"
|L1.1088|
000440 fdc9fdc8 DCB "\310\375\311\375"
000444 fdcbfdca DCB "\312\375\313\375"
000448 fdcdfdcc DCB "\314\375\315\375"
00044c fdcffdce DCB "\316\375\317\375"
000450 00000000 DCB "\0\0\0\0"
|L1.1108|
000454 00000000 DCD _Z8MainTaskv ; MainTask()
|L1.1112|
000458 e002c000 DCD 0xe002c000
|L1.1116|
00045c 000f4240 DCD 0x000f4240
ENDP
_ZN9SystemObj8BeepExecEv PROC ; SystemObj::BeepExec()
;;;401 void SystemObj::BeepExec(void)//蜂鸣器发声
;;;402 {
000460 4770 BX lr
;;;403 }
ENDP
_ZN6LcdObj14LcdClearBufferEv PROC ; LcdObj::LcdClearBuffer()
;;;525 void LcdObj::LcdClearBuffer(void)
;;;526 {
000462 b430 PUSH {r4,r5}
;;;527 unsigned char i, j;
;;;528 for (i = 0;i < 4;i ++) {
000464 2100 MOVS r1,#0
000466 e011 B |L1.1164|
;;;529 for (j = 0;j < 16; j ++) {
|L1.1128|
000468 2200 MOVS r2,#0
00046a e007 B |L1.1148|
;;;530 LcdBuffer[i][j] = ' ';
|L1.1132|
00046c 2420 MOVS r4,#0x20
00046e 010d LSLS r5,r1,#4
000470 1dc3 ADDS r3,r0,#7
000472 18eb ADDS r3,r5,r3
000474 549c STRB r4,[r3,r2]
000476 1c53 ADDS r3,r2,#1 ;529
000478 061a LSLS r2,r3,#24 ;529
00047a 0e12 LSRS r2,r2,#24 ;529
|L1.1148|
00047c 2a10 CMP r2,#0x10 ;529
00047e dbf5 BLT |L1.1132| ;529
;;;531 }
;;;532 LcdRowWriteEnable[i] = 1;//允许此行刷新汉字显示
000480 2401 MOVS r4,#1
000482 1cc3 ADDS r3,r0,#3
000484 545c STRB r4,[r3,r1]
000486 1c4b ADDS r3,r1,#1 ;528
000488 0619 LSLS r1,r3,#24 ;528
00048a 0e09 LSRS r1,r1,#24 ;528
|L1.1164|
00048c 2904 CMP r1,#4 ;528
00048e dbeb BLT |L1.1128| ;528
;;;533 }
;;;534 LcdRow = 0;
000490 2300 MOVS r3,#0
000492 7003 STRB r3,[r0,#0]
;;;535 LcdCol = 0;
000494 7043 STRB r3,[r0,#1]
;;;536 }
000496 bc30 POP {r4,r5}
000498 4770 BX lr
ENDP
_ZN6LcdObj11LcdPinSetupEv PROC ; LcdObj::LcdPinSetup()
;;;412 void LcdObj::LcdPinSetup(void)
;;;413 {
00049a b510 PUSH {r4,lr}
00049c 0004 MOVS r4,r0
;;;414 /* 设置MOSI 和SCK 及SS 为输出,其他为输入 */
;;;415 IODIR1 |= (1 << LCDRST)
00049e 4889 LDR r0,|L1.1732|
0004a0 6980 LDR r0,[r0,#0x18]
0004a2 210f MOVS r1,#0xf
0004a4 0409 LSLS r1,r1,#16
0004a6 4308 ORRS r0,r0,r1
0004a8 4986 LDR r1,|L1.1732|
0004aa 6188 STR r0,[r1,#0x18]
;;;416 | (1 << LCDCS)
;;;417 | (1 << LCDSCK)
;;;418 | (1 << LCDSID);//设置输出方式
;;;419 IOCLR1 = (1 << LCDRST) | (1 << LCDCS);
0004ac 2003 MOVS r0,#3
0004ae 0400 LSLS r0,r0,#16
0004b0 61c8 STR r0,[r1,#0x1c]
;;;420 IOSET1 = (1 << LCDSCK) | (1 << LCDSID);
0004b2 0080 LSLS r0,r0,#2
0004b4 6148 STR r0,[r1,#0x14]
;;;421 _delay_loop_(10);
0004b6 200a MOVS r0,#0xa
0004b8 f7ff fffe BL _Z12_delay_loop_j
;;;422 IOSET1 = (1 << LCDRST);
0004bc 2001 MOVS r0,#1
0004be 0400 LSLS r0,r0,#16
0004c0 4980 LDR r1,|L1.1732|
0004c2 6148 STR r0,[r1,#0x14]
;;;423 }
0004c4 bc10 POP {r4}
0004c6 bc08 POP {r3}
0004c8 4718 BX r3
ENDP
_ZN6LcdObj10LcdDelayMsEj PROC ; LcdObj::LcdDelayMs(unsigned)
;;;469 void LcdObj::LcdDelayMs(unsigned int t)
;;;470 {
0004ca 2200 MOVS r2,#0
;;;471 unsigned int i;
;;;472 for(i = 0; i < t; i++)
0004cc e000 B |L1.1232|
|L1.1230|
0004ce 1c52 ADDS r2,r2,#1
|L1.1232|
0004d0 428a CMP r2,r1
0004d2 d3fc BCC |L1.1230|
;;;473 {
;;;474 // _delay_loop_2(250 * FREQ);
;;;475 }
;;;476 }
0004d4 4770 BX lr
ENDP
_ZN6LcdObj7LcdInitEv PROC ; LcdObj::LcdInit()
;;;426 void LcdObj::LcdInit(void)
;;;427 {
0004d6 b510 PUSH {r4,lr}
0004d8 0004 MOVS r4,r0
;;;428 /*---------------------------------------------------
;;;429 LCD模块上电等待延时
;;;430 ----------------------------------------------------*/
;;;431 #ifndef debugmode
;;;432 LcdDelayMs(1000);//上电等待延时1000Ms
0004da 217d MOVS r1,#0x7d
0004dc 00c9 LSLS r1,r1,#3
0004de 0020 MOVS r0,r4
0004e0 f7ff fffe BL _ZN6LcdObj10LcdDelayMsEj
;;;433 #endif
;;;434 LcdPinSetup();//SPI初始化
0004e4 0020 MOVS r0,r4
0004e6 f7ff fffe BL _ZN6LcdObj11LcdPinSetupEv
;;;435 LcdClearBuffer();
0004ea 0020 MOVS r0,r4
0004ec f7ff fffe BL _ZN6LcdObj14LcdClearBufferEv
;;;436 LcdSendCommand(0x20);//发送4位控制命令
0004f0 2120 MOVS r1,#0x20
0004f2 0020 MOVS r0,r4
0004f4 f7ff fffe BL _ZN6LcdObj14LcdSendCommandEc
;;;437 // LcdSendCommand(0x30);//发送8位控制命令//与8位4位无关!!!
;;;438 LcdSendCommand(0x02);//发送位址归位命令,设定DDRAM位址计数器为0
0004f8 2102 MOVS r1,#2
0004fa 0020 MOVS r0,r4
0004fc f7ff fffe BL _ZN6LcdObj14LcdSendCommandEc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -