📄 target.txt
字号:
000198 e3a0c002 MOV r12,#2
00019c e5c0c000 STRB r12,[r0,#0]
;;;327
;;;328 /* 设置串行口 */
;;;329 // InitialiseUART0(115200);
;;;330
;;;331 /* 设置实时时钟 */
;;;332 CCR = 1;
0001a0 e59f01e4 LDR r0,|L1.908|
0001a4 e5c03008 STRB r3,[r0,#8]
;;;333 PREINT = Fpclk / 32768 - 1;
0001a8 e3a03e15 MOV r3,#0x150
0001ac e1c038b0 STRH r3,[r0,#0x80]
;;;334 PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
0001b0 e3a03901 MOV r3,#0x4000
0001b4 e1c038b4 STRH r3,[r0,#0x84]
;;;335 YEAR = 2004;
0001b8 e59f31d0 LDR r3,|L1.912|
0001bc e1c033bc STRH r3,[r0,#0x3c]
;;;336 MONTH = 3;
0001c0 e5c01038 STRB r1,[r0,#0x38]
;;;337 DOM = 25;
0001c4 e3a01019 MOV r1,#0x19
0001c8 e5c0102c STRB r1,[r0,#0x2c]
;;;338
;;;339
;;;340 VICIntEnClr = 0xffffffff;
0001cc e3e00000 MVN r0,#0
0001d0 e5020fec STR r0,[r2,#-0xfec]
;;;341 VICVectAddr = 0;
0001d4 e5022fd0 STR r2,[r2,#-0xfd0]
;;;342 VICIntSelect = 0;
0001d8 e5022ff4 STR r2,[r2,#-0xff4]
;;;343 T0IR = 0xffffffff;
0001dc e59f1194 LDR r1,|L1.888|
0001e0 e5810000 STR r0,[r1,#0]
;;;344 T0TCR = 0X02;
0001e4 e581c004 STR r12,[r1,#4]
;;;345 }
0001e8 e49de004 POP {lr}
0001ec e12fff1e BX lr
;;;346
ENDP
install_irq_pro PROC
;;;357 BOOLEAN install_irq_pro( uint8 pro,uint8 IntNumber, void *HandlerAddr )
;;;358 {
0001f0 e92d4010 PUSH {r4,lr}
;;;359 uint32 *vect_addr;
;;;360 uint32 *vect_cntl;
;;;361
;;;362 VICIntEnClr = 1 << IntNumber; /* 禁止中断 */
0001f4 e3a03001 MOV r3,#1
0001f8 e1a0c113 LSL r12,r3,r1
0001fc e3a0e000 MOV lr,#0
000200 e50ecfec STR r12,[lr,#-0xfec]
;;;363
;;;364 vect_addr = (uint32 *)(VICVectAddr0+pro*4);
000204 e51e3f00 LDR r3,[lr,#-0xf00]
000208 e0833100 ADD r3,r3,r0,LSL #2
;;;365 vect_cntl = (uint32 *)(VICVectCntl0+pro*4);
00020c e51e4e00 LDR r4,[lr,#-0xe00]
000210 e0840100 ADD r0,r4,r0,LSL #2
;;;366 if ( *vect_addr == (uint32)NULL )
000214 e5934000 LDR r4,[r3,#0]
000218 e3540000 CMP r4,#0
00021c 1a000006 BNE |L1.572|
;;;367 {
;;;368 *vect_addr = (uint32)HandlerAddr; /* 设置中断向量 */
000220 e5832000 STR r2,[r3,#0]
;;;369 *vect_cntl = (uint32)( VIC_IRQEN| IntNumber);
000224 e3811020 ORR r1,r1,#0x20
000228 e5801000 STR r1,[r0,#0]
;;;370 VICIntEnable = 1 << IntNumber; /* 使能Interrupt */
00022c e50ecff0 STR r12,[lr,#-0xff0]
;;;371 return( TRUE );
000230 e3a00001 MOV r0,#1
|L1.564|
000234 e8bd4010 POP {r4,lr}
;;;372 }
;;;373 else return FALSE;
;;;374
;;;375
;;;376 }
000238 e12fff1e BX lr
|L1.572|
00023c e3a00000 MOV r0,#0 ;373
000240 eafffffb B |L1.564|
;;;377 BOOLEAN install_irq( uint8 IntNumber, void *HandlerAddr )
ENDP
install_irq PROC
;;;378 {
000244 e92d4070 PUSH {r4-r6,lr}
000248 e1a05000 MOV r5,r0
00024c e1a06001 MOV r6,r1
;;;379 uint8 i;
;;;380 for ( i = 0; i < VIC_SIZE; i++ )
000250 e3a04000 MOV r4,#0
|L1.596|
;;;381 {
;;;382 if(install_irq_pro(i,IntNumber,HandlerAddr))return TRUE;
000254 e1a02006 MOV r2,r6
000258 e1a01005 MOV r1,r5
00025c e1a00004 MOV r0,r4
000260 ebfffffe BL install_irq_pro
000264 e3500000 CMP r0,#0
000268 0a000002 BEQ |L1.632|
00026c e3a00001 MOV r0,#1
|L1.624|
000270 e8bd4070 POP {r4-r6,lr}
;;;383 }
;;;384 if ( i == VIC_SIZE )
;;;385 {
;;;386 return( FALSE );
;;;387 }
;;;388 return TRUE;
;;;389 }
000274 e12fff1e BX lr
|L1.632|
000278 e2840001 ADD r0,r4,#1 ;380
00027c e20040ff AND r4,r0,#0xff ;380
000280 e3540010 CMP r4,#0x10 ;380
000284 3afffff2 BCC |L1.596|
000288 e3540010 CMP r4,#0x10 ;384
00028c 1a000001 BNE |L1.664|
000290 e3a00000 MOV r0,#0 ;386
000294 eafffff5 B |L1.624|
|L1.664|
000298 e3a00001 MOV r0,#1 ;388
00029c eafffff3 B |L1.624|
;;;390
ENDP
uninstall_irq PROC
;;;400 BOOLEAN uninstall_irq( uint8 IntNumber )
;;;401 {
0002a0 e52de004 PUSH {lr}
;;;402 uint8 i;
;;;403 uint32 *vect_addr;
;;;404 uint32 *vect_cntl;
;;;405
;;;406 VICIntEnClr = 1 << IntNumber;
0002a4 e3a01001 MOV r1,#1
0002a8 e1a01011 LSL r1,r1,r0
0002ac e3a03000 MOV r3,#0
0002b0 e5031fec STR r1,[r3,#-0xfec]
;;;407
;;;408 for ( i = 0; i < VIC_SIZE; i++ )
0002b4 e3a01000 MOV r1,#0
|L1.696|
;;;409 {
;;;410 /* 找到第一个未分配的VIC address */
;;;411 vect_addr = (uint32 *)(VICVectAddr0+i*4);
0002b8 e5132f00 LDR r2,[r3,#-0xf00]
0002bc e082c101 ADD r12,r2,r1,LSL #2
;;;412 vect_cntl = (uint32 *)(VICVectCntl0+i*4);
0002c0 e5132e00 LDR r2,[r3,#-0xe00]
0002c4 e0822101 ADD r2,r2,r1,LSL #2
;;;413 if ( (*vect_cntl & ~VIC_IRQEN) == IntNumber )
0002c8 e592e000 LDR lr,[r2,#0]
0002cc e3cee020 BIC lr,lr,#0x20
0002d0 e15e0000 CMP lr,r0
0002d4 1a000004 BNE |L1.748|
;;;414 {
;;;415 *vect_addr = (uint32)NULL; /* 清VIC地址 */
0002d8 e58c3000 STR r3,[r12,#0]
;;;416 *vect_cntl &= ~VIC_IRQEN; /*清使能位 */
0002dc e5920000 LDR r0,[r2,#0]
0002e0 e3c00020 BIC r0,r0,#0x20
0002e4 e5820000 STR r0,[r2,#0]
;;;417 break;
0002e8 ea000003 B |L1.764|
|L1.748|
0002ec e2811001 ADD r1,r1,#1 ;408
0002f0 e20110ff AND r1,r1,#0xff ;408
0002f4 e3510010 CMP r1,#0x10 ;408
0002f8 3affffee BCC |L1.696|
|L1.764|
;;;418 }
;;;419 }
;;;420 if ( i == VIC_SIZE )
0002fc e3510010 CMP r1,#0x10
000300 1a000002 BNE |L1.784|
;;;421 {
;;;422 return( FALSE );
000304 e3a00000 MOV r0,#0
|L1.776|
000308 e49de004 POP {lr}
;;;423 }
;;;424 return( TRUE );
;;;425 }
00030c e12fff1e BX lr
|L1.784|
000310 e3a00001 MOV r0,#1 ;424
000314 eafffffb B |L1.776|
;;;426 /******************************************************************************
ENDP
uninstall_irq_pro PROC
;;;438 uint32 *vect_cntl;
;;;439 vect_addr = (uint32 *)(VICVectAddr0+pro*4);
000318 e3a03000 MOV r3,#0
00031c e5131f00 LDR r1,[r3,#-0xf00]
000320 e0812100 ADD r2,r1,r0,LSL #2
;;;440 vect_cntl = (uint32 *)(VICVectCntl0+pro*4);
000324 e5131e00 LDR r1,[r3,#-0xe00]
000328 e0811100 ADD r1,r1,r0,LSL #2
;;;441 if(pro==0)return FALSE; //不允许卸载优先级为0的中断,因为是系统时钟服务
00032c e3500000 CMP r0,#0
000330 1a000001 BNE |L1.828|
000334 e3a00000 MOV r0,#0
|L1.824|
;;;442 if(!(*vect_cntl & VIC_IRQEN))
;;;443 {
;;;444 VICIntEnClr = 1 << (*vect_cntl & ~VIC_IRQEN);
;;;445 *vect_addr = (uint32)NULL; /* 清VIC地址 */
;;;446 *vect_cntl &= ~VIC_IRQEN; /*清使能位 */
;;;447 return( TRUE );
;;;448 }
;;;449 else
;;;450 {
;;;451 return( FALSE );
;;;452 }
;;;453 }
000338 e12fff1e BX lr
|L1.828|
00033c e5910000 LDR r0,[r1,#0] ;442
000340 e3100020 TST r0,#0x20 ;442
000344 1a000009 BNE |L1.880|
000348 e3c00020 BIC r0,r0,#0x20 ;444
00034c e3a0c001 MOV r12,#1 ;444
000350 e1a0001c LSL r0,r12,r0 ;444
000354 e5030fec STR r0,[r3,#-0xfec] ;444
000358 e5823000 STR r3,[r2,#0] ;445
00035c e5910000 LDR r0,[r1,#0] ;446
000360 e3c00020 BIC r0,r0,#0x20 ;446
000364 e5810000 STR r0,[r1,#0] ;446
000368 e3a00001 MOV r0,#1 ;447
00036c eafffff1 B |L1.824|
|L1.880|
000370 e3a00000 MOV r0,#0 ;451
000374 eaffffef B |L1.824|
;;;454
ENDP
|L1.888|
000378 e0004000 DCD 0xe0004000
|L1.892|
00037c e002c000 DCD 0xe002c000
|L1.896|
000380 e000c000 DCD 0xe000c000
|L1.900|
000384 000a8c00 DCD 0x000a8c00
|L1.904|
000388 e01fc000 DCD 0xe01fc000
|L1.908|
00038c e0024000 DCD 0xe0024000
|L1.912|
000390 000007d4 DCD 0x000007d4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -