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

📄 mcp2515.lst

📁 IAR5.2下 AT91SAM9260 ARM 对 MCP2515 控制源化码
💻 LST
📖 第 1 页 / 共 5 页
字号:
###############################################################################
#                                                                             #
#                                                       09/Mar/2009  08:20:42 #
# IAR ANSI C/C++ Compiler V5.20.2.21007/W32 EVALUATION for ARM                #
# Copyright 1999-2008 IAR Systems AB.                                         #
#                                                                             #
#    Cpu mode     =  arm                                                      #
#    Endian       =  little                                                   #
#    Source file  =  E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\MCP2515.c #
#    Command line =  E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\MCP2515.c #
#                     -D at91sam9260 -D sdram -lC                             #
#                    E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
#                    am9260_sdram\List\ --remarks --diag_suppress             #
#                    Pe826,Pe1375 -o E:\IAR\at91sam9260-ek\basic-twi-eeprom-p #
#                    roject\ewp\at91sam9260_sdram\Obj\ --no_cse --no_unroll   #
#                    --no_inline --no_code_motion --no_tbaa --no_clustering   #
#                    --no_scheduling --debug --endian=little                  #
#                    --cpu=ARM926EJ-S -e --fpu=None --dlib_config             #
#                    "C:\Program Files\IAR Systems\Embedded Workbench 5.0     #
#                    Evaluation\ARM\INC\DLib_Config_Full.h" -I                #
#                    E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
#                    \..\at91lib\ -I E:\IAR\at91sam9260-ek\basic-twi-eeprom-p #
#                    roject\ewp\..\..\..\at91lib\boards\at91sam9260-ek\ -I    #
#                    E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
#                    \..\at91lib\peripherals\ -I                              #
#                    E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
#                    \..\at91lib\components\ -I E:\IAR\at91sam9260-ek\basic-t #
#                    wi-eeprom-project\ewp\..\..\..\at91lib\usb\ -I           #
#                    "C:\Program Files\IAR Systems\Embedded Workbench 5.0     #
#                    Evaluation\ARM\INC\" --interwork --cpu_mode arm -On      #
#    List file    =  E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
#                    am9260_sdram\List\MCP2515.lst                            #
#    Object file  =  E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
#                    am9260_sdram\Obj\MCP2515.o                               #
#                                                                             #
#                                                                             #
###############################################################################

E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\MCP2515.c
      1          
      2          #include "MCP2515.h"
      3          #include <spi/spi.h>
      4          #include <dbgu/dbgu.h>
      5          #include <stdio.h>
      6          

   \                                 In section .text, align 4, keep-with-next
      7          void DelayX(unsigned x)
      8          {
      9              unsigned i;
     10              while(--x)	
   \                     DelayX:
   \                     ??DelayX_0:
   \   00000000   010050E2           SUBS     R0,R0,#+1
   \   00000004   000050E3           CMP      R0,#+0
   \   00000008   0500000A           BEQ      ??DelayX_1
     11              {
     12                  for(i=0;i<1000;i++);
   \   0000000C   0020A0E3           MOV      R2,#+0
   \   00000010   0210B0E1           MOVS     R1,R2
   \                     ??DelayX_2:
   \   00000014   FA0F51E3           CMP      R1,#+1000
   \   00000018   F8FFFF2A           BCS      ??DelayX_0
   \   0000001C   011091E2           ADDS     R1,R1,#+1
   \   00000020   FBFFFFEA           B        ??DelayX_2
     13              }
     14          }
   \                     ??DelayX_1:
   \   00000024   1EFF2FE1           BX       LR               ;; return
     15          
     16          

   \                                 In section .text, align 4, keep-with-next
     17          void DelayF(unsigned x)
     18          {
     19              unsigned i;
     20              while(--x)	
   \                     DelayF:
   \                     ??DelayF_0:
   \   00000000   010050E2           SUBS     R0,R0,#+1
   \   00000004   000050E3           CMP      R0,#+0
   \   00000008   0500000A           BEQ      ??DelayF_1
     21              {
     22                  for(i=0;i<100;i++);
   \   0000000C   0020A0E3           MOV      R2,#+0
   \   00000010   0210B0E1           MOVS     R1,R2
   \                     ??DelayF_2:
   \   00000014   640051E3           CMP      R1,#+100
   \   00000018   F8FFFF2A           BCS      ??DelayF_0
   \   0000001C   011091E2           ADDS     R1,R1,#+1
   \   00000020   FBFFFFEA           B        ??DelayF_2
     23              }
     24          }
   \                     ??DelayF_1:
   \   00000024   1EFF2FE1           BX       LR               ;; return
     25          
     26          
     27          //*****************************************************************************
     28          //* \fn    MCP_Spi0Write
     29          //* \brief write command to PDC
     30          //*****************************************************************************

   \                                 In section .text, align 4, keep-with-next
     31          void MCP_Spi0Write (unsigned char* cmd_pt,unsigned int cmd_size, unsigned char* data_pt,unsigned int data_size)
     32          {
   \                     MCP_Spi0Write:
   \   00000000   F8402DE9           PUSH     {R3-R7,LR}
   \   00000004   0070B0E1           MOVS     R7,R0
   \   00000008   0140B0E1           MOVS     R4,R1
   \   0000000C   0250B0E1           MOVS     R5,R2
   \   00000010   0360B0E1           MOVS     R6,R3
     33              //unsigned int i;
     34              //unsigned char *data;
     35              
     36              //for(i=0;i<data_size;i++)
     37              //	data[i] = data_pt[i];
     38              
     39              // 禁止PDC接收和发送中断
     40              AT91C_BASE_SPI0->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;  
   \   00000014   78009FE5           LDR      R0,??MCP_Spi0Write_0  ;; 0xfffc8120
   \   00000018   0210A0E3           MOV      R1,#+2
   \   0000001C   801F81E3           ORR      R1,R1,#0x200
   \   00000020   001080E5           STR      R1,[R0, #+0]
     41              
     42             	//* 初始化发送和接收指针
     43              AT91C_BASE_SPI0->SPI_RPR = (unsigned int)cmd_pt ;
   \   00000024   6C009FE5           LDR      R0,??MCP_Spi0Write_0+0x4  ;; 0xfffc8100
   \   00000028   007080E5           STR      R7,[R0, #+0]
     44              AT91C_BASE_SPI0->SPI_TPR = (unsigned int)cmd_pt ;
   \   0000002C   68009FE5           LDR      R0,??MCP_Spi0Write_0+0x8  ;; 0xfffc8108
   \   00000030   007080E5           STR      R7,[R0, #+0]
     45           
     46              //* 初始化发送和接收计数
     47              AT91C_BASE_SPI0->SPI_RCR = cmd_size ;
   \   00000034   64009FE5           LDR      R0,??MCP_Spi0Write_0+0xC  ;; 0xfffc8104
   \   00000038   004080E5           STR      R4,[R0, #+0]
     48              AT91C_BASE_SPI0->SPI_TCR = cmd_size ;
   \   0000003C   60009FE5           LDR      R0,??MCP_Spi0Write_0+0x10  ;; 0xfffc810c
   \   00000040   004080E5           STR      R4,[R0, #+0]
     49              
     50              if ( data_size != 0 )  
   \   00000044   000056E3           CMP      R6,#+0
   \   00000048   0700000A           BEQ      ??MCP_Spi0Write_1
     51              {
     52                  //* 初始化下一个发送和接收指针
     53              	AT91C_BASE_SPI0->SPI_RNPR = (unsigned int)data_pt ;
   \   0000004C   54009FE5           LDR      R0,??MCP_Spi0Write_0+0x14  ;; 0xfffc8110
   \   00000050   005080E5           STR      R5,[R0, #+0]
     54                  AT91C_BASE_SPI0->SPI_TNPR = (unsigned int)data_pt ;
   \   00000054   50009FE5           LDR      R0,??MCP_Spi0Write_0+0x18  ;; 0xfffc8118
   \   00000058   005080E5           STR      R5,[R0, #+0]
     55                  //* 初始化下一个发送和接收计数
     56                  AT91C_BASE_SPI0->SPI_RNCR = data_size ;
   \   0000005C   4C009FE5           LDR      R0,??MCP_Spi0Write_0+0x1C  ;; 0xfffc8114
   \   00000060   006080E5           STR      R6,[R0, #+0]
     57                  AT91C_BASE_SPI0->SPI_TNCR = data_size ;
   \   00000064   48009FE5           LDR      R0,??MCP_Spi0Write_0+0x20  ;; 0xfffc811c
   \   00000068   006080E5           STR      R6,[R0, #+0]
     58              }
     59             	
     60              //* 允许接收满中断---- RXBUF
     61              AT91C_BASE_SPI0->SPI_IER = AT91C_SPI_RXBUFF;
   \                     ??MCP_Spi0Write_1:
   \   0000006C   44009FE5           LDR      R0,??MCP_Spi0Write_0+0x24  ;; 0xfffc8014
   \   00000070   4010A0E3           MOV      R1,#+64
   \   00000074   001080E5           STR      R1,[R0, #+0]
     62             	
     63              //* PDC传输控制----- 允许PDC传输和接收
     64              AT91C_BASE_SPI0->SPI_PTCR = AT91C_PDC_TXTEN + AT91C_PDC_RXTEN;
   \   00000078   14009FE5           LDR      R0,??MCP_Spi0Write_0  ;; 0xfffc8120
   \   0000007C   0110A0E3           MOV      R1,#+1
   \   00000080   401F81E3           ORR      R1,R1,#0x100
   \   00000084   001080E5           STR      R1,[R0, #+0]
     65          
     66              DelayF(10);
   \   00000088   0A00A0E3           MOV      R0,#+10
   \   0000008C   ........           BL       DelayF
     67          }
   \   00000090   F180BDE8           POP      {R0,R4-R7,PC}    ;; return
   \                     ??MCP_Spi0Write_0:
   \   00000094   2081FCFF           DC32     0xfffc8120
   \   00000098   0081FCFF           DC32     0xfffc8100
   \   0000009C   0881FCFF           DC32     0xfffc8108
   \   000000A0   0481FCFF           DC32     0xfffc8104
   \   000000A4   0C81FCFF           DC32     0xfffc810c
   \   000000A8   1081FCFF           DC32     0xfffc8110
   \   000000AC   1881FCFF           DC32     0xfffc8118
   \   000000B0   1481FCFF           DC32     0xfffc8114
   \   000000B4   1C81FCFF           DC32     0xfffc811c
   \   000000B8   1480FCFF           DC32     0xfffc8014
     68          
     69          
     70          //*****************************************************************************
     71          //* 函数名称:WriteRTS
     72          //* 函数功能:请求发送报文
     73          //* 入口参数:TxBuf: 发送缓冲器号(TX0RTS, TX1RTS, TX20RTS)
     74          //* 返回值 :无
     75          //*****************************************************************************

   \                                 In section .text, align 4, keep-with-next
     76          void WriteRTS(unsigned char TxBuf)
     77          {
   \                     WriteRTS:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   08D04DE2           SUB      SP,SP,#+8
   \   00000008   0040B0E1           MOVS     R4,R0
     78              unsigned char command[4];
     79          	
     80              command[0] = TxBuf;
   \   0000000C   0040CDE5           STRB     R4,[SP, #+0]
     81              MCP_Spi0Write ( command,1,0,0 );
   \   00000010   0030A0E3           MOV      R3,#+0
   \   00000014   0020A0E3           MOV      R2,#+0
   \   00000018   0110A0E3           MOV      R1,#+1
   \   0000001C   0D00B0E1           MOVS     R0,SP
   \   00000020   ........           BL       MCP_Spi0Write
     82              DelayF(DelayTime);
   \   00000024   0800A0E3           MOV      R0,#+8
   \   00000028   ........           BL       DelayF
     83          }
   \   0000002C   1380BDE8           POP      {R0,R1,R4,PC}    ;; return
     84          
     85          
     86          //*****************************************************************************
     87          //* 函数名称:McpReset
     88          //* 函数功能:复位 MCP2515
     89          //* 入口参数:无
     90          //* 返回值 :无
     91          //*****************************************************************************

   \                                 In section .text, align 4, keep-with-next
     92          void McpReset(void)
     93          {

⌨️ 快捷键说明

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