📄 main.txt
字号:
000190 0005 MOVS r5,r0
;;;651 while (i) {
000192 e00e B |L1.434|
;;;652 IO0CLR = (1 << BEEP); // BEEP 蜂鸣
|L1.404|
000194 2001 MOVS r0,#1
000196 0540 LSLS r0,r0,#21
000198 498c LDR r1,|L1.972|
00019a 60c8 STR r0,[r1,#0xc]
;;;653 os_dly_wait (10);//延时100mS
00019c 200a MOVS r0,#0xa
00019e f7ff fffe BL os_dly_wait
;;;654 IO0SET = (1 << BEEP); // BEEP停止蜂鸣
0001a2 2001 MOVS r0,#1
0001a4 0540 LSLS r0,r0,#21
0001a6 4989 LDR r1,|L1.972|
0001a8 6048 STR r0,[r1,#4]
;;;655 os_dly_wait (10);//延时100mS
0001aa 200a MOVS r0,#0xa
0001ac f7ff fffe BL os_dly_wait
;;;656 i --;
0001b0 1e6d SUBS r5,r5,#1
|L1.434|
0001b2 2d00 CMP r5,#0 ;651
0001b4 d1ee BNE |L1.404| ;651
0001b6 e7e1 B |L1.380| ;651
;;;657 }
;;;658 }
;;;659 }
;;;660 }
ENDP
_Z7LcdTaskv PROC ; LcdTask()
;;;632
;;;633 void LcdTask (void) __task {
0001b8 b510 PUSH {r4,lr}
;;;634 OS_RESULT result;
;;;635 for (;;) {
0001ba 46c0 MOV r8,r8
;;;636 result = os_evt_wait_or(0xffff, 0xffff);//等待LcdTask任务事件发生
|L1.444|
0001bc 2200 MOVS r2,#0
0001be 4984 LDR r1,|L1.976|
0001c0 0008 MOVS r0,r1
0001c2 f7ff fffe BL os_evt_wait
;;;637 if(result == OS_R_EVT) {
;;;638 }
;;;639 // Lcd.LcdDisplayBuffer();
;;;640 os_tsk_pass();
0001c6 f7ff fffe BL os_tsk_pass
0001ca e7f7 B |L1.444|
;;;641 }
;;;642 }
ENDP
_ZN6KeyObj9GetKeyValEv PROC ; KeyObj::GetKeyVal()
;;;53 unsigned char KeyObj::GetKeyVal(void)
;;;54 {
0001cc b410 PUSH {r4}
0001ce 0001 MOVS r1,r0
;;;55 unsigned char KeyTestVal = 0xff;
0001d0 20ff MOVS r0,#0xff
;;;56 unsigned int KeyVal, KeyNewVal;
;;;57 KeyNewVal = IOPIN1;
0001d2 4c7e LDR r4,|L1.972|
0001d4 6924 LDR r4,[r4,#0x10]
0001d6 0023 MOVS r3,r4
;;;58 KeyNewVal &= (1 << KEY1)
0001d8 4c7e LDR r4,|L1.980|
0001da 4023 ANDS r3,r3,r4
;;;59 | (1 << KEY2)
;;;60 | (1 << KEY3)
;;;61 | (1 << KEY4)
;;;62 | (1 << KEY5)
;;;63 | (1 << KEY6)
;;;64 | (1 << KEYA)
;;;65 | (1 << KEYB)
;;;66 | (1 << KEYC)
;;;67 | (1 << KEYD);//只取有效键值
;;;68 if (KeyNewVal != KeyBuffer) {
0001dc 68cc LDR r4,[r1,#0xc]
0001de 429c CMP r4,r3
0001e0 d03e BEQ |L1.608|
;;;69 KeyVal = KeyNewVal ^ KeyBuffer;
0001e2 68cc LDR r4,[r1,#0xc]
0001e4 0022 MOVS r2,r4
0001e6 405a EORS r2,r2,r3
;;;70 if (KeyVal & (1 << KEY1)) KeyTestVal = 0;
0001e8 2401 MOVS r4,#1
0001ea 0524 LSLS r4,r4,#20
0001ec 4222 TST r2,r4
0001ee d001 BEQ |L1.500|
0001f0 2000 MOVS r0,#0
0001f2 e034 B |L1.606|
;;;71 else if (KeyVal & (1 << KEY2)) KeyTestVal = 1;
|L1.500|
0001f4 2401 MOVS r4,#1
0001f6 0564 LSLS r4,r4,#21
0001f8 4222 TST r2,r4
0001fa d001 BEQ |L1.512|
0001fc 2001 MOVS r0,#1
0001fe e02e B |L1.606|
;;;72 else if (KeyVal & (1 << KEY3)) KeyTestVal = 2;
|L1.512|
000200 2401 MOVS r4,#1
000202 05a4 LSLS r4,r4,#22
000204 4222 TST r2,r4
000206 d001 BEQ |L1.524|
000208 2002 MOVS r0,#2
00020a e028 B |L1.606|
;;;73 else if (KeyVal & (1 << KEY4)) KeyTestVal = 3;
|L1.524|
00020c 2401 MOVS r4,#1
00020e 05e4 LSLS r4,r4,#23
000210 4222 TST r2,r4
000212 d001 BEQ |L1.536|
000214 2003 MOVS r0,#3
000216 e022 B |L1.606|
;;;74 else if (KeyVal & (1 << KEY5)) KeyTestVal = 4;
|L1.536|
000218 2401 MOVS r4,#1
00021a 0624 LSLS r4,r4,#24
00021c 4222 TST r2,r4
00021e d001 BEQ |L1.548|
000220 2004 MOVS r0,#4
000222 e01c B |L1.606|
;;;75 else if (KeyVal & (1 << KEY6)) KeyTestVal = 5;
|L1.548|
000224 2401 MOVS r4,#1
000226 0664 LSLS r4,r4,#25
000228 4222 TST r2,r4
00022a d001 BEQ |L1.560|
00022c 2005 MOVS r0,#5
00022e e016 B |L1.606|
;;;76 else if (KeyVal & (1 << KEYA)) KeyTestVal = 6;
|L1.560|
000230 2401 MOVS r4,#1
000232 06e4 LSLS r4,r4,#27
000234 4222 TST r2,r4
000236 d001 BEQ |L1.572|
000238 2006 MOVS r0,#6
00023a e010 B |L1.606|
;;;77 else if (KeyVal & (1 << KEYB)) KeyTestVal = 7;
|L1.572|
00023c 2401 MOVS r4,#1
00023e 0724 LSLS r4,r4,#28
000240 4222 TST r2,r4
000242 d001 BEQ |L1.584|
000244 2007 MOVS r0,#7
000246 e00a B |L1.606|
;;;78 else if (KeyVal & (1 << KEYC)) KeyTestVal = 8;
|L1.584|
000248 2401 MOVS r4,#1
00024a 0764 LSLS r4,r4,#29
00024c 4222 TST r2,r4
00024e d001 BEQ |L1.596|
000250 2008 MOVS r0,#8
000252 e004 B |L1.606|
;;;79 else if (KeyVal & (1 << KEYD)) KeyTestVal = 9;
|L1.596|
000254 2401 MOVS r4,#1
000256 07a4 LSLS r4,r4,#30
000258 4222 TST r2,r4
00025a d000 BEQ |L1.606|
00025c 2009 MOVS r0,#9
;;;80 KeyBuffer = KeyNewVal;
|L1.606|
00025e 60cb STR r3,[r1,#0xc]
;;;81 }
;;;82 return KeyTestVal;//无键压下为0xff
|L1.608|
000260 bc10 POP {r4}
;;;83 }
000262 4770 BX lr
ENDP
_Z7KeyTaskv PROC ; KeyTask()
;;;619
;;;620 void KeyTask (void) __task {
000264 b570 PUSH {r4-r6,lr}
;;;621 unsigned char KeyVal;
;;;622 os_itv_set(5);//每个节拍醒来一次
000266 2005 MOVS r0,#5
000268 f7ff fffe BL os_itv_set
;;;623 for (;;) {
00026c 46c0 MOV r8,r8
;;;624 os_itv_wait();//
|L1.622|
00026e f7ff fffe BL os_itv_wait
;;;625 KeyVal = Key.GetKeyVal();
000272 4859 LDR r0,|L1.984|
000274 f7ff fffe BL _ZN6KeyObj9GetKeyValEv
000278 0004 MOVS r4,r0
;;;626 if (KeyVal != 0xff) {
00027a 2cff CMP r4,#0xff
00027c d0f7 BEQ |L1.622|
;;;627 os_evt_set (1, Beep_Task);//开关BEEP
00027e 4857 LDR r0,|L1.988|
000280 6801 LDR r1,[r0,#0] ; Beep_Task
000282 2001 MOVS r0,#1
000284 f7ff fffe BL os_evt_set
;;;628 Key.KeyCommandExec(1, KeyVal);
000288 46c0 MOV r8,r8
00028a 2001 MOVS r0,#1 ;134
00028c 2803 CMP r0,#3 ;134
00028e da09 BGE |L1.676| ;134
000290 2c09 CMP r4,#9 ;134
000292 dc07 BGT |L1.676| ;134
000294 2328 MOVS r3,#0x28 ;136
000296 4358 MULS r0,r3,r0 ;136
000298 4951 LDR r1,|L1.992| ;136
00029a 1840 ADDS r0,r0,r1 ;136
00029c 00a1 LSLS r1,r4,#2 ;136
00029e 5845 LDR r5,[r0,r1] ;136
0002a0 f7ff fffe BL __ARM_call_via_r5 ;137
|L1.676|
0002a4 46c0 MOV r8,r8 ;139
0002a6 e7e2 B |L1.622|
;;;629 }
;;;630 }
;;;631 }
ENDP
_Z8MainTaskv PROC ; MainTask()
;;;597
;;;598 void MainTask (void) __task {
0002a8 b510 PUSH {r4,lr}
;;;599 tmr1 = os_tmr_create (10, 1);
0002aa 2101 MOVS r1,#1
0002ac 200a MOVS r0,#0xa
0002ae f7ff fffe BL os_tmr_create
0002b2 494c LDR r1,|L1.996|
0002b4 6008 STR r0,[r1,#0] ; tmr1
;;;600 Main_Task = os_tsk_self ();
0002b6 f7ff fffe BL os_tsk_self
0002ba 494b LDR r1,|L1.1000|
0002bc 6008 STR r0,[r1,#0] ; Main_Task
;;;601 Key_Task = os_tsk_create (KeyTask, 1);//创建KeyTask任务及级别
0002be 2200 MOVS r2,#0
0002c0 2101 MOVS r1,#1
0002c2 484a LDR r0,|L1.1004|
0002c4 2300 MOVS r3,#0
0002c6 f7ff fffe BL os_tsk_create_user
0002ca 4949 LDR r1,|L1.1008|
0002cc 6008 STR r0,[r1,#0] ; Key_Task
;;;602 Lcd_Task = os_tsk_create (LcdTask, 1);//创建LcdTask任务及级别
0002ce 2200 MOVS r2,#0
0002d0 2101 MOVS r1,#1
0002d2 4848 LDR r0,|L1.1012|
0002d4 2300 MOVS r3,#0
0002d6 f7ff fffe BL os_tsk_create_user
0002da 4947 LDR r1,|L1.1016|
0002dc 6008 STR r0,[r1,#0] ; Lcd_Task
;;;603 Beep_Task = os_tsk_create (BeepTask, 10);//创建BeepTask任务及级别
0002de 2200 MOVS r2,#0
0002e0 210a MOVS r1,#0xa
0002e2 4846 LDR r0,|L1.1020|
0002e4 2300 MOVS r3,#0
0002e6 f7ff fffe BL os_tsk_create_user
0002ea 493c LDR r1,|L1.988|
0002ec 6008 STR r0,[r1,#0] ; Beep_Task
;;;604 Lcd.SetLcdDisplayPos(0, 0);//汉字定位到上行左端
0002ee 2200 MOVS r2,#0
0002f0 2100 MOVS r1,#0
0002f2 4843 LDR r0,|L1.1024|
0002f4 f7ff fffe BL _ZN6LcdObj16SetLcdDisplayPosEhh
;;;605 os_evt_set (8, Beep_Task);//开机BEEP响8下
0002f8 4838 LDR r0,|L1.988|
0002fa 6801 LDR r1,[r0,#0] ; Beep_Task
0002fc 2008 MOVS r0,#8
0002fe f7ff fffe BL os_evt_set
;;;606 for (;;) {
000302 46c0 MOV r8,r8
;;;607 //汉字0xfd出错测试
;;;608 Lcd.LcdDisplay("褒饼昌除待谍洱俘");
|L1.772|
000304 a13f ADR r1,|L1.1028|
000306 483e LDR r0,|L1.1024|
000308 f7ff fffe BL _ZN6LcdObj10LcdDisplayEPKc
;;;609 Lcd.SetLcdDisplayPos(1, 0);//汉字定位到上行左端
00030c 2200 MOVS r2,#0
00030e 2101 MOVS r1,#1
000310 483b LDR r0,|L1.1024|
000312 f7ff fffe BL _ZN6LcdObj16SetLcdDisplayPosEhh
;;;610 Lcd.LcdDisplay("庚过糊积箭烬君魁");
000316 a140 ADR r1,|L1.1048|
000318 4839 LDR r0,|L1.1024|
00031a f7ff fffe BL _ZN6LcdObj10LcdDisplayEPKc
;;;611 Lcd.SetLcdDisplayPos(2, 0);//汉字定位到上行左端
00031e 2200 MOVS r2,#0
000320 2102 MOVS r1,#2
000322 4837 LDR r0,|L1.1024|
000324 f7ff fffe BL _ZN6LcdObj16SetLcdDisplayPosEhh
;;;612 Lcd.LcdDisplay("例笼慢谬凝琵讫驱");
000328 a140 ADR r1,|L1.1068|
00032a 4835 LDR r0,|L1.1024|
00032c f7ff fffe BL _ZN6LcdObj10LcdDisplayEPKc
;;;613 Lcd.SetLcdDisplayPos(3, 0);//汉字定位到上行左端
000330 2200 MOVS r2,#0
000332 2103 MOVS r1,#3
000334 4832 LDR r0,|L1.1024|
000336 f7ff fffe BL _ZN6LcdObj16SetLcdDisplayPosEhh
;;;614 Lcd.LcdDisplay("三升数她听妄锡淆");
00033a a141 ADR r1,|L1.1088|
00033c 4830 LDR r0,|L1.1024|
00033e f7ff fffe BL _ZN6LcdObj10LcdDisplayEPKc
;;;615 ::Lcd.LcdDisplayBuffer();//刷新LCD显示缓冲区
000342 482f LDR r0,|L1.1024|
000344 f7ff fffe BL _ZN6LcdObj16LcdDisplayBufferEv
;;;616 os_dly_wait (100);//延时100mS
000348 2064 MOVS r0,#0x64
00034a f7ff fffe BL os_dly_wait
00034e e7d9 B |L1.772|
;;;617 }
;;;618 }
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -