⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib_twi.lst

📁 atmelsam7s64twi完美底层驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -