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

📄 lib_twi.lst

📁 atmelsam7s64twi完美底层驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
 0000000E  2104      MOV         R1,#0x4
 00000010  1C10      MOV         R0,R2 ; pTWI
 00000012  6001      STR         R1,[R0,#0x0] ; pTWI
 2117: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'AT91F_TWI_Configure?T'


*** CODE SEGMENT '?PR?AT91F_TWI_GetInterruptMaskStatus?T?lib_twi':
 2123: __inline unsigned int AT91F_TWI_GetInterruptMaskStatus( // \return TWI Interrupt Mask Status
 00000000  1C01      MOV         R1,R0 ; pTwi
 00000002  ---- Variable 'pTwi' assigned to Register 'R1' ----
 2126:         return pTwi->TWI_IMR;
 00000002  1C08      MOV         R0,R1 ; pTwi
 00000004  6AC0      LDR         R0,[R0,#0x2C]
 2127: }
 00000006  4770      BX          R14
 00000008          ENDP ; 'AT91F_TWI_GetInterruptMaskStatus?T'


*** CODE SEGMENT '?PR?AT91F_US_Baudrate?T?lib_twi':
 2191: __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' ----
 2194: {
 00000006            ; SCOPE-START
 2195:     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' ----
 2196:     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_52  ; T=0x00000036
 2197:         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_53  ; T=0x00000042
 00000036          L_52:
 2199:         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.53,  lib_twi                                                               19/07/06  08:38:07  PAGE 18  

 00000040  1C02      MOV         R2,R0 ; baud_value
 00000042          L_53:
 2200:     return baud_value;
 00000042  1C10      MOV         R0,R2 ; baud_value
 00000044            ; SCOPE-END
 2201: }
 00000044  BC08      POP         {R3}
 00000046  4718      BX          R3
 00000048          ENDP ; 'AT91F_US_Baudrate?T'


*** CODE SEGMENT '?PR?AT91F_US_SetBaudrate?T?lib_twi':
 2207: __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' ----
 2213:     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]
 2214: }
 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?lib_twi':
 2220: __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' ----
 2225:     pUSART->US_TTGR = timeguard ;
 00000004  1C19      MOV         R1,R3 ; timeguard
 00000006  1C10      MOV         R0,R2 ; pUSART
 00000008  6281      STR         R1,[R0,#0x28]
 2226: }
 0000000A  4770      BX          R14
 0000000C          ENDP ; 'AT91F_US_SetTimeguard?T'


*** CODE SEGMENT '?PR?AT91F_UDP_GetInterruptMaskStatus?T?lib_twi':
 2660: __inline unsigned int AT91F_UDP_GetInterruptMaskStatus( // \return UDP Interrupt Mask Status
 00000000  1C01      MOV         R1,R0 ; pUdp
 00000002  ---- Variable 'pUdp' assigned to Register 'R1' ----
 2663:         return pUdp->UDP_IMR;
 00000002  1C08      MOV         R0,R1 ; pUdp
 00000004  6980      LDR         R0,[R0,#0x18]
 2664: }
 00000006  4770      BX          R14
 00000008          ENDP ; 'AT91F_UDP_GetInterruptMaskStatus?T'


*** CODE SEGMENT '?PR?AT91F_AIC_ConfigureIt?T?lib_twi':
 2686: __inline unsigned int AT91F_AIC_ConfigureIt (
 00000000  B4F0      PUSH        {R4-R7}
 00000002  ---- Variable 'src_type' assigned to Register 'R3' ----
 00000002  1C17      MOV         R7,R2 ; priority
 00000004  ---- Variable 'priority' assigned to Register 'R7' ----
 00000004  1C0E      MOV         R6,R1 ; irq_id
 00000006  ---- Variable 'irq_id' assigned to Register 'R6' ----
 00000006  1C04      MOV         R4,R0 ; pAic
 00000008  ---- Variable 'pAic' assigned to Register 'R4' ----
 00000008  B081      SUB         R13,#0x4
 2692: {
 0000000A            ; SCOPE-START
 2696:     oldHandler = pAic->AIC_SVR[irq_id];
 0000000A  1C31      MOV         R1,R6 ; irq_id
ARM COMPILER V2.53,  lib_twi                                                               19/07/06  08:38:07  PAGE 19  

 0000000C  0089      LSL         R1,R1,#0x2 ; irq_id
 0000000E  1C20      MOV         R0,R4 ; pAic
 00000010  1840      ADD         R0,R1 ; pAic
 00000012  3080      ADD         R0,#0x80
 00000014  6800      LDR         R0,[R0,#0x0]
 00000016  9000      STR         R0,[R13,#0x0] ; oldHandler
 2698:     mask = 0x1 << irq_id ;
 00000018  1C30      MOV         R0,R6 ; irq_id
 0000001A  2501      MOV         R5,#0x1
 0000001C  4085      LSL         R5,R0
 0000001E  ---- Variable 'mask' assigned to Register 'R5' ----
 2700:     pAic->AIC_IDCR = mask ;
 0000001E  1C29      MOV         R1,R5 ; mask
 00000020  4A49      LDR         R2,=0x124
 00000022  1C20      MOV         R0,R4 ; pAic
 00000024  5081      STR         R1,[R0,R2]
 2702:     pAic->AIC_SVR[irq_id] = (unsigned int) newHandler ;
 00000026  9A01      LDR         R2,[R13,#0x4] ; newHandler
 00000028  1C31      MOV         R1,R6 ; irq_id
 0000002A  0089      LSL         R1,R1,#0x2 ; irq_id
 0000002C  1C20      MOV         R0,R4 ; pAic
 0000002E  1840      ADD         R0,R1 ; pAic
 00000030  3080      ADD         R0,#0x80
 00000032  6002      STR         R2,[R0,#0x0]
 2704:     pAic->AIC_SMR[irq_id] = src_type | priority  ;
 00000034  1C38      MOV         R0,R7 ; priority
 00000036  1C1A      MOV         R2,R3 ; src_type
 00000038  4302      ORR         R2,R0 ; priority
 0000003A  1C31      MOV         R1,R6 ; irq_id
 0000003C  0089      LSL         R1,R1,#0x2 ; irq_id
 0000003E  1C20      MOV         R0,R4 ; pAic
 00000040  5042      STR         R2,[R0,R1]
 2706:     pAic->AIC_ICCR = mask ;
 00000042  1C29      MOV         R1,R5 ; mask
 00000044  4A4A      LDR         R2,=0x128
 00000046  1C20      MOV         R0,R4 ; pAic
 00000048  5081      STR         R1,[R0,R2]
 2708:     return oldHandler;
 0000004A  9800      LDR         R0,[R13,#0x0] ; oldHandler
 0000004C            ; SCOPE-END
 2709: }
 0000004C  B001      ADD         R13,#0x4
 0000004E  BCF0      POP         {R4-R7}
 00000050  4770      BX          R14
 00000052          ENDP ; 'AT91F_AIC_ConfigureIt?T'


*** CODE SEGMENT '?PR?AT91F_AIC_DisableIt?T?lib_twi':
 2727: __inline void AT91F_AIC_DisableIt (
 00000000  B410      PUSH        {R4}
 00000002  ---- Variable 'irq_id' assigned to Register 'R1' ----
 00000002  1C03      MOV         R3,R0 ; pAic
 00000004  ---- Variable 'pAic' assigned to Register 'R3' ----
 2730: {
 00000004            ; SCOPE-START
 2731:     unsigned int mask = 0x1 << irq_id;
 00000004  1C08      MOV         R0,R1 ; irq_id
 00000006  2401      MOV         R4,#0x1
 00000008  4084      LSL         R4,R0
 0000000A  ---- Variable 'mask' assigned to Register 'R4' ----
 2733:     pAic->AIC_IDCR = mask ;
 0000000A  1C21      MOV         R1,R4 ; mask
 0000000C  4A49      LDR         R2,=0x124
 0000000E  1C18      MOV         R0,R3 ; pAic
 00000010  5081      STR         R1,[R0,R2]
 2735:     pAic->AIC_ICCR = mask ;
 00000012  1C21      MOV         R1,R4 ; mask
 00000014  4A4A      LDR         R2,=0x128
ARM COMPILER V2.53,  lib_twi                                                               19/07/06  08:38:07  PAGE 20  

 00000016  1C18      MOV         R0,R3 ; pAic
 00000018  5081      STR         R1,[R0,R2]
 0000001A            ; SCOPE-END
 2736: }
 0000001A  BC10      POP         {R4}
 0000001C  4770      BX          R14
 0000001E          ENDP ; 'AT91F_AIC_DisableIt?T'


*** CODE SEGMENT '?PR?AT91F_AIC_SetExceptionVector?T?lib_twi':
 2764: __inline unsigned int  AT91F_AIC_SetExceptionVector (
 00000000  B410      PUSH        {R4}
 00000002  1C0C      MOV         R4,R1 ; Handler
 00000004  ---- Variable 'Handler' assigned to Register 'R4' ----
 00000004  1C03      MOV         R3,R0 ; pVector
 00000006  ---- Variable 'pVector' assigned to Register 'R3' ----
 2767: {
 00000006            ; SCOPE-START
 2768:     unsigned int oldVector = *pVector;
 00000006  1C18      MOV         R0,R3 ; pVector
 00000008  6802      LDR         R2,[R0,#0x0] ; pVector
 0000000A  ---- Variable 'oldVector' assigned to Register 'R2' ----
 2770:     if ((unsigned int) Handler == (unsigned int) AT91C_AIC_BRANCH_OPCODE)
 0000000A  1C20      MOV         R0,R4 ; Handler
 0000000C  4800      LDR         R1,=0xE51FFF20
 0000000E  4288      CMP         R0,R1
 00000010  D102      BNE         L_57  ; T=0x00000018
 2771:         *pVector = (unsigned int) AT91C_AIC_BRANCH_OPCODE;
 00000012  1C18      MOV         R0,R3 ; pVector
 00000014  6001      STR         R1,[R0,#0x0] ; pVector
 00000016  E00A      B           L_58  ; T=0x0000002E
 00000018          L_57:
 2773:         *pVector = (((((unsigned int) Handler) - ((unsigned int) pVector) - 0x8) >> 2) & 0x00FFFFFF) | 0xEA000000;
 00000018  1C18      MOV         R0,R3 ; pVector
 0000001A  1C21      MOV         R1,R4 ; Handler
 0000001C  1A09      SUB         R1,R0
 0000001E  3908      SUB         R1,#0x8
 00000020  0889      LSR         R1,R1,#0x2
 00000022  4800      LDR         R0,=0xFF000000
 00000024  4381      BIC         R1,R0
 00000026  4800      LDR         R0,=0xEA000000
 00000028  4301      ORR         R1,R0
 0000002A  1C18      MOV         R0,R3 ; pVector
 0000002C  6001      STR         R1,[R0,#0x0] ; pVector
 0000002E          L_58:
 2775:     return oldVector;
 0000002E  1C10      MOV         R0,R2 ; oldVector
 00000030            ; SCOPE-END
 2776: }
 00000030  BC10      POP         {R4}
 00000032  4770      BX          R14
 00000034          ENDP ; 'AT91F_AIC_SetExceptionVector?T'


*** CODE SEGMENT '?PR?AT91F_TWI_CfgPMC?T?lib_twi':
 3149: __inline void AT91F_TWI_CfgPMC (void)
 00000000  B500      PUSH        {LR}
 3153:         ((unsigned int) 1 << AT91C_ID_TWI));
 00000002  4800      LDR         R0,=0xFFFFFC00
 00000004  4980      LDR         R1,=0x200
 00000006  F7FF      BL          AT91F_PMC_EnablePeriphClock?T  ; T=0x0001  (1)
 00000008  FFFB      BL          AT91F_PMC_EnablePeriphClock?T  ; T=0x0001  (2)
 3154: }
 0000000A  BC08      POP         {R3}
 0000000C  4718      BX          R3
 0000000E          ENDP ; 'AT91F_TWI_CfgPMC?T'


*** CODE SEGMENT '?PR?AT91F_TWI_CfgPIO?T?lib_twi':
 3160: __inline void AT91F_TWI_CfgPIO (void)
 00000000  B500      PUSH        {LR}
 3166:         ((unsigned int) AT91C_PA4_TWCK    ), // Peripheral A
ARM COMPI

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -