📄 main.lst
字号:
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
771: return pPio->PIO_ODSR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 6B80 LDR R0,[R0,#0x38]
772: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PIO_GetOutputDataStatus?T'
*** CODE SEGMENT '?PR?AT91F_PIO_GetInterruptMaskStatus?T?main':
800: __inline unsigned int AT91F_PIO_GetInterruptMaskStatus( // \return PIO Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pPio
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
803: return pPio->PIO_IMR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 6C80 LDR R0,[R0,#0x48]
804: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PIO_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_PIO_GetInterruptStatus?T?main':
810: __inline unsigned int AT91F_PIO_GetInterruptStatus( // \return PIO Interrupt Status
00000000 1C01 MOV R1,R0 ; pPio
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
813: return pPio->PIO_ISR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 6CC0 LDR R0,[R0,#0x4C]
814: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PIO_GetInterruptStatus?T'
*** CODE SEGMENT '?PR?AT91F_PIO_GetMultiDriverStatus?T?main':
864: __inline unsigned int AT91F_PIO_GetMultiDriverStatus( // \return PIO Multi Driver Status
00000000 1C01 MOV R1,R0 ; pPio
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
867: return pPio->PIO_MDSR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 6D80 LDR R0,[R0,#0x58]
868: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PIO_GetMultiDriverStatus?T'
*** CODE SEGMENT '?PR?AT91F_PIO_Get_AB_RegisterStatus?T?main':
907: __inline unsigned int AT91F_PIO_Get_AB_RegisterStatus( // \return PIO AB Register Status
00000000 1C01 MOV R1,R0 ; pPio
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
910: return pPio->PIO_ABSR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 6F80 LDR R0,[R0,#0x78]
911: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PIO_Get_AB_RegisterStatus?T'
*** CODE SEGMENT '?PR?AT91F_PIO_GetOutputWriteStatus?T?main':
950: __inline unsigned int AT91F_PIO_GetOutputWriteStatus( // \return PIO Output Write Status
00000000 1C01 MOV R1,R0 ; pPio
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
953: return pPio->PIO_OWSR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 30A8 ADD R0,#0xA8
00000006 6800 LDR R0,[R0,#0x0]
954: }
00000008 4770 BX R14
0000000A ENDP ; 'AT91F_PIO_GetOutputWriteStatus?T'
*** CODE SEGMENT '?PR?AT91F_PIO_GetCfgPullup?T?main':
971: __inline unsigned int AT91F_PIO_GetCfgPullup( // \return PIO Configuration Pullup
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 14
00000000 1C01 MOV R1,R0 ; pPio
00000002 ---- Variable 'pPio' assigned to Register 'R1' ----
974: return pPio->PIO_PPUSR;
00000002 1C08 MOV R0,R1 ; pPio
00000004 6E80 LDR R0,[R0,#0x68]
975: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PIO_GetCfgPullup?T'
*** CODE SEGMENT '?PR?AT91F_PMC_EnablePeriphClock?T?main':
1041: __inline void AT91F_PMC_EnablePeriphClock (
00000000 1C0B MOV R3,R1 ; periphIds
00000002 ---- Variable 'periphIds' assigned to Register 'R3' ----
00000002 1C02 MOV R2,R0 ; pPMC
00000004 ---- Variable 'pPMC' assigned to Register 'R2' ----
1045: pPMC->PMC_PCER = periphIds;
00000004 1C19 MOV R1,R3 ; periphIds
00000006 1C10 MOV R0,R2 ; pPMC
00000008 6101 STR R1,[R0,#0x10]
1046: }
0000000A 4770 BX R14
0000000C ENDP ; 'AT91F_PMC_EnablePeriphClock?T'
*** CODE SEGMENT '?PR?AT91F_CKGR_GetMainClock?T?main':
1137: __inline unsigned int AT91F_CKGR_GetMainClock (
00000000 1C0A MOV R2,R1 ; slowClock
00000002 ---- Variable 'slowClock' assigned to Register 'R2' ----
00000002 1C01 MOV R1,R0 ; pCKGR
00000004 ---- Variable 'pCKGR' assigned to Register 'R1' ----
1141: return ((pCKGR->CKGR_MCFR & AT91C_CKGR_MAINF) * slowClock) >> 4;
00000004 1C08 MOV R0,R1 ; pCKGR
00000006 6840 LDR R0,[R0,#0x4]
00000008 4800 LDR R1,=0xFFFF
0000000A 4008 AND R0,R1
0000000C 1C11 MOV R1,R2 ; slowClock
0000000E 4348 MUL R0,R1 ; slowClock
00000010 0900 LSR R0,R0,#0x4
1142: }
00000012 4770 BX R14
00000014 ENDP ; 'AT91F_CKGR_GetMainClock?T'
*** CODE SEGMENT '?PR?AT91F_PMC_GetStatus?T?main':
1244: __inline unsigned int AT91F_PMC_GetStatus( // \return PMC Interrupt Status
00000000 1C01 MOV R1,R0 ; pPMC
00000002 ---- Variable 'pPMC' assigned to Register 'R1' ----
1247: return pPMC->PMC_SR;
00000002 1C08 MOV R0,R1 ; pPMC
00000004 6E80 LDR R0,[R0,#0x68]
1248: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PMC_GetStatus?T'
*** CODE SEGMENT '?PR?AT91F_PMC_GetInterruptMaskStatus?T?main':
1254: __inline unsigned int AT91F_PMC_GetInterruptMaskStatus( // \return PMC Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pPMC
00000002 ---- Variable 'pPMC' assigned to Register 'R1' ----
1257: return pPMC->PMC_IMR;
00000002 1C08 MOV R0,R1 ; pPMC
00000004 6EC0 LDR R0,[R0,#0x6C]
1258: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PMC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_MC_EFC_GetModeReg?T?main':
1670: __inline unsigned int AT91F_MC_EFC_GetModeReg(
00000000 1C01 MOV R1,R0 ; pMC
00000002 ---- Variable 'pMC' assigned to Register 'R1' ----
1673: return pMC->MC_FMR;
00000002 1C08 MOV R0,R1 ; pMC
00000004 6E00 LDR R0,[R0,#0x60]
1674: }
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 15
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_MC_EFC_GetModeReg?T'
*** CODE SEGMENT '?PR?AT91F_MC_EFC_GetStatus?T?main':
1701: __inline unsigned int AT91F_MC_EFC_GetStatus(
00000000 1C01 MOV R1,R0 ; pMC
00000002 ---- Variable 'pMC' assigned to Register 'R1' ----
1704: return pMC->MC_FSR;
00000002 1C08 MOV R0,R1 ; pMC
00000004 6E80 LDR R0,[R0,#0x68]
1705: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_MC_EFC_GetStatus?T'
*** CODE SEGMENT '?PR?AT91F_SPI_GetInterruptMaskStatus?T?main':
1922: __inline unsigned int AT91F_SPI_GetInterruptMaskStatus( // \return SPI Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pSpi
00000002 ---- Variable 'pSpi' assigned to Register 'R1' ----
1925: return pSpi->SPI_IMR;
00000002 1C08 MOV R0,R1 ; pSpi
00000004 69C0 LDR R0,[R0,#0x1C]
1926: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_SPI_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_US_Baudrate?T?main':
1990: __inline unsigned int AT91F_US_Baudrate (
00000000 B500 PUSH {LR}
00000002 1C0B MOV R3,R1 ; baud_rate
00000004 ---- Variable 'baud_rate' assigned to Register 'R3' ----
00000004 1C02 MOV R2,R0 ; main_clock
00000006 ---- Variable 'main_clock' assigned to Register 'R2' ----
1993: {
00000006 ; SCOPE-START
1994: unsigned int baud_value = ((main_clock*10)/(baud_rate * 16));
00000006 1C19 MOV R1,R3 ; baud_rate
00000008 0109 LSL R1,R1,#0x4 ; baud_rate
0000000A 1C10 MOV R0,R2 ; main_clock
0000000C 230A MOV R3,#0xA
0000000E 4358 MUL R0,R3
00000010 F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000012 FFF6 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000014 1C08 MOV R0,R1
00000016 1C02 MOV R2,R0 ; baud_value
00000018 ---- Variable 'baud_value' assigned to Register 'R2' ----
1995: if ((baud_value % 10) >= 5)
00000018 1C10 MOV R0,R2 ; baud_value
0000001A 1C19 MOV R1,R3
0000001C F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
0000001E FFF0 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000020 1C01 MOV R1,R0
00000022 2905 CMP R1,#0x5
00000024 D307 BCC L_45 ; T=0x00000036
1996: baud_value = (baud_value / 10) + 1;
00000026 1C10 MOV R0,R2 ; baud_value
00000028 1C19 MOV R1,R3
0000002A F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
0000002C FFE9 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
0000002E 1C08 MOV R0,R1
00000030 1C02 MOV R2,R0
00000032 3201 ADD R2,#0x1
00000034 E005 B L_46 ; T=0x00000042
00000036 L_45:
1998: baud_value /= 10;
00000036 1C10 MOV R0,R2 ; baud_value
00000038 1C19 MOV R1,R3
0000003A F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
0000003C FFE1 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
0000003E 1C08 MOV R0,R1
ARM COMPILER V2.42, main 14/02/07 10:22:57 PAGE 16
00000040 1C02 MOV R2,R0 ; baud_value
00000042 L_46:
1999: return baud_value;
00000042 1C10 MOV R0,R2 ; baud_value
00000044 ; SCOPE-END
2000: }
00000044 BC08 POP {R3}
00000046 4718 BX R3
00000048 ENDP ; 'AT91F_US_Baudrate?T'
*** CODE SEGMENT '?PR?AT91F_US_SetBaudrate?T?main':
2006: __inline void AT91F_US_SetBaudrate (
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'speed' assigned to Register 'R2' ----
00000002 ---- Variable 'mainClock' assigned to Register 'R1' ----
00000002 1C04 MOV R4,R0 ; pUSART
00000004 ---- Variable 'pUSART' assigned to Register 'R4' ----
2012: pUSART->US_BRGR = AT91F_US_Baudrate(mainClock, speed);
00000004 1C08 MOV R0,R1 ; mainClock
00000006 1C11 MOV R1,R2 ; speed
00000008 F7FF BL AT91F_US_Baudrate?T ; T=0x0001 (1)
0000000A FFFA BL AT91F_US_Baudrate?T ; T=0x0001 (2)
0000000C 1C21 MOV R1,R4 ; pUSART
0000000E 6208 STR R0,[R1,#0x20]
2013: }
00000010 BC10 POP {R4}
00000012 BC08 POP {R3}
00000014 4718 BX R3
00000016 ENDP ; 'AT91F_US_SetBaudrate?T'
*** CODE SEGMENT '?PR?AT91F_US_SetTimeguard?T?main':
2019: __inline void AT91F_US_SetTimeguard (
00000000 1C0B MOV R3,R1 ; timeguard
00000002 ---- Variable 'timeguard' assigned to Register 'R3' ----
00000002 1C02 MOV R2,R0 ; pUSART
00000004 ---- Variable 'pUSART' assigned to Register 'R2' ----
2024: pUSART->US_TTGR = timeguard ;
00000004 1C19 MOV R1,R3 ; timeguard
00000006 1C10 MOV R0,R2 ; pUSART
00000008 6281 STR R1,[R0,#0x28]
2025: }
0000000A 4770 BX R14
0000000C ENDP ; 'AT91F_US_SetTimeguard?T'
*** CODE SEGMENT '?PR?AT91F_SSC_SetBaudrate?T?main':
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -