📄 main.lst
字号:
0000000C 4800 LDR R0,=0xFFFFF40C
0000000E 6801 LDR R1,[R0,#0x0]
00000010 4391 BIC R1,R2
00000012 6001 STR R1,[R0,#0x0]
00000014 4800 LDR R2,=0x1000000
00000016 4800 LDR R0,=0xFFFFF450
00000018 6801 LDR R1,[R0,#0x0]
0000001A 4311 ORR R1,R2
0000001C 6001 STR R1,[R0,#0x0]
60: EN_LED5();
0000001E 22F0 MOV R2,#0xF0
00000020 4800 LDR R0,=0xFFFFF40C
00000022 6801 LDR R1,[R0,#0x0]
00000024 4391 BIC R1,R2
00000026 6001 STR R1,[R0,#0x0]
00000028 4800 LDR R2,=0x2000000
0000002A 4800 LDR R0,=0xFFFFF450
0000002C 6801 LDR R1,[R0,#0x0]
0000002E 4311 ORR R1,R2
00000030 6001 STR R1,[R0,#0x0]
61: EN_LED6();
00000032 4800 LDR R2,=0xF00
00000034 4800 LDR R0,=0xFFFFF40C
00000036 6801 LDR R1,[R0,#0x0]
00000038 4391 BIC R1,R2
0000003A 6001 STR R1,[R0,#0x0]
0000003C 4800 LDR R2,=0x4000000
0000003E 4800 LDR R0,=0xFFFFF450
00000040 6801 LDR R1,[R0,#0x0]
00000042 4311 ORR R1,R2
00000044 6001 STR R1,[R0,#0x0]
62: EN_LED7();
00000046 4800 LDR R2,=0xF000
00000048 4800 LDR R0,=0xFFFFF40C
0000004A 6801 LDR R1,[R0,#0x0]
0000004C 4391 BIC R1,R2
0000004E 6001 STR R1,[R0,#0x0]
00000050 4800 LDR R2,=0x8000000
00000052 4800 LDR R0,=0xFFFFF450
00000054 6801 LDR R1,[R0,#0x0]
00000056 4311 ORR R1,R2
00000058 6001 STR R1,[R0,#0x0]
64: OFF_LED4();
0000005A 4800 LDR R1,=0x10000
0000005C 4800 LDR R0,=0xFFFFF454
0000005E 6001 STR R1,[R0,#0x0]
65: OFF_LED5();
00000060 4800 LDR R1,=0x20000
00000062 4800 LDR R0,=0xFFFFF454
00000064 6001 STR R1,[R0,#0x0]
66: OFF_LED6();
00000066 4800 LDR R1,=0x40000
00000068 4800 LDR R0,=0xFFFFF454
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 5
0000006A 6001 STR R1,[R0,#0x0]
67: OFF_LED7();
0000006C 4800 LDR R1,=0x80000
0000006E 4800 LDR R0,=0xFFFFF454
00000070 6001 STR R1,[R0,#0x0]
71: while(1)
00000072 L_11:
73: DelayXms(10); //延迟10mS,即每隔10mS扫描一次键盘。
00000072 200A MOV R0,#0xA
00000074 F7FF BL DelayXms?T ; T=0x0001 (1)
00000076 FFC4 BL DelayXms?T ; T=0x0001 (2)
74: ScanKey(); //也可以将将键盘扫描程序放到10mS的定时中断中,这样主程序就可以安心干活了
00000078 F7FF BL ScanKey?T ; T=0x0001 (1)
0000007A FFC2 BL ScanKey?T ; T=0x0001 (2)
76: if(Key.Value) //如果有按键按下
0000007C 4800 LDR R0,=Key ; Key
0000007E 6800 LDR R0,[R0,#0x0] ; Key
00000080 2800 CMP R0,#0x0
00000082 D0F6 BEQ L_11 ; T=0x00000072
78: switch(Key.Value)
00000084 2802 CMP R0,#0x2
00000086 D018 BEQ L_16 ; T=0x000000BA
00000088 2803 CMP R0,#0x3
0000008A D021 BEQ L_17 ; T=0x000000D0
0000008C 2804 CMP R0,#0x4
0000008E D02A BEQ L_18 ; T=0x000000E6
00000090 2881 CMP R0,#0x81
00000092 D033 BEQ L_19 ; T=0x000000FC
00000094 2882 CMP R0,#0x82
00000096 D035 BEQ L_20 ; T=0x00000104
00000098 2883 CMP R0,#0x83
0000009A D037 BEQ L_21 ; T=0x0000010C
0000009C 2884 CMP R0,#0x84
0000009E D039 BEQ L_22 ; T=0x00000114
000000A0 2801 CMP R0,#0x1
000000A2 D13A BNE L_14 ; T=0x0000011A
81: case KEY1: //短按键或者按住键2秒不放的自动按键,则开、关LED
000000A4 L_15:
82: if(GP3DAT & (1<<(16+LED4)))ON_LED4();
000000A4 4800 LDR R0,=0xFFFFF450
000000A6 6800 LDR R0,[R0,#0x0]
000000A8 4800 LDR R1,=0x10000
000000AA 4208 TST R0,R1
000000AC D002 BEQ L_23 ; T=0x000000B4
000000AE 4800 LDR R0,=0xFFFFF458
000000B0 6001 STR R1,[R0,#0x0]
000000B2 E032 B L_14 ; T=0x0000011A
000000B4 L_23:
83: else OFF_LED4();
000000B4 4800 LDR R0,=0xFFFFF454
000000B6 6001 STR R1,[R0,#0x0]
84: break;
000000B8 E02F B L_14 ; T=0x0000011A
85: case KEY2:
000000BA L_16:
86: if(GP3DAT & (1<<(16+LED5)))ON_LED5();
000000BA 4800 LDR R0,=0xFFFFF450
000000BC 6800 LDR R0,[R0,#0x0]
000000BE 4800 LDR R1,=0x20000
000000C0 4208 TST R0,R1
000000C2 D002 BEQ L_25 ; T=0x000000CA
000000C4 4800 LDR R0,=0xFFFFF458
000000C6 6001 STR R1,[R0,#0x0]
000000C8 E027 B L_14 ; T=0x0000011A
000000CA L_25:
87: else OFF_LED5();
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 6
000000CA 4800 LDR R0,=0xFFFFF454
000000CC 6001 STR R1,[R0,#0x0]
88: break;
000000CE E024 B L_14 ; T=0x0000011A
89: case KEY3:
000000D0 L_17:
90: if(GP3DAT & (1<<(16+LED6)))ON_LED6();
000000D0 4800 LDR R0,=0xFFFFF450
000000D2 6800 LDR R0,[R0,#0x0]
000000D4 4800 LDR R1,=0x40000
000000D6 4208 TST R0,R1
000000D8 D002 BEQ L_27 ; T=0x000000E0
000000DA 4800 LDR R0,=0xFFFFF458
000000DC 6001 STR R1,[R0,#0x0]
000000DE E01C B L_14 ; T=0x0000011A
000000E0 L_27:
91: else OFF_LED6();
000000E0 4800 LDR R0,=0xFFFFF454
000000E2 6001 STR R1,[R0,#0x0]
92: break;
000000E4 E019 B L_14 ; T=0x0000011A
93: case KEY4:
000000E6 L_18:
94: if(GP3DAT & (1<<(16+LED7)))ON_LED7();
000000E6 4800 LDR R0,=0xFFFFF450
000000E8 6800 LDR R0,[R0,#0x0]
000000EA 4800 LDR R1,=0x80000
000000EC 4208 TST R0,R1
000000EE D002 BEQ L_29 ; T=0x000000F6
000000F0 4800 LDR R0,=0xFFFFF458
000000F2 6001 STR R1,[R0,#0x0]
000000F4 E011 B L_14 ; T=0x0000011A
000000F6 L_29:
95: else OFF_LED7();
000000F6 4800 LDR R0,=0xFFFFF454
000000F8 6001 STR R1,[R0,#0x0]
96: break;
000000FA E00E B L_14 ; T=0x0000011A
98: case KEY1L: ON_LED4();break; //长按键,打开LED
000000FC L_19:
000000FC 4800 LDR R1,=0x10000
000000FE 4800 LDR R0,=0xFFFFF458
00000100 6001 STR R1,[R0,#0x0]
00000102 E00A B L_14 ; T=0x0000011A
99: case KEY2L: ON_LED5();break;
00000104 L_20:
00000104 4800 LDR R1,=0x20000
00000106 4800 LDR R0,=0xFFFFF458
00000108 6001 STR R1,[R0,#0x0]
0000010A E006 B L_14 ; T=0x0000011A
100: case KEY3L: ON_LED6();break;
0000010C L_21:
0000010C 4800 LDR R1,=0x40000
0000010E 4800 LDR R0,=0xFFFFF458
00000110 6001 STR R1,[R0,#0x0]
00000112 E002 B L_14 ; T=0x0000011A
101: case KEY4L: ON_LED7();break;
00000114 L_22:
00000114 4800 LDR R1,=0x80000
00000116 4800 LDR R0,=0xFFFFF458
00000118 6001 STR R1,[R0,#0x0]
102: }
0000011A L_14:
103: Key.Value=0;
0000011A 2100 MOV R1,#0x0
0000011C 4800 LDR R0,=Key ; Key
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 7
0000011E 6001 STR R1,[R0,#0x0] ; Key
105: }
00000120 E7A7 B L_11 ; T=0x00000072
106: }
00000122 BC08 POP {R3}
00000124 4718 BX R3
00000126 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -