📄 main.lst
字号:
2315: __inline void AT91F_SSC_SetBaudrate (
00000000 B530 PUSH {R4-R5,LR}
00000002 ---- Variable 'speed' assigned to Register 'R2' ----
00000002 1C0D MOV R5,R1 ; mainClock
00000004 ---- Variable 'mainClock' assigned to Register 'R5' ----
00000004 1C04 MOV R4,R0 ; pSSC
00000006 ---- Variable 'pSSC' assigned to Register 'R4' ----
00000006 ---- Variable 'baud_value' assigned to Register 'R3' ----
2319: {
00000006 ; SCOPE-START
2322: if (speed == 0)
00000006 1C10 MOV R0,R2 ; speed
00000008 2800 CMP R0,#0x0 ; speed
0000000A D101 BNE L_48 ; T=0x00000010
2323: baud_value = 0;
0000000C 2300 MOV R3,#0x0
0000000E E01C B L_49 ; T=0x0000004A
00000010 L_48:
2326: baud_value = (unsigned int) (mainClock * 10)/(2*speed);
00000010 1C11 MOV R1,R2 ; speed
00000012 0049 LSL R1,R1,#0x1 ; speed
00000014 1C28 MOV R0,R5 ; mainClock
00000016 220A MOV R2,#0xA
00000018 4350 MUL R0,R2
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 17
0000001A F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
0000001C FFF1 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
0000001E 1C08 MOV R0,R1
00000020 1C03 MOV R3,R0 ; baud_value
2327: if ((baud_value % 10) >= 5)
00000022 1C11 MOV R1,R2
00000024 F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000026 FFEC BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000028 1C01 MOV R1,R0
0000002A 2905 CMP R1,#0x5
0000002C D307 BCC L_50 ; T=0x0000003E
2328: baud_value = (baud_value / 10) + 1;
0000002E 1C18 MOV R0,R3 ; baud_value
00000030 1C11 MOV R1,R2
00000032 F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000034 FFE5 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000036 1C08 MOV R0,R1
00000038 1C03 MOV R3,R0
0000003A 3301 ADD R3,#0x1
0000003C E005 B L_49 ; T=0x0000004A
0000003E L_50:
2330: baud_value /= 10;
0000003E 1C18 MOV R0,R3 ; baud_value
00000040 1C11 MOV R1,R2
00000042 F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000044 FFDD BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000046 1C08 MOV R0,R1
00000048 1C03 MOV R3,R0 ; baud_value
2331: }
0000004A L_49:
2333: pSSC->SSC_CMR = baud_value;
0000004A 1C19 MOV R1,R3 ; baud_value
0000004C 1C20 MOV R0,R4 ; pSSC
0000004E 6041 STR R1,[R0,#0x4]
00000050 ; SCOPE-END
2334: }
00000050 BC30 POP {R4-R5}
00000052 BC08 POP {R3}
00000054 4718 BX R3
00000056 ENDP ; 'AT91F_SSC_SetBaudrate?T'
*** CODE SEGMENT '?PR?AT91F_SSC_GetInterruptMaskStatus?T?main':
2486: __inline unsigned int AT91F_SSC_GetInterruptMaskStatus( // \return SSC Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pSsc
00000002 ---- Variable 'pSsc' assigned to Register 'R1' ----
2489: return pSsc->SSC_IMR;
00000002 1C08 MOV R0,R1 ; pSsc
00000004 6CC0 LDR R0,[R0,#0x4C]
2490: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_SSC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_TWI_GetInterruptMaskStatus?T?main':
2551: __inline unsigned int AT91F_TWI_GetInterruptMaskStatus( // \return TWI Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pTwi
00000002 ---- Variable 'pTwi' assigned to Register 'R1' ----
2554: return pTwi->TWI_IMR;
00000002 1C08 MOV R0,R1 ; pTwi
00000004 6AC0 LDR R0,[R0,#0x2C]
2555: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_TWI_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_PWMC_GetStatus?T?main':
2575: __inline unsigned int AT91F_PWMC_GetStatus( // \return PWM Interrupt Status
00000000 1C01 MOV R1,R0 ; pPWM
00000002 ---- Variable 'pPWM' assigned to Register 'R1' ----
2578: return pPWM->PWMC_SR;
00000002 1C08 MOV R0,R1 ; pPWM
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 18
00000004 68C0 LDR R0,[R0,#0xC]
2579: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PWMC_GetStatus?T'
*** CODE SEGMENT '?PR?AT91F_PWMC_GetInterruptMaskStatus?T?main':
2607: __inline unsigned int AT91F_PWMC_GetInterruptMaskStatus( // \return PWM Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pPwm
00000002 ---- Variable 'pPwm' assigned to Register 'R1' ----
2610: return pPwm->PWMC_IMR;
00000002 1C08 MOV R0,R1 ; pPwm
00000004 6980 LDR R0,[R0,#0x18]
2611: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PWMC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_UDP_GetInterruptMaskStatus?T?main':
2863: __inline unsigned int AT91F_UDP_GetInterruptMaskStatus(
00000000 1C01 MOV R1,R0 ; pUdp
00000002 ---- Variable 'pUdp' assigned to Register 'R1' ----
2866: return pUdp->UDP_IMR;
00000002 1C08 MOV R0,R1 ; pUdp
00000004 6980 LDR R0,[R0,#0x18]
2867: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_UDP_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_TC_GetInterruptMaskStatus?T?main':
2950: __inline unsigned int AT91F_TC_GetInterruptMaskStatus( // \return TC Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pTc
00000002 ---- Variable 'pTc' assigned to Register 'R1' ----
2953: return pTc->TC_IMR;
00000002 1C08 MOV R0,R1 ; pTc
00000004 6AC0 LDR R0,[R0,#0x2C]
2954: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_TC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_CAN_GetStatus?T?main':
3045: __inline unsigned int AT91F_CAN_GetStatus( // \return CAN Interrupt Status
00000000 1C01 MOV R1,R0 ; pCAN
00000002 ---- Variable 'pCAN' assigned to Register 'R1' ----
3048: return pCAN->CAN_SR;
00000002 1C08 MOV R0,R1 ; pCAN
00000004 6900 LDR R0,[R0,#0x10]
3049: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_CAN_GetStatus?T'
*** CODE SEGMENT '?PR?AT91F_CAN_GetInterruptMaskStatus?T?main':
3055: __inline unsigned int AT91F_CAN_GetInterruptMaskStatus( // \return CAN Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pCAN
00000002 ---- Variable 'pCAN' assigned to Register 'R1' ----
3058: return pCAN->CAN_IMR;
00000002 1C08 MOV R0,R1 ; pCAN
00000004 68C0 LDR R0,[R0,#0xC]
3059: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_CAN_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_ADC_GetStatus?T?main':
3356: __inline unsigned int AT91F_ADC_GetStatus( // \return ADC Interrupt Status
00000000 1C01 MOV R1,R0 ; pADC
00000002 ---- Variable 'pADC' assigned to Register 'R1' ----
3359: return pADC->ADC_SR;
00000002 1C08 MOV R0,R1 ; pADC
00000004 69C0 LDR R0,[R0,#0x1C]
3360: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_ADC_GetStatus?T'
*** CODE SEGMENT '?PR?AT91F_ADC_GetInterruptMaskStatus?T?main':
3366: __inline unsigned int AT91F_ADC_GetInterruptMaskStatus( // \return ADC Interrupt Mask Status
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 19
00000000 1C01 MOV R1,R0 ; pADC
00000002 ---- Variable 'pADC' assigned to Register 'R1' ----
3369: return pADC->ADC_IMR;
00000002 1C08 MOV R0,R1 ; pADC
00000004 6AC0 LDR R0,[R0,#0x2C]
3370: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_ADC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?main?main':
25: int main()
00000000 B500 PUSH {LR}
27: AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);
00000002 4800 LDR R1,=0xA5000401
00000004 4800 LDR R0,=0xFFFFFD08
00000006 6001 STR R1,[R0,#0x0]
30: AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
00000008 4800 LDR R0,=0xFFFFFC00
0000000A 2104 MOV R1,#0x4
0000000C F7FF BL AT91F_PMC_EnablePeriphClock?T ; T=0x0001 (1)
0000000E FFF8 BL AT91F_PMC_EnablePeriphClock?T ; T=0x0001 (2)
31: AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;
00000010 2108 MOV R1,#0x8
00000012 4800 LDR R0,=0xFFFFFC10
00000014 6001 STR R1,[R0,#0x0]
34: AT91F_PIO_CfgOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
00000016 4800 LDR R0,=0xFFFFF600
00000018 4800 LDR R1,=0x6000000
0000001A F7FF BL AT91F_PIO_CfgOutput?T ; T=0x0001 (1)
0000001C FFF1 BL AT91F_PIO_CfgOutput?T ; T=0x0001 (2)
37: AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
0000001E 4800 LDR R0,=0xFFFFF600
00000020 4800 LDR R1,=0x6000000
00000022 F7FF BL AT91F_PIO_SetOutput?T ; T=0x0001 (1)
00000024 FFED BL AT91F_PIO_SetOutput?T ; T=0x0001 (2)
39: AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
00000026 4800 LDR R0,=0xFFFFF600
00000028 4800 LDR R1,=0x6000000
0000002A F7FF BL AT91F_PIO_ClearOutput?T ; T=0x0001 (1)
0000002C FFE9 BL AT91F_PIO_ClearOutput?T ; T=0x0001 (2)
42: while (1)
0000002E L_64:
47: AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED1) ;
0000002E 4800 LDR R0,=0xFFFFF600
00000030 4800 LDR R1,=0x2000000
00000032 F7FF BL AT91F_PIO_ClearOutput?T ; T=0x0001 (1)
00000034 FFE5 BL AT91F_PIO_ClearOutput?T ; T=0x0001 (2)
49: AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED2);
00000036 4800 LDR R0,=0xFFFFF600
00000038 4800 LDR R1,=0x4000000
0000003A F7FF BL AT91F_PIO_SetOutput?T ; T=0x0001 (1)
0000003C FFE1 BL AT91F_PIO_SetOutput?T ; T=0x0001 (2)
51: delay_1ms(600);
0000003E 4896 LDR R0,=0x258
00000040 F7FF BL delay_1ms?T ; T=0x0001 (1)
00000042 FFDE BL delay_1ms?T ; T=0x0001 (2)
53: AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED1 ) ;
00000044 4800 LDR R0,=0xFFFFF600
00000046 4800 LDR R1,=0x2000000
00000048 F7FF BL AT91F_PIO_SetOutput?T ; T=0x0001 (1)
0000004A FFDA BL AT91F_PIO_SetOutput?T ; T=0x0001 (2)
55: AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED2 ) ;
0000004C 4800 LDR R0,=0xFFFFF600
0000004E 4800 LDR R1,=0x4000000
00000050 F7FF BL AT91F_PIO_ClearOutput?T ; T=0x0001 (1)
00000052 FFD6 BL AT91F_PIO_ClearOutput?T ; T=0x0001 (2)
57: delay_1ms(600);
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 20
00000054 4896 LDR R0,=0x258
00000056 F7FF BL delay_1ms?T ; T=0x0001 (1)
00000058 FFD3 BL delay_1ms?T ; T=0x0001 (2)
60: }
0000005A E7E8 B L_64 ; T=0x0000002E
62: }//* End
0000005C BC08 POP {R3}
0000005E 4718 BX R3
00000060 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 + -