📄 can_ex1.cod
字号:
000002B6 FCA8 BL CAN_receive?T ; T=0x0C09 (2)
000002B8 2800 CMP R0,#0x0 ; CAN_receive?T
000002BA D1F8 BNE L_9 ; T=0x000002AE
106: LED_Byte (msg_rece.data[0]);
000002BC A801 ADD R0,R13,#0x4
000002BE 7800 LDRB R0,[R0,#0x0] ; msg_rece+4
000002C0 F000 BL LED_Byte?T ; T=0x0315 (1)
000002C2 F828 BL LED_Byte?T ; T=0x0315 (2)
108: }
000002C4 E7F3 B L_9 ; T=0x000002AE
000002C6 ; SCOPE-END
109: }
000002C6 B004 ADD R13,#0x10
000002C8 ; END 'task_rece_CAN?T'
*** Disassembly of Segment '?PR?get_AD?T?CAN_Ex1':
FILE: 'CAN_Ex1.c'
000002C8 get_AD?T: ; FUNCTION START
118: unsigned char get_AD (void) {
000002C8 ; SCOPE-START
121: ADCR |= 0x01000000; /* Start A/D Conversion */
000002C8 4A0A LDR R2,[R15,#40] ; PoolRef @0x2F4
000002CA 480B LDR R0,[R15,#44] ; PoolRef @0x2F8
000002CC 6801 LDR R1,[R0,#0x0]
000002CE 4311 ORR R1,R2
000002D0 6001 STR R1,[R0,#0x0]
123: do {
000002D2 L_12:
124: val = ADDR; /* Read A/D Data Register */
000002D2 480A LDR R0,[R15,#40] ; PoolRef @0x2FC
000002D4 6801 LDR R1,[R0,#0x0]
000002D6 ---- Variable 'val' assigned to Register 'R1' ----
125: }
000002D6 1C08 MOV R0,R1 ; val
000002D8 4A09 LDR R2,[R15,#36] ; PoolRef @0x300
000002DA 4210 TST R0,R2 ; val
000002DC D0F9 BEQ L_12 ; T=0x000002D2
128: ADCR &= ~0x01000000; /* Stop A/D Conversion */
000002DE 4B05 LDR R3,[R15,#20] ; PoolRef @0x2F4
000002E0 4805 LDR R0,[R15,#20] ; PoolRef @0x2F8
000002E2 6802 LDR R2,[R0,#0x0]
000002E4 439A BIC R2,R3
000002E6 6002 STR R2,[R0,#0x0]
129: val = (val >> 8) & 0xFF; /* Extract AIN0 Value */
000002E8 0A09 LSR R1,R1,#0x8 ; val
000002EA 20FF MOV R0,#0xFF
000002EC 4001 AND R1,R0
131: return val;
000002EE 1C08 MOV R0,R1 ; val
000002F0 ; SCOPE-END
132: }
000002F0 4770 BX R14
000002F2 ; END 'get_AD?T'
000002F2 ALIGN 4
000002F4 01000000 DD 0x1000000 ; POOL-Entry U=2
000002F8 E0034000 DD 0xE0034000 ; POOL-Entry U=2
000002FC E0034004 DD 0xE0034004 ; POOL-Entry U=1
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 10
00000300 80000000 DD 0x80000000 ; POOL-Entry U=1
*** Disassembly of Segment '?PR?LED_Init?T?CAN_Ex1':
FILE: 'CAN_Ex1.c'
00000304 LED_Init?T: ; FUNCTION START
46: void LED_Init (void) {
47: IODIR1 = 0x00FF0000; /* P1.16..22 defined as Outputs */
00000304 4901 LDR R1,[R15,#4] ; PoolRef @0x30C
00000306 4802 LDR R0,[R15,#8] ; PoolRef @0x310
00000308 6001 STR R1,[R0,#0x0]
48: }
0000030A 4770 BX R14
0000030C ; END 'LED_Init?T'
0000030C 00FF0000 DD 0xFF0000 ; POOL-Entry U=1
00000310 E0028018 DD 0xE0028018 ; POOL-Entry U=1
*** Disassembly of Segment '?PR?LED_Byte?T?CAN_Ex1':
FILE: 'CAN_Ex1.c'
00000314 LED_Byte?T: ; FUNCTION START
50: void LED_Byte (unsigned char LED_state) {
00000314 1C01 MOV R1,R0 ; LED_state
00000316 ---- Variable 'LED_state' assigned to Register 'R1' ----
51: IOCLR1 = 0x00FF0000;
00000316 4A06 LDR R2,[R15,#24] ; PoolRef @0x330
00000318 4806 LDR R0,[R15,#24] ; PoolRef @0x334
0000031A 6002 STR R2,[R0,#0x0]
52: IOSET1 = ((unsigned int) LED_state) << 16 & 0x00FF0000;
0000031C 1C08 MOV R0,R1 ; LED_state
0000031E 0601 LSL R1,R0,#0x18 ; LED_state
00000320 0E09 LSR R1,R1,#0x18
00000322 0409 LSL R1,R1,#0x10
00000324 4802 LDR R0,[R15,#8] ; PoolRef @0x330
00000326 4001 AND R1,R0
00000328 4803 LDR R0,[R15,#12] ; PoolRef @0x338
0000032A 6001 STR R1,[R0,#0x0]
53: }
0000032C 4770 BX R14
0000032E ; END 'LED_Byte?T'
0000032E ALIGN 4
00000330 00FF0000 DD 0xFF0000 ; POOL-Entry U=2
00000334 E002801C DD 0xE002801C ; POOL-Entry U=1
00000338 E0028014 DD 0xE0028014 ; POOL-Entry U=1
*** Disassembly of Segment '?PR?main?CAN_Ex1':
FILE: 'CAN_Ex1.c'
0000033C ?C?INIT: ; FUNCTION START
0000033C 4814 LDR R0,[R15,#80] ; PoolRef @0x390 ; ?C?CLRTAB
0000033E L_376:
0000033E C806 LDMIA R0!,{R1-R2}
00000340 1C0B MOV R3,R1
00000342 4313 ORR R3,R2
00000344 D005 BEQ L_378 ; T=0x0352
00000346 2300 MOV R3,#0x0
00000348 L_377:
00000348 700B STRB R3,[R1,#0x0]
0000034A 1C49 ADD R1,R1,#0x1
0000034C 4291 CMP R1,R2
0000034E D1FB BNE L_377 ; T=0x0348
00000350 E7F5 B L_376 ; T=0x0000033E
00000352 L_378:
00000352 4810 LDR R0,[R15,#64] ; PoolRef @0x394 ; ?C?INITTAB
00000354 L_379:
00000354 1CC0 ADD R0,R0,#0x3
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 11
00000356 2303 MOV R3,#0x3
00000358 4398 BIC R0,R3
0000035A C806 LDMIA R0!,{R1-R2}
0000035C 1C0B MOV R3,R1
0000035E 4313 ORR R3,R2
00000360 D006 BEQ L_381 ; T=0x0370
00000362 L_380:
00000362 7803 LDRB R3,[R0,#0x0]
00000364 1C40 ADD R0,R0,#0x1
00000366 700B STRB R3,[R1,#0x0]
00000368 1C49 ADD R1,R1,#0x1
0000036A 4291 CMP R1,R2
0000036C D1F9 BNE L_380 ; T=0x0362
0000036E E7F1 B L_379 ; T=0x00000354
00000370 L_381:
139: void main (void) { /* Program execution starts here */
00000370 main:
00000370 B500 PUSH {LR}
140: ADCR = 0x00270401; /* Setup A/D: 10-bit AIN0 @ 3MHz */
00000372 4909 LDR R1,[R15,#36] ; PoolRef @0x398
00000374 4809 LDR R0,[R15,#36] ; PoolRef @0x39C
00000376 6001 STR R1,[R0,#0x0]
142: LED_Init (); /* Initialize LED */
00000378 F7FF BL LED_Init?T ; T=0x0305 (1)
0000037A FFC4 BL LED_Init?T ; T=0x0305 (2)
143: LED_Byte (0); /* Turn the LED off */
0000037C 2000 MOV R0,#0x0
0000037E F7FF BL LED_Byte?T ; T=0x0315 (1)
00000380 FFC9 BL LED_Byte?T ; T=0x0315 (2)
145: os_sys_init (task_send_CAN); /* Initialize and start task 1 */
00000382 4807 LDR R0,[R15,#28] ; PoolRef @0x3A0 ; task_send_CAN?T
00000384 2200 MOV R2,#0x0
00000386 2100 MOV R1,#0x0
00000388 2300 MOV R3,#0x0
0000038A F001 BL os_sys_init_user?T ; T=0x1A9D (1)
0000038C FB87 BL os_sys_init_user?T ; T=0x1A9D (2)
146: }
0000038E BD00 POP {PC}
00000390 ; END 'main'
00000390 00000188 DD ?C?CLRTAB ; POOL-Entry U=1
00000394 000001B8 DD ?C?INITTAB ; POOL-Entry U=1
00000398 00270401 DD 0x270401 ; POOL-Entry U=1
0000039C E0034000 DD 0xE0034000 ; POOL-Entry U=1
000003A0 000001D9 DD task_send_CAN?T ; POOL-Entry U=1
*** Disassembly of Segment '?PR?CAN_hw_setup?T?CAN_hw':
FILE: 'CAN_hw.c'
000003A4 CAN_hw_setup?T: ; FUNCTION START
81: CAN_ERROR CAN_hw_setup (void) {
83: PINSEL1 &= 0xFFEBFFFF; /* Reset CAN1 bits */
000003A4 4A19 LDR R2,[R15,#100] ; PoolRef @0x40C
000003A6 481A LDR R0,[R15,#104] ; PoolRef @0x410
000003A8 6801 LDR R1,[R0,#0x0]
000003AA 4391 BIC R1,R2
000003AC 6001 STR R1,[R0,#0x0]
84: PINSEL1 |= 0x00040000; /* Set CAN1 bits to 01 */
000003AE 4A19 LDR R2,[R15,#100] ; PoolRef @0x414
000003B0 4817 LDR R0,[R15,#92] ; PoolRef @0x410
000003B2 6801 LDR R1,[R0,#0x0]
000003B4 4311 ORR R1,R2
000003B6 6001 STR R1,[R0,#0x0]
87: *(&VICVectAddr0 + VIC_NUM_CTRL1_TX) = (unsigned long) CAN_TX1_ISR;
000003B8 4917 LDR R1,[R15,#92] ; PoolRef @0x418 ; CAN_TX1_ISR?A
000003BA 4818 LDR R0,[R15,#96] ; PoolRef @0x41C
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 12
000003BC 6001 STR R1,[R0,#0x0]
88: *(&VICVectCntl0 + VIC_NUM_CTRL1_TX) = 0x20 | 20;
000003BE 2134 MOV R1,#0x34
000003C0 4817 LDR R0,[R15,#92] ; PoolRef @0x420
000003C2 6001 STR R1,[R0,#0x0]
90: *(&VICVectAddr0 + VIC_NUM_CTRL1_RX) = (unsigned long) CAN_RX1_ISR;
000003C4 4917 LDR R1,[R15,#92] ; PoolRef @0x424 ; CAN_RX1_ISR?A
000003C6 4818 LDR R0,[R15,#96] ; PoolRef @0x428
000003C8 6001 STR R1,[R0,#0x0]
91: *(&VICVectCntl0 + VIC_NUM_CTRL1_RX) = 0x20 | 26;
000003CA 213A MOV R1,#0x3A
000003CC 4817 LDR R0,[R15,#92] ; PoolRef @0x42C
000003CE 6001 STR R1,[R0,#0x0]
93: VICIntEnable = 0x04100000; /* Enable CAN Tx1 and Rx1 Interrupt */
000003D0 4917 LDR R1,[R15,#92] ; PoolRef @0x430
000003D2 4818 LDR R0,[R15,#96] ; PoolRef @0x434
000003D4 6001 STR R1,[R0,#0x0]
96: PINSEL1 &= 0xFFFC3FFF; /* Reset CAN2 bits */
000003D6 4A18 LDR R2,[R15,#96] ; PoolRef @0x438
000003D8 480D LDR R0,[R15,#52] ; PoolRef @0x410
000003DA 6801 LDR R1,[R0,#0x0]
000003DC 4391 BIC R1,R2
000003DE 6001 STR R1,[R0,#0x0]
97: PINSEL1 |= 0x00014000; /* Set CAN2 bits to 11 */
000003E0 4A16 LDR R2,[R15,#88] ; PoolRef @0x43C
000003E2 480B LDR R0,[R15,#44] ; PoolRef @0x410
000003E4 6801 LDR R1,[R0,#0x0]
000003E6 4311 ORR R1,R2
000003E8 6001 STR R1,[R0,#0x0]
100: *(&VICVectAddr0 + VIC_NUM_CTRL2_TX) = (unsigned long) CAN_TX2_ISR;
000003EA 4915 LDR R1,[R15,#84] ; PoolRef @0x440 ; CAN_TX2_ISR?A
000003EC 4815 LDR R0,[R15,#84] ; PoolRef @0x444
000003EE 6001 STR R1,[R0,#0x0]
101: *(&VICVectCntl0 + VIC_NUM_CTRL2_TX) = 0x20 | 21;
000003F0 2135 MOV R1,#0x35
000003F2 4815 LDR R0,[R15,#84] ; PoolRef @0x448
000003F4 6001 STR R1,[R0,#0x0]
103: *(&VICVectAddr0 + VIC_NUM_CTRL2_RX) = (unsigned long) CAN_RX2_ISR;
000003F6 4915 LDR R1,[R15,#84] ; PoolRef @0x44C ; CAN_RX2_ISR?A
000003F8 4815 LDR R0,[R15,#84] ; PoolRef @0x450
000003FA 6001 STR R1,[R0,#0x0]
104: *(&VICVectCntl0 + VIC_NUM_CTRL2_RX) = 0x20 | 27;
000003FC 213B MOV R1,#0x3B
000003FE 4815 LDR R0,[R15,#84] ; PoolRef @0x454
00000400 6001 STR R1,[R0,#0x0]
106: VICIntEnable = 0x08200000; /* Enable CAN Tx2 and Rx2 Interrupt */
00000402 4915 LDR R1,[R15,#84] ; PoolRef @0x458
00000404 480B LDR R0,[R15,#44] ; PoolRef @0x434
00000406 6001 STR R1,[R0,#0x0]
135: return CAN_OK;
00000408 2000 MOV R0,#0x0
136: }
0000040A 4770 BX R14
0000040C ; END 'CAN_hw_setup?T'
0000040C 00140000 DD 0x140000 ; POOL-Entry U=1
00000410 E002C004 DD 0xE002C004 ; POOL-Entry U=4
00000414 00040000 DD 0x40000 ; POOL-Entry U=1
00000418 000009B4 DD CAN_TX1_ISR?A ; POOL-Entry U=1
0000041C FFFFF12C DD 0xFFFFF12C ; POOL-Entry U=1
00000420 FFFFF22C DD 0xFFFFF22C ; POOL-Entry U=1
00000424 00000A28 DD CAN_RX1_ISR?A ; POOL-Entry U=1
00000428 FFFFF11C DD 0xFFFFF11C ; POOL-Entry U=1
0000042C FFFFF21C DD 0xFFFFF21C ; POOL-Entry U=1
00000430 04100000 DD 0x4100000 ; POOL-Entry U=1
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 13
00000434 FFFFF010 DD 0xFFFFF010 ; POOL-Entry U=2
00000438 0003C000 DD 0x3C000 ; POOL-Entry U=1
0000043C 00014000 DD 0x14000 ; POOL-Entry U=1
00000440 00000A8C DD CAN_TX2_ISR?A ; POOL-Entry U=1
00000444 FFFFF130 DD 0xFFFFF130 ; POOL-Entry U=1
00000448 FFFFF230 DD 0xFFFFF230 ; POOL-Entry U=1
0000044C 00000B00 DD CAN_RX2_ISR?A ; POOL-Entry U=1
00000450 FFFFF120 DD 0xFFFFF120 ; POOL-Entry U=1
00000454 FFFFF220 DD 0xFFFFF220 ; POOL-Entry U=1
00000458 08200000 DD 0x8200000 ; POOL-Entry U=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -