📄 lib_twi.lst
字号:
00000026 2100 MOV R1,#0x0
00000028 2200 MOV R2,#0x0
0000002A F7FF BL AT91F_PDC_SetTx?T ; T=0x0001 (1)
0000002C FFE9 BL AT91F_PDC_SetTx?T ; T=0x0001 (2)
297: AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
0000002E 1C20 MOV R0,R4 ; pPDC
00000030 2100 MOV R1,#0x0
00000032 2200 MOV R2,#0x0
00000034 F7FF BL AT91F_PDC_SetRx?T ; T=0x0001 (1)
00000036 FFE4 BL AT91F_PDC_SetRx?T ; T=0x0001 (2)
299: }
00000038 BC10 POP {R4}
0000003A BC08 POP {R3}
0000003C 4718 BX R3
0000003E ENDP ; 'AT91F_PDC_Close?T'
*** CODE SEGMENT '?PR?AT91F_PDC_SendFrame?T?lib_twi':
305: __inline unsigned int AT91F_PDC_SendFrame(
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C1F MOV R7,R3 ; pNextBuffer
00000004 ---- Variable 'pNextBuffer' assigned to Register 'R7' ----
00000004 1C14 MOV R4,R2 ; szBuffer
00000006 ---- Variable 'szBuffer' assigned to Register 'R4' ----
00000006 1C0D MOV R5,R1 ; pBuffer
00000008 ---- Variable 'pBuffer' assigned to Register 'R5' ----
00000008 1C06 MOV R6,R0 ; pPDC
0000000A ---- Variable 'pPDC' assigned to Register 'R6' ----
312: if (AT91F_PDC_IsTxEmpty(pPDC)) {
0000000A 1C30 MOV R0,R6 ; pPDC
ARM COMPILER V2.53, lib_twi 19/07/06 08:38:07 PAGE 10
0000000C F7FF BL AT91F_PDC_IsTxEmpty?T ; T=0x0001 (1)
0000000E FFF8 BL AT91F_PDC_IsTxEmpty?T ; T=0x0001 (2)
00000010 2800 CMP R0,#0x0 ; AT91F_PDC_IsTxEmpty?T
00000012 D00B BEQ L_15 ; T=0x0000002C
314: AT91F_PDC_SetTx(pPDC, pBuffer, szBuffer);
00000014 1C30 MOV R0,R6 ; pPDC
00000016 1C29 MOV R1,R5 ; pBuffer
00000018 1C22 MOV R2,R4 ; szBuffer
0000001A F7FF BL AT91F_PDC_SetTx?T ; T=0x0001 (1)
0000001C FFF1 BL AT91F_PDC_SetTx?T ; T=0x0001 (2)
315: AT91F_PDC_SetNextTx(pPDC, pNextBuffer, szNextBuffer);
0000001E 1C30 MOV R0,R6 ; pPDC
00000020 1C39 MOV R1,R7 ; pNextBuffer
00000022 9A00 LDR R2,[R13,#0x0] ; szNextBuffer
00000024 F7FF BL AT91F_PDC_SetNextTx?T ; T=0x0001 (1)
00000026 FFEC BL AT91F_PDC_SetNextTx?T ; T=0x0001 (2)
316: return 2;
00000028 2002 MOV R0,#0x2
0000002A E00C B L_16 ; T=0x00000046
317: }
0000002C L_15:
318: else if (AT91F_PDC_IsNextTxEmpty(pPDC)) {
0000002C 1C30 MOV R0,R6 ; pPDC
0000002E F7FF BL AT91F_PDC_IsNextTxEmpty?T ; T=0x0001 (1)
00000030 FFE7 BL AT91F_PDC_IsNextTxEmpty?T ; T=0x0001 (2)
00000032 2800 CMP R0,#0x0 ; AT91F_PDC_IsNextTxEmpty?T
00000034 D006 BEQ L_18 ; T=0x00000044
320: AT91F_PDC_SetNextTx(pPDC, pBuffer, szBuffer);
00000036 1C30 MOV R0,R6 ; pPDC
00000038 1C29 MOV R1,R5 ; pBuffer
0000003A 1C22 MOV R2,R4 ; szBuffer
0000003C F7FF BL AT91F_PDC_SetNextTx?T ; T=0x0001 (1)
0000003E FFE0 BL AT91F_PDC_SetNextTx?T ; T=0x0001 (2)
321: return 1;
00000040 2001 MOV R0,#0x1
00000042 E000 B L_16 ; T=0x00000046
322: }
00000044 L_18:
325: return 0;
00000044 2000 MOV R0,#0x0
327: }
00000046 L_16:
00000046 BCF0 POP {R4-R7}
00000048 BC08 POP {R3}
0000004A 4718 BX R3
0000004C ENDP ; 'AT91F_PDC_SendFrame?T'
*** CODE SEGMENT '?PR?AT91F_PDC_ReceiveFrame?T?lib_twi':
333: __inline unsigned int AT91F_PDC_ReceiveFrame (
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C1F MOV R7,R3 ; pNextBuffer
00000004 ---- Variable 'pNextBuffer' assigned to Register 'R7' ----
00000004 1C14 MOV R4,R2 ; szBuffer
00000006 ---- Variable 'szBuffer' assigned to Register 'R4' ----
00000006 1C0D MOV R5,R1 ; pBuffer
00000008 ---- Variable 'pBuffer' assigned to Register 'R5' ----
00000008 1C06 MOV R6,R0 ; pPDC
0000000A ---- Variable 'pPDC' assigned to Register 'R6' ----
340: if (AT91F_PDC_IsRxEmpty(pPDC)) {
0000000A 1C30 MOV R0,R6 ; pPDC
0000000C F7FF BL AT91F_PDC_IsRxEmpty?T ; T=0x0001 (1)
0000000E FFF8 BL AT91F_PDC_IsRxEmpty?T ; T=0x0001 (2)
00000010 2800 CMP R0,#0x0 ; AT91F_PDC_IsRxEmpty?T
00000012 D00B BEQ L_20 ; T=0x0000002C
342: AT91F_PDC_SetRx(pPDC, pBuffer, szBuffer);
00000014 1C30 MOV R0,R6 ; pPDC
00000016 1C29 MOV R1,R5 ; pBuffer
ARM COMPILER V2.53, lib_twi 19/07/06 08:38:07 PAGE 11
00000018 1C22 MOV R2,R4 ; szBuffer
0000001A F7FF BL AT91F_PDC_SetRx?T ; T=0x0001 (1)
0000001C FFF1 BL AT91F_PDC_SetRx?T ; T=0x0001 (2)
343: AT91F_PDC_SetNextRx(pPDC, pNextBuffer, szNextBuffer);
0000001E 1C30 MOV R0,R6 ; pPDC
00000020 1C39 MOV R1,R7 ; pNextBuffer
00000022 9A00 LDR R2,[R13,#0x0] ; szNextBuffer
00000024 F7FF BL AT91F_PDC_SetNextRx?T ; T=0x0001 (1)
00000026 FFEC BL AT91F_PDC_SetNextRx?T ; T=0x0001 (2)
344: return 2;
00000028 2002 MOV R0,#0x2
0000002A E00C B L_21 ; T=0x00000046
345: }
0000002C L_20:
346: else if (AT91F_PDC_IsNextRxEmpty(pPDC)) {
0000002C 1C30 MOV R0,R6 ; pPDC
0000002E F7FF BL AT91F_PDC_IsNextRxEmpty?T ; T=0x0001 (1)
00000030 FFE7 BL AT91F_PDC_IsNextRxEmpty?T ; T=0x0001 (2)
00000032 2800 CMP R0,#0x0 ; AT91F_PDC_IsNextRxEmpty?T
00000034 D006 BEQ L_23 ; T=0x00000044
348: AT91F_PDC_SetNextRx(pPDC, pBuffer, szBuffer);
00000036 1C30 MOV R0,R6 ; pPDC
00000038 1C29 MOV R1,R5 ; pBuffer
0000003A 1C22 MOV R2,R4 ; szBuffer
0000003C F7FF BL AT91F_PDC_SetNextRx?T ; T=0x0001 (1)
0000003E FFE0 BL AT91F_PDC_SetNextRx?T ; T=0x0001 (2)
349: return 1;
00000040 2001 MOV R0,#0x1
00000042 E000 B L_21 ; T=0x00000046
350: }
00000044 L_23:
353: return 0;
00000044 2000 MOV R0,#0x0
355: }
00000046 L_21:
00000046 BCF0 POP {R4-R7}
00000048 BC08 POP {R3}
0000004A 4718 BX R3
0000004C ENDP ; 'AT91F_PDC_ReceiveFrame?T'
*** CODE SEGMENT '?PR?AT91F_DBGU_GetInterruptMaskStatus?T?lib_twi':
385: __inline unsigned int AT91F_DBGU_GetInterruptMaskStatus( // \return DBGU Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pDbgu
00000002 ---- Variable 'pDbgu' assigned to Register 'R1' ----
388: return pDbgu->DBGU_IMR;
00000002 1C08 MOV R0,R1 ; pDbgu
00000004 6900 LDR R0,[R0,#0x10]
389: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_DBGU_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_SSC_SetBaudrate?T?lib_twi':
435: __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' ----
439: {
00000006 ; SCOPE-START
442: if (speed == 0)
00000006 1C10 MOV R0,R2 ; speed
00000008 2800 CMP R0,#0x0 ; speed
0000000A D101 BNE L_26 ; T=0x00000010
443: baud_value = 0;
0000000C 2300 MOV R3,#0x0
ARM COMPILER V2.53, lib_twi 19/07/06 08:38:07 PAGE 12
0000000E E01C B L_27 ; T=0x0000004A
00000010 L_26:
446: 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
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
447: 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_28 ; T=0x0000003E
448: 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_27 ; T=0x0000004A
0000003E L_28:
450: 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
451: }
0000004A L_27:
453: 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
454: }
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?lib_twi':
606: __inline unsigned int AT91F_SSC_GetInterruptMaskStatus( // \return SSC Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pSsc
00000002 ---- Variable 'pSsc' assigned to Register 'R1' ----
609: return pSsc->SSC_IMR;
00000002 1C08 MOV R0,R1 ; pSsc
00000004 6CC0 LDR R0,[R0,#0x4C]
610: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_SSC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_SPI_GetInterruptMaskStatus?T?lib_twi':
829: __inline unsigned int AT91F_SPI_GetInterruptMaskStatus( // \return SPI Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pSpi
00000002 ---- Variable 'pSpi' assigned to Register 'R1' ----
832: return pSpi->SPI_IMR;
00000002 1C08 MOV R0,R1 ; pSpi
00000004 69C0 LDR R0,[R0,#0x1C]
833: }
ARM COMPILER V2.53, lib_twi 19/07/06 08:38:07 PAGE 13
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_SPI_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_PWMC_GetStatus?T?lib_twi':
853: __inline unsigned int AT91F_PWMC_GetStatus( // \return PWM Interrupt Status
00000000 1C01 MOV R1,R0 ; pPWM
00000002 ---- Variable 'pPWM' assigned to Register 'R1' ----
856: return pPWM->PWMC_SR;
00000002 1C08 MOV R0,R1 ; pPWM
00000004 68C0 LDR R0,[R0,#0xC]
857: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PWMC_GetStatus?T'
*** CODE SEGMENT '?PR?AT91F_PWMC_GetInterruptMaskStatus?T?lib_twi':
885: __inline unsigned int AT91F_PWMC_GetInterruptMaskStatus( // \return PWM Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pPwm
00000002 ---- Variable 'pPwm' assigned to Register 'R1' ----
888: return pPwm->PWMC_IMR;
00000002 1C08 MOV R0,R1 ; pPwm
00000004 6980 LDR R0,[R0,#0x18]
889: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_PWMC_GetInterruptMaskStatus?T'
*** CODE SEGMENT '?PR?AT91F_TC_GetInterruptMaskStatus?T?lib_twi':
992: __inline unsigned int AT91F_TC_GetInterruptMaskStatus( // \return TC Interrupt Mask Status
00000000 1C01 MOV R1,R0 ; pTc
00000002 ---- Variable 'pTc' assigned to Register 'R1' ----
995: return pTc->TC_IMR;
00000002 1C08 MOV R0,R1 ; pTc
00000004 6AC0 LDR R0,[R0,#0x2C]
996: }
00000006 4770 BX R14
00000008 ENDP ; 'AT91F_TC_GetInterruptMaskStatus?T'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -