📄 ican-mcp2515.lst
字号:
###############################################################################
# #
# 06/Dec/2008 17:12:51 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = E:\ELE\yten\pro\message\ican-mcp2515.c #
# Command line = E:\ELE\yten\pro\message\ican-mcp2515.c -D EMB_FLASH #
# -lCN E:\ELE\yten\pro\Debug\List\ -lb #
# E:\ELE\yten\pro\Debug\List\ -o #
# E:\ELE\yten\pro\Debug\Obj\ --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian little --cpu Cortex-M3 #
# -e --fpu None --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\DLib_Config_Normal.h" -I #
# E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I #
# "C:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\" --section .text=.XML -On #
# List file = E:\ELE\yten\pro\Debug\List\ican-mcp2515.lst #
# Object file = E:\ELE\yten\pro\Debug\Obj\ican-mcp2515.o #
# #
# #
###############################################################################
E:\ELE\yten\pro\message\ican-mcp2515.c
1 ////////////////////////
2 #include "includes.h"
3 #include"ytep.h"
4 #include"can.h"
\ In section .rodata, align 4
\ unsigned char const __data CAN_RATE_TAB[3]
\ CAN_RATE_TAB:
\ 00000000 01041800 DC8 1, 4, 24, 0
\ In section .rodata, align 4
5 const Int8U CAN_BAUD[]={1,4,18};
\ CAN_BAUD:
\ 00000000 01041200 DC8 1, 4, 18, 0
6 ////////////////////////
7 //------------------------------------
\ In section .XML, align 4, keep-with-next
8 void WriteSPI(unsigned char DataOut)
9 {
10 unsigned char n;
11
12 Clr_bit(IO_mSCK,mSCK) ; //Make sure clock is low
\ WriteSPI:
\ 00000000 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000002 1268 LDR R2,[R2, #+0]
\ 00000004 7FF48063 MVNS R3,#+1024
\ 00000008 1340 ANDS R3,R3,R2
\ 0000000A .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 0000000C 1360 STR R3,[R2, #+0]
13
14 for(n=0; n<8; n++)
\ 0000000E 0022 MOVS R2,#+0
\ 00000010 1100 MOVS R1,R2
\ ??WriteSPI_0:
\ 00000012 C9B2 UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000014 0829 CMP R1,#+8
\ 00000016 32D2 BCS.N ??WriteSPI_1
15 {
16 if((DataOut << n) & 0x80)Set_bit(IO_mSI,mSI); //mSII = 1;
\ 00000018 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 0000001A 10FA01F2 LSLS R2,R0,R1
\ 0000001E 1206 LSLS R2,R2,#+24
\ 00000020 06D5 BPL.N ??WriteSPI_2
\ 00000022 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000024 1268 LDR R2,[R2, #+0]
\ 00000026 52F00202 ORRS R2,R2,#0x2
\ 0000002A .... LDR.N R3,??DataTable25 ;; 0x40010c0c
\ 0000002C 1A60 STR R2,[R3, #+0]
\ 0000002E 05E0 B.N ??WriteSPI_3
17 else Clr_bit(IO_mSI,mSI) ; //Clock a 0
\ ??WriteSPI_2:
\ 00000030 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000032 1268 LDR R2,[R2, #+0]
\ 00000034 0223 MOVS R3,#+2
\ 00000036 9A43 BICS R2,R2,R3
\ 00000038 .... LDR.N R3,??DataTable25 ;; 0x40010c0c
\ 0000003A 1A60 STR R2,[R3, #+0]
18 asm("nop");
\ ??WriteSPI_3:
\ 0000003C 00BF nop
19 asm("nop");
\ 0000003E 00BF nop
20 asm("nop");
\ 00000040 00BF nop
21
22 Set_bit(IO_mSCK,mSCK); //mSCK = 1; //Pulse clock // mSCK = 0; //
\ 00000042 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000044 1268 LDR R2,[R2, #+0]
\ 00000046 52F48062 ORRS R2,R2,#0x400
\ 0000004A .... LDR.N R3,??DataTable25 ;; 0x40010c0c
\ 0000004C 1A60 STR R2,[R3, #+0]
23 asm("nop");
\ 0000004E 00BF nop
24 asm("nop");
\ 00000050 00BF nop
25 asm("nop");
\ 00000052 00BF nop
26 asm("nop");
\ 00000054 00BF nop
27 asm("nop");
\ 00000056 00BF nop
28
29 Clr_bit(IO_mSCK,mSCK);
\ 00000058 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 0000005A 1268 LDR R2,[R2, #+0]
\ 0000005C 7FF48063 MVNS R3,#+1024
\ 00000060 1340 ANDS R3,R3,R2
\ 00000062 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000064 1360 STR R3,[R2, #+0]
30 asm("nop");
\ 00000066 00BF nop
31 asm("nop");
\ 00000068 00BF nop
32 asm("nop");
\ 0000006A 00BF nop
33 asm("nop");
\ 0000006C 00BF nop
34
35 Clr_bit(IO_mSI,mSI) ;
\ 0000006E .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000070 1268 LDR R2,[R2, #+0]
\ 00000072 0223 MOVS R3,#+2
\ 00000074 9A43 BICS R2,R2,R3
\ 00000076 .... LDR.N R3,??DataTable25 ;; 0x40010c0c
\ 00000078 1A60 STR R2,[R3, #+0]
36 }
\ 0000007A 491C ADDS R1,R1,#+1
\ 0000007C C9E7 B.N ??WriteSPI_0
37 }
\ ??WriteSPI_1:
\ 0000007E 7047 BX LR ;; return
38
39 /********************************************************************/
\ In section .XML, align 4, keep-with-next
40 unsigned char ReadSPI( void )
41 {
42 unsigned char n, DataIn = 0;
\ ReadSPI:
\ 00000000 0022 MOVS R2,#+0
\ 00000002 1000 MOVS R0,R2
43
44 Clr_bit(IO_mSCK,mSCK); //mSCK = 0; //Make sure clock is low
\ 00000004 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000006 1268 LDR R2,[R2, #+0]
\ 00000008 7FF48063 MVNS R3,#+1024
\ 0000000C 1340 ANDS R3,R3,R2
\ 0000000E .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000010 1360 STR R3,[R2, #+0]
45 for(n=0; n<7; n++)
\ 00000012 0022 MOVS R2,#+0
\ 00000014 1100 MOVS R1,R2
\ ??ReadSPI_0:
\ 00000016 C9B2 UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000018 0729 CMP R1,#+7
\ 0000001A 21D2 BCS.N ??ReadSPI_1
46 {
47 Set_bit(IO_mSCK,mSCK) ; //mSCK = 1;
\ 0000001C .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 0000001E 1268 LDR R2,[R2, #+0]
\ 00000020 52F48062 ORRS R2,R2,#0x400
\ 00000024 .... LDR.N R3,??DataTable25 ;; 0x40010c0c
\ 00000026 1A60 STR R2,[R3, #+0]
48 asm("nop");
\ 00000028 00BF nop
49 asm("nop");
\ 0000002A 00BF nop
50 if(Get_bit(IO_mSO,mSO))DataIn|=1;
\ 0000002C .... LDR.N R2,??DataTable23 ;; 0x40010c08
\ 0000002E 1368 LDR R3,[R2, #+0]
\ 00000030 0122 MOVS R2,#+1
\ 00000032 1A40 ANDS R2,R2,R3
\ 00000034 .... LDR.N R3,??DataTable23 ;; 0x40010c08
\ 00000036 1A60 STR R2,[R3, #+0]
\ 00000038 002A CMP R2,#+0
\ 0000003A 02D0 BEQ.N ??ReadSPI_2
\ 0000003C 50F00100 ORRS R0,R0,#0x1
\ 00000040 01E0 B.N ??ReadSPI_3
51 else DataIn&=0xfe;
\ ??ReadSPI_2:
\ 00000042 10F0FE00 ANDS R0,R0,#0xFE
52
53 DataIn = (DataIn << 1);
\ ??ReadSPI_3:
\ 00000046 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000048 4000 LSLS R0,R0,#+1
54 Clr_bit(IO_mSCK,mSCK);
\ 0000004A .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 0000004C 1268 LDR R2,[R2, #+0]
\ 0000004E 7FF48063 MVNS R3,#+1024
\ 00000052 1340 ANDS R3,R3,R2
\ 00000054 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000056 1360 STR R3,[R2, #+0]
55 asm("nop");
\ 00000058 00BF nop
56 asm("nop");//mSCK = 0;
\ 0000005A 00BF nop
57 }
\ 0000005C 491C ADDS R1,R1,#+1
\ 0000005E DAE7 B.N ??ReadSPI_0
58 Set_bit(IO_mSCK,mSCK); //mSCK = 1;
\ ??ReadSPI_1:
\ 00000060 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000062 1268 LDR R2,[R2, #+0]
\ 00000064 52F48062 ORRS R2,R2,#0x400
\ 00000068 .... LDR.N R3,??DataTable25 ;; 0x40010c0c
\ 0000006A 1A60 STR R2,[R3, #+0]
59 if(Get_bit(IO_mSO,mSO))DataIn|=1;
\ 0000006C .... LDR.N R2,??DataTable23 ;; 0x40010c08
\ 0000006E 1368 LDR R3,[R2, #+0]
\ 00000070 0122 MOVS R2,#+1
\ 00000072 1A40 ANDS R2,R2,R3
\ 00000074 .... LDR.N R3,??DataTable23 ;; 0x40010c08
\ 00000076 1A60 STR R2,[R3, #+0]
\ 00000078 002A CMP R2,#+0
\ 0000007A 02D0 BEQ.N ??ReadSPI_4
\ 0000007C 50F00100 ORRS R0,R0,#0x1
\ 00000080 01E0 B.N ??ReadSPI_5
60 else DataIn&=0xfe; //DataIn = DataIn + mSI;
\ ??ReadSPI_4:
\ 00000082 10F0FE00 ANDS R0,R0,#0xFE
61 Clr_bit(IO_mSCK,mSCK); // mSCK = 0;
\ ??ReadSPI_5:
\ 00000086 .... LDR.N R2,??DataTable25 ;; 0x40010c0c
\ 00000088 1268 LDR R2,[R2, #+0]
\ 0000008A 7FF48063 MVNS R3,#+1024
\ 0000008E 1340 ANDS R3,R3,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -