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

📄 can_ex1.lst

📁 can bus 源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000002  ---- Variable 'LED_state' assigned to Register 'R1' ----
   51:   IOCLR1 = 0x00FF0000;
 00000002  4800      LDR         R2,=0xFF0000
 00000004  4800      LDR         R0,=0xE002801C
 00000006  6002      STR         R2,[R0,#0x0]
   52:   IOSET1 = ((unsigned int) LED_state) << 16 & 0x00FF0000;
 00000008  1C08      MOV         R0,R1 ; LED_state
ARM COMPILER V2.32a,  CAN_Ex1                                                              15/03/07  08:58:24  PAGE 5   

 0000000A  0601      LSL         R1,R0,#0x18 ; LED_state
 0000000C  0E09      LSR         R1,R1,#0x18
 0000000E  0409      LSL         R1,R1,#0x10
 00000010  4800      LDR         R0,=0xFF0000
 00000012  4001      AND         R1,R0
 00000014  4800      LDR         R0,=0xE0028014
 00000016  6001      STR         R1,[R0,#0x0]
   53: }
 00000018  4770      BX          R14
 0000001A          ENDP ; 'LED_Byte?T'


*** CODE SEGMENT '?PR?task_send_CAN?T?CAN_Ex1':
   62: void task_send_CAN (void) __task  {
 00000000  B084      SUB         R13,#0x10
 00000002            ; SCOPE-START
   65:                               1, 2, STANDARD_FORMAT, DATA_FRAME };
 00000002  4800      LDR         R1,=?tpl?0001 ; ?tpl?0001
 00000004  A800      ADD         R0,R13,#0x0
 00000006  2204      MOV         R2,#0x4
 00000008          L_18:
 00000008  C908      LDMIA       R1!,{R3}
 0000000A  C008      STMIA       R0!,{R3}
 0000000C  1E52      SUB         R2,R2,#0x1
 0000000E  D1FB      BNE         L_18  ; T=0x00000008
   67:   CAN_init (1, 500000);               /* CAN controller 1 init, 500 kbit/s   */
 00000010  2001      MOV         R0,#0x1
 00000012  4800      LDR         R1,=0x7A120
 00000014  F7FF      BL          CAN_init?T  ; T=0x0001  (1)
 00000016  FFF4      BL          CAN_init?T  ; T=0x0001  (2)
   68:   CAN_init (2, 500000);               /* CAN controller 2 init, 500 kbit/s   */
 00000018  2002      MOV         R0,#0x2
 0000001A  4800      LDR         R1,=0x7A120
 0000001C  F7FF      BL          CAN_init?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          CAN_init?T  ; T=0x0001  (2)
   74:   CAN_rx_object (1, 2,  33, STANDARD_FORMAT); /* Enable reception of         */
 00000020  2001      MOV         R0,#0x1
 00000022  2102      MOV         R1,#0x2
 00000024  2221      MOV         R2,#0x21
 00000026  2300      MOV         R3,#0x0
 00000028  F7FF      BL          CAN_rx_object?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          CAN_rx_object?T  ; T=0x0001  (2)
   78:   CAN_start (1);                      /* Start controller 1                  */
 0000002C  2001      MOV         R0,#0x1
 0000002E  F7FF      BL          CAN_start?T  ; T=0x0001  (1)
 00000030  FFE7      BL          CAN_start?T  ; T=0x0001  (2)
   79:   CAN_start (2);                      /* Start controller 2                  */
 00000032  2002      MOV         R0,#0x2
 00000034  F7FF      BL          CAN_start?T  ; T=0x0001  (1)
 00000036  FFE4      BL          CAN_start?T  ; T=0x0001  (2)
   81:   tsk1 = os_tsk_self ();              /* Get own task identification number  */
 00000038  F7FF      BL          os_tsk_self?T  ; T=0x0001  (1)
 0000003A  FFE2      BL          os_tsk_self?T  ; T=0x0001  (2)
 0000003C  4800      LDR         R1,=tsk1 ; tsk1
 0000003E  6008      STR         R0,[R1,#0x0] ; tsk1
   82:   tsk2 = os_tsk_create (task_rece_CAN, 0);  /* Start receive task            */
 00000040  4800      LDR         R0,=task_rece_CAN?T ; task_rece_CAN?T
 00000042  2200      MOV         R2,#0x0
 00000044  2100      MOV         R1,#0x0
 00000046  2300      MOV         R3,#0x0
 00000048  F7FF      BL          os_tsk_create_user?T  ; T=0x0001  (1)
 0000004A  FFDA      BL          os_tsk_create_user?T  ; T=0x0001  (2)
 0000004C  4800      LDR         R1,=tsk2 ; tsk2
 0000004E  6008      STR         R0,[R1,#0x0] ; tsk2
   84:   for (;;)  {
 00000050          L_4:
   85:     msg_send.data[0] = get_AD ();     /* Data[0] field = analog value from   */
 00000050  F7FF      BL          get_AD?T  ; T=0x0001  (1)
ARM COMPILER V2.32a,  CAN_Ex1                                                              15/03/07  08:58:24  PAGE 6   

 00000052  FFD6      BL          get_AD?T  ; T=0x0001  (2)
 00000054  A901      ADD         R1,R13,#0x4
 00000056  7008      STRB        R0,[R1,#0x0] ; msg_send+4
   87:     RESET_WATCH_DOG;                                 /* potentiometer                       */
 00000058  4800      LDR         R2,=0x800
 0000005A  4800      LDR         R0,=0xE0028008
 0000005C  6801      LDR         R1,[R0,#0x0]
 0000005E  4311      ORR         R1,R2
 00000060  6001      STR         R1,[R0,#0x0]
 00000062  46C0      NOP         ; MOV R8,R8
 00000064  46C0      NOP         ; MOV R8,R8
 00000066  4800      LDR         R2,=0x800
 00000068  4800      LDR         R0,=0xE002800C
 0000006A  6801      LDR         R1,[R0,#0x0]
 0000006C  4311      ORR         R1,R2
 0000006E  6001      STR         R1,[R0,#0x0]
 00000070  46C0      NOP         ; MOV R8,R8
 00000072  46C0      NOP         ; MOV R8,R8
 00000074  4800      LDR         R2,=0x800
 00000076  4800      LDR         R0,=0xE0028004
 00000078  6801      LDR         R1,[R0,#0x0]
 0000007A  4311      ORR         R1,R2
 0000007C  6001      STR         R1,[R0,#0x0]
 0000007E  46C0      NOP         ; MOV R8,R8
 00000080  46C0      NOP         ; MOV R8,R8
 00000082  4800      LDR         R2,=0x800
 00000084  4800      LDR         R0,=0xE002800C
 00000086  6801      LDR         R1,[R0,#0x0]
 00000088  4311      ORR         R1,R2
 0000008A  6001      STR         R1,[R0,#0x0]
 0000008C  46C0      NOP         ; MOV R8,R8
 0000008E  46C0      NOP         ; MOV R8,R8
 00000090  4800      LDR         R2,=0x800
 00000092  4800      LDR         R0,=0xE0028004
 00000094  6801      LDR         R1,[R0,#0x0]
 00000096  4311      ORR         R1,R2
 00000098  6001      STR         R1,[R0,#0x0]
 0000009A  46C0      NOP         ; MOV R8,R8
 0000009C  46C0      NOP         ; MOV R8,R8
   89:     CAN_send (2, &msg_send, 0x0f00);  /* Send msg_send on controller 2       */
 0000009E  A900      ADD         R1,R13,#0x0
 000000A0  2002      MOV         R0,#0x2
 000000A2  4800      LDR         R2,=0xF00
 000000A4  F7FF      BL          CAN_send?T  ; T=0x0001  (1)
 000000A6  FFAC      BL          CAN_send?T  ; T=0x0001  (2)
   90:     os_dly_wait (100);                /* Wait 1 second                       */
 000000A8  2064      MOV         R0,#0x64
 000000AA  F7FF      BL          os_dly_wait?T  ; T=0x0001  (1)
 000000AC  FFA9      BL          os_dly_wait?T  ; T=0x0001  (2)
   91:   }
 000000AE  E7CF      B           L_4  ; T=0x00000050
 000000B0            ; SCOPE-END
   92: }
 000000B0  B004      ADD         R13,#0x10
 000000B2          ENDP ; 'task_send_CAN?T'


*** CODE SEGMENT '?PR?task_rece_CAN?T?CAN_Ex1':
   99: void task_rece_CAN (void) __task  {
 00000000  B084      SUB         R13,#0x10
 00000002            ; SCOPE-START
  102:   for (;;)  {
 00000002          L_9:
  105:     if (CAN_receive (1, &msg_rece, 0x00FF) == CAN_OK)  {
 00000002  A900      ADD         R1,R13,#0x0
 00000004  2001      MOV         R0,#0x1
 00000006  22FF      MOV         R2,#0xFF
 00000008  F7FF      BL          CAN_receive?T  ; T=0x0001  (1)
ARM COMPILER V2.32a,  CAN_Ex1                                                              15/03/07  08:58:24  PAGE 7   

 0000000A  FFFA      BL          CAN_receive?T  ; T=0x0001  (2)
 0000000C  2800      CMP         R0,#0x0 ; CAN_receive?T
 0000000E  D1F8      BNE         L_9  ; T=0x00000002
  106:       LED_Byte (msg_rece.data[0]);
 00000010  A801      ADD         R0,R13,#0x4
 00000012  7800      LDRB        R0,[R0,#0x0] ; msg_rece+4
 00000014  F7FF      BL          LED_Byte?T  ; T=0x0001  (1)
 00000016  FFF4      BL          LED_Byte?T  ; T=0x0001  (2)
  108:   }
 00000018  E7F3      B           L_9  ; T=0x00000002
 0000001A            ; SCOPE-END
  109: }
 0000001A  B004      ADD         R13,#0x10
 0000001C          ENDP ; 'task_rece_CAN?T'


*** CODE SEGMENT '?PR?get_AD?T?CAN_Ex1':
  118: unsigned char get_AD (void)  {
 00000000            ; SCOPE-START
  121:   ADCR |= 0x01000000;                 /* Start A/D Conversion                */
 00000000  4800      LDR         R2,=0x1000000
 00000002  4800      LDR         R0,=0xE0034000
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4311      ORR         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
  123:   do  {
 0000000A          L_12:
  124:     val = ADDR;                       /* Read A/D Data Register              */
 0000000A  4800      LDR         R0,=0xE0034004
 0000000C  6801      LDR         R1,[R0,#0x0]
 0000000E  ---- Variable 'val' assigned to Register 'R1' ----
  125:   } 
 0000000E  1C08      MOV         R0,R1 ; val
 00000010  4800      LDR         R2,=0x80000000
 00000012  4210      TST         R0,R2 ; val
 00000014  D0F9      BEQ         L_12  ; T=0x0000000A
  128:   ADCR &= ~0x01000000;                /* Stop A/D Conversion                 */
 00000016  4800      LDR         R3,=0x1000000
 00000018  4800      LDR         R0,=0xE0034000
 0000001A  6802      LDR         R2,[R0,#0x0]
 0000001C  439A      BIC         R2,R3
 0000001E  6002      STR         R2,[R0,#0x0]
  129:   val = (val >> 8) & 0xFF;            /* Extract AIN0 Value                  */
 00000020  0A09      LSR         R1,R1,#0x8 ; val
 00000022  20FF      MOV         R0,#0xFF
 00000024  4001      AND         R1,R0
  131:   return val;
 00000026  1C08      MOV         R0,R1 ; val
 00000028            ; SCOPE-END
  132: }
 00000028  4770      BX          R14
 0000002A          ENDP ; 'get_AD?T'


*** CODE SEGMENT '?PR?main?CAN_Ex1':
  139: void main (void)  {                   /* Program execution starts here       */
 00000000  B500      PUSH        {LR}
  140:   ADCR   = 0x00270401;                /* Setup A/D: 10-bit AIN0 @ 3MHz       */
 00000002  4800      LDR         R1,=0x270401
 00000004  4800      LDR         R0,=0xE0034000
 00000006  6001      STR         R1,[R0,#0x0]
  142:   LED_Init ();                        /* Initialize LED                      */
 00000008  F7FF      BL          LED_Init?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          LED_Init?T  ; T=0x0001  (2)
  143:   LED_Byte (0);                       /* Turn the LED off                    */
 0000000C  2000      MOV         R0,#0x0
 0000000E  F7FF      BL          LED_Byte?T  ; T=0x0001  (1)
 00000010  FFF7      BL          LED_Byte?T  ; T=0x0001  (2)
  145:   os_sys_init (task_send_CAN);        /* Initialize and start task 1         */
 00000012  4800      LDR         R0,=task_send_CAN?T ; task_send_CAN?T
ARM COMPILER V2.32a,  CAN_Ex1                                                              15/03/07  08:58:24  PAGE 8   

 00000014  2200      MOV         R2,#0x0
 00000016  2100      MOV         R1,#0x0
 00000018  2300      MOV         R3,#0x0
 0000001A  F7FF      BL          os_sys_init_user?T  ; T=0x0001  (1)
 0000001C  FFF1      BL          os_sys_init_user?T  ; T=0x0001  (2)
  146: }
 0000001E  BC08      POP         {R3}
 00000020  4718      BX          R3
 00000022          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         8
  const size           =        16
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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