📄 main.lst
字号:
0000004C 0A000003 BEQ L_4 ; Targ=0x60
55: ON_LED6(); //如果LED6灭的,则点亮它
00000050 E3A01701 MOV R1,#0x40000
00000054 E5100000 LDR R0,=0xFFFFF458
00000058 E5801000 STR R1,[R0,#0x0]
56: }
0000005C EA000015 B L_2 ; Targ=0xB8
00000060 L_4:
59: OFF_LED6(); //如果LED6亮的,则熄灭它
00000060 E3A01701 MOV R1,#0x40000
00000064 E5100000 LDR R0,=0xFFFFF454
00000068 E5801000 STR R1,[R0,#0x0]
61: return;
0000006C EA000011 B L_2 ; Targ=0xB8
62: }
00000070 L_3:
65: if(IRQSTA & TIMER3) //读取IRQ中断状态,判断IRQ中断源
00000070 E5100000 LDR R0,=0xFFFF0000
00000074 E5900000 LDR R0,[R0,#0x0]
00000078 E3100020 TST R0,#0x0020
0000007C 0A00000D BEQ L_2 ; Targ=0xB8
67: T3CLRI=0;
00000080 E3A01000 MOV R1,#0x0
00000084 E5100000 LDR R0,=0xFFFF036C
00000088 E5801000 STR R1,[R0,#0x0]
68: if(LED7STAT)
0000008C E5100000 LDR R0,=0xFFFFF450
00000090 E5900000 LDR R0,[R0,#0x0]
00000094 E3100702 TST R0,#0x80000
00000098 0A000003 BEQ L_7 ; Targ=0xAC
70: ON_LED7(); //如果LED7灭的,则点亮它
0000009C E3A01702 MOV R1,#0x80000
000000A0 E5100000 LDR R0,=0xFFFFF458
000000A4 E5801000 STR R1,[R0,#0x0]
71: }
000000A8 EA000002 B L_2 ; Targ=0xB8
000000AC L_7:
74: OFF_LED7(); //如果LED7亮的,则熄灭它
000000AC E3A01702 MOV R1,#0x80000
000000B0 E5100000 LDR R0,=0xFFFFF454
000000B4 E5801000 STR R1,[R0,#0x0]
78: }
ARM COMPILER V2.50a, main 25/04/06 04:24:57 PAGE 6
000000B8 L_2:
000000B8 E8BD0003 LDMIA R13!,{R0-R1}
000000BC E25EF004 SUBS R15,R14,#0x0004
000000C0 ENDP ; 'IRQ_Handler?A'
*** CODE SEGMENT '?PR?FIQ_Handler?A?main':
85: if(FIQSTA & TIMER0) //读取FIQ中断状态,判断FIQ中断源
00000000 E5108000 LDR R0,=0xFFFF0100
00000004 E5988000 LDR R8,[R8,#0x0]
00000008 E3180004 TST R8,#0x0004
0000000C 0A000012 BEQ L_12 ; Targ=0x5C
87: GP0CLR=(1<<(6+16)); //在P0.6上产生一个上升沿,给Timer1提供1/128秒的时钟信号
00000010 E3A09501 MOV R9,#0x400000
00000014 E5108000 LDR R0,=0xFFFFF428
00000018 E5889000 STR R9,[R8,#0x0]
88: GP0SET=(1<<(6+16));
0000001C E5108000 LDR R0,=0xFFFFF424
00000020 E5889000 STR R9,[R8,#0x0]
89: T0CLRI=0; //清Timer0中断
00000024 E3A09000 MOV R9,#0x0
00000028 E5108000 LDR R0,=0xFFFF030C
0000002C E5889000 STR R9,[R8,#0x0]
90: if(LED4STAT)
00000030 E5108000 LDR R0,=0xFFFFF450
00000034 E5988000 LDR R8,[R8,#0x0]
00000038 E3180801 TST R8,#0x10000
0000003C 0A000003 BEQ L_10 ; Targ=0x50
92: ON_LED4(); //如果LED4灭的,则点亮它
00000040 E3A09801 MOV R9,#0x10000
00000044 E5108000 LDR R0,=0xFFFFF458
00000048 E5889000 STR R9,[R8,#0x0]
93: }
0000004C EA000002 B L_12 ; Targ=0x5C
00000050 L_10:
96: OFF_LED4(); //如果LED4亮的,则熄灭它
00000050 E3A09801 MOV R9,#0x10000
00000054 E5108000 LDR R0,=0xFFFFF454
00000058 E5889000 STR R9,[R8,#0x0]
100: }
0000005C L_12:
0000005C E25EF004 SUBS R15,R14,#0x0004
00000060 ENDP ; 'FIQ_Handler?A'
*** CODE SEGMENT '?PR?DisplayTime?A?main':
111: void DisplayTime(void)
00000000 E92D4000 STMDB R13!,{LR}
115: if(OldSecond==RealTime.Time.Second) //如果秒值没有变化,则不用刷新时间
00000004 E5100000 LDR R0,=RealTime + 0x1 ; RealTime+1
00000008 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+1
0000000C E1A01000 MOV R1,R0
00000010 E5100000 LDR R0,=OldSecond ; OldSecond
00000014 E5900000 LDR R0,[R0,#0x0] ; OldSecond
00000018 E1500001 CMP R0,R1
0000001C 0A00003D BEQ L_14 ; Targ=0x118
120: OldSecond=RealTime.Time.Second; //如果秒值发生了变化,则需要刷新,并保存当前秒值
00000020 E5100000 LDR R0,=OldSecond ; OldSecond
00000024 E5801000 STR R1,[R0,#0x0] ; OldSecond
122: if(LED5STAT) //控制LED5每秒闪烁一次
00000028 E5100000 LDR R0,=0xFFFFF450
0000002C E5900000 LDR R0,[R0,#0x0]
00000030 E3100802 TST R0,#0x20000
00000034 0A000003 BEQ L_15 ; Targ=0x48
124: ON_LED5();
00000038 E3A01802 MOV R1,#0x20000
0000003C E5100000 LDR R0,=0xFFFFF458
00000040 E5801000 STR R1,[R0,#0x0]
125: }
00000044 EA000002 B L_16 ; Targ=0x54
ARM COMPILER V2.50a, main 25/04/06 04:24:57 PAGE 7
00000048 L_15:
128: OFF_LED5();
00000048 E3A01802 MOV R1,#0x20000
0000004C E5100000 LDR R0,=0xFFFFF454
00000050 E5801000 STR R1,[R0,#0x0]
129: }
00000054 L_16:
131: send_a_byte(RealTime.Time.Hour/10+'0'); //显示小时
00000054 E5100000 LDR R0,=RealTime + 0x3 ; RealTime+3
00000058 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+3
0000005C E3A0100A MOV R1,#0xA
00000060 EBFFFFE6 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000064 E1A00001 MOV R0,R1
00000068 E2800030 ADD R0,R0,#0x0030
0000006C EBFFFFE3 BL send_a_byte?A ; Targ=0x0
132: send_a_byte(RealTime.Time.Hour%10+'0');
00000070 E5100000 LDR R0,=RealTime + 0x3 ; RealTime+3
00000074 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+3
00000078 E3A0100A MOV R1,#0xA
0000007C EBFFFFDF BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000080 E1A01000 MOV R1,R0
00000084 E2810030 ADD R0,R1,#0x0030
00000088 EBFFFFDC BL send_a_byte?A ; Targ=0x0
133: send_a_byte(':');
0000008C E3A0003A MOV R0,#0x3A
00000090 EBFFFFDA BL send_a_byte?A ; Targ=0x0
134: send_a_byte(RealTime.Time.Minute/10+'0'); //显示分
00000094 E5100000 LDR R0,=RealTime + 0x2 ; RealTime+2
00000098 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+2
0000009C E3A0100A MOV R1,#0xA
000000A0 EBFFFFD6 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
000000A4 E1A00001 MOV R0,R1
000000A8 E2800030 ADD R0,R0,#0x0030
000000AC EBFFFFD3 BL send_a_byte?A ; Targ=0x0
135: send_a_byte(RealTime.Time.Minute%10+'0');
000000B0 E5100000 LDR R0,=RealTime + 0x2 ; RealTime+2
000000B4 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+2
000000B8 E3A0100A MOV R1,#0xA
000000BC EBFFFFCF BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
000000C0 E1A01000 MOV R1,R0
000000C4 E2810030 ADD R0,R1,#0x0030
000000C8 EBFFFFCC BL send_a_byte?A ; Targ=0x0
136: send_a_byte(':');
000000CC E3A0003A MOV R0,#0x3A
000000D0 EBFFFFCA BL send_a_byte?A ; Targ=0x0
137: send_a_byte(RealTime.Time.Second/10+'0'); //显示秒
000000D4 E5100000 LDR R0,=RealTime + 0x1 ; RealTime+1
000000D8 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+1
000000DC E3A0100A MOV R1,#0xA
000000E0 EBFFFFC6 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
000000E4 E1A00001 MOV R0,R1
000000E8 E2800030 ADD R0,R0,#0x0030
000000EC EBFFFFC3 BL send_a_byte?A ; Targ=0x0
138: send_a_byte(RealTime.Time.Second%10+'0');
000000F0 E5100000 LDR R0,=RealTime + 0x1 ; RealTime+1
000000F4 E5D00000 LDRB R0,[R0,#0x0] ; RealTime+1
000000F8 E3A0100A MOV R1,#0xA
000000FC EBFFFFBF BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000100 E1A01000 MOV R1,R0
00000104 E2810030 ADD R0,R1,#0x0030
00000108 EBFFFFBC BL send_a_byte?A ; Targ=0x0
142: prints("",1);
0000010C E3E00102 MVN R0,#0x102 ; ??S_1
00000110 E3A01001 MOV R1,#0x1
00000114 EBFFFFB9 BL prints?A ; Targ=0x0
143: }
ARM COMPILER V2.50a, main 25/04/06 04:24:57 PAGE 8
00000118 L_14:
00000118 E8BD0008 LDMIA R13!,{R3}
0000011C E12FFF13 BX R3
00000120 ENDP ; 'DisplayTime?A'
*** CODE SEGMENT '?PR?main?main':
147: void main(void)
00000000 E92D4000 STMDB R13!,{LR}
149: SysClkInit();
00000004 EBFFFFFD BL SysClkInit?A ; Targ=0x0
150: UART_init();
00000008 EBFFFFFC BL UART_init?A ; Targ=0x0
151: cls();
0000000C EBFFFFFB BL cls?A ; Targ=0x0
153: EN_LED4();
00000010 E5100000 LDR R0,=0xFFFFF40C
00000014 E5901000 LDR R1,[R0,#0x0]
00000018 E3C1100F BIC R1,R1,#0x000F
0000001C E5801000 STR R1,[R0,#0x0]
00000020 E5100000 LDR R0,=0xFFFFF450
00000024 E5901000 LDR R1,[R0,#0x0]
00000028 E3811401 ORR R1,R1,#0x1000000
0000002C E5801000 STR R1,[R0,#0x0]
154: EN_LED5();
00000030 E5100000 LDR R0,=0xFFFFF40C
00000034 E5901000 LDR R1,[R0,#0x0]
00000038 E3C110F0 BIC R1,R1,#0x00F0
0000003C E5801000 STR R1,[R0,#0x0]
00000040 E5100000 LDR R0,=0xFFFFF450
00000044 E5901000 LDR R1,[R0,#0x0]
00000048 E3811402 ORR R1,R1,#0x2000000
0000004C E5801000 STR R1,[R0,#0x0]
155: EN_LED6();
00000050 E5100000 LDR R0,=0xFFFFF40C
00000054 E5901000 LDR R1,[R0,#0x0]
00000058 E3C11C0F BIC R1,R1,#0x0F00
0000005C E5801000 STR R1,[R0,#0x0]
00000060 E5100000 LDR R0,=0xFFFFF450
00000064 E5901000 LDR R1,[R0,#0x0]
00000068 E3811301 ORR R1,R1,#0x4000000
0000006C E5801000 STR R1,[R0,#0x0]
156: EN_LED7();
00000070 E5100000 LDR R0,=0xFFFFF40C
00000074 E5901000 LDR R1,[R0,#0x0]
00000078 E3C11A0F BIC R1,R1,#0xF000
0000007C E5801000 STR R1,[R0,#0x0]
00000080 E5100000 LDR R0,=0xFFFFF450
00000084 E5901000 LDR R1,[R0,#0x0]
00000088 E3811302 ORR R1,R1,#0x8000000
0000008C E5801000 STR R1,[R0,#0x0]
157: OFF_LED4();
00000090 E3A01801 MOV R1,#0x10000
00000094 E5100000 LDR R0,=0xFFFFF454
00000098 E5801000 STR R1,[R0,#0x0]
158: OFF_LED5();
0000009C E3A01802 MOV R1,#0x20000
000000A0 E5100000 LDR R0,=0xFFFFF454
000000A4 E5801000 STR R1,[R0,#0x0]
159: OFF_LED6();
000000A8 E3A01701 MOV R1,#0x40000
000000AC E5100000 LDR R0,=0xFFFFF454
000000B0 E5801000 STR R1,[R0,#0x0]
160: OFF_LED7();
000000B4 E3A01702 MOV R1,#0x80000
000000B8 E5100000 LDR R0,=0xFFFFF454
000000BC E5801000 STR R1,[R0,#0x0]
162: Timer0Init();
ARM COMPILER V2.50a, main 25/04/06 04:24:57 PAGE 9
000000C0 EBFFFFCE BL Timer0Init?A ; Targ=0x0
163: Timer1Init();
000000C4 EBFFFFCD BL Timer1Init?A ; Targ=0x0
164: Timer2Init();
000000C8 EBFFFFCC BL Timer2Init?A ; Targ=0x0
165: Timer3Init();
000000CC EBFFFFCB BL Timer3Init?A ; Targ=0x0
168: prints("System Start......",1);
000000D0 E3E00102 MVN R0,#0x102 ; ??S_2
000000D4 E3A01001 MOV R1,#0x1
000000D8 EBFFFFC8 BL prints?A ; Targ=0x0
170: while(1)
000000DC L_19:
172: RealTime.TimeData=T1VAL; //读回定时器1的值
000000DC E5100000 LDR R0,=0xFFFF0324
000000E0 E5901000 LDR R1,[R0,#0x0]
000000E4 E5100000 LDR R0,=RealTime ; RealTime
000000E8 E5801000 STR R1,[R0,#0x0] ; RealTime
173: DisplayTime(); //显示时间
000000EC EBFFFFC3 BL DisplayTime?A ; Targ=0x0
174: }
000000F0 EAFFFFF9 B L_19 ; Targ=0xDC
175: }
000000F4 E8BD0008 LDMIA R13!,{R3}
000000F8 E12FFF13 BX R3
000000FC ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = 12
const size = 20
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -