📄 sja.lst
字号:
C51 COMPILER V3.20, SN-0 SJA 05/24/04 10:40:02 PAGE 1
DOS C51 COMPILER V3.20, COMPILATION OF MODULE SJA
OBJECT MODULE PLACED IN SJA.OBJ
COMPILER INVOKED BY: C:\XINGYAN\FSI\BIN\C51.EXE SJA.C DB SB OE ROM(LARGE) SMALL OT(2) RB(0)
stmt level source
1 /*
* sja.c
*
* CAN总线通讯
*
*
* 原作者:刘篷,孙占辉
*
* 修改:陈真勇(SA01010010)
* w3wind@sina.com or
* zychen@ustc.edu.cn
* 中国科学技术大学自动化系
* 2002/6/12
*/
15 /*
修改:王占成
zcwang@mail.ustc.edu.cn
2003.4.28
*/
21 #include "sja.h"
22 #include "Xdata.h"
23 #include "link.h"
24 #include "delay.h"
25 #include "watchdog.h"
26
27 /*extern BYTE canmode[17]; /*存放控制字 */
28
29
30 /* direct access to 8051 memory areas */
31
32 BYTE read_sja(BYTE addr) reentrant using 0
33 {
34 1 return ((BYTE volatile*)0x2F000L)[addr]; /*SJA基址为0x2000*/
35 1 }
36
37 void write_sja(BYTE addr,BYTE val) reentrant using 0
38 {
39 1 ((BYTE volatile*)0x2F000L)[addr]=val;
40 1 }
41
42 /*
* function below used for SJA settings,system startup display
*/
45 void btransmit() reentrant;
46
47 void send_reset_frame(BYTE md_addr) using 0
48 {
49 1 BYTE temp_reg,relay_time;
50 1
51 1 write_sja(1,0x08);
52 1 temp_reg=read_sja(4);
53 1 write_sja(4,0x00);
54 1 TXdata[0]=0x08;
55 1 TXdata[1]=0x40;
C51 COMPILER V3.20, SN-0 SJA 05/24/04 10:40:02 PAGE 2
56 1 TXdata[2]=0x00;
57 1 TXdata[3]=0x5f;
58 1 TXdata[4]=0x05;
59 1 TXdata[5]=md_addr;
60 1 TXdata[6]=0x00;
61 1 TXdata[7]=0x00;
62 1 TXdata[8]=0x00;
63 1 TXdata[9]=0x00;
64 1 TXdata[10]=0x00;
65 1 relay_time=md_addr;
66 1 while(relay_time--){/* delay some time relate to module address in order to avoid crash*/
67 2 delay(5);
68 2 }
69 1 btransmit();
70 1 write_sja(4,temp_reg);
71 1 clear_watchdog();
72 1 }
73 /* init SJA1000 */
74 void init_sja(BYTE md_addr,BYTE baud)
75 {
76 1 read_sja(3);
77 1 do{
78 2 write_sja(0,0x01);
79 2 }while(!(read_sja(0)&0x01));
80 1
81 1
82 1 write_sja(6,baud); /*bustime0 default 0xc3*/
83 1 write_sja(7,0xA3); /*bustime1 default 0xa3*/
84 1 write_sja(8,0x1A); /*output control*/
85 1 write_sja(31,0xc7); /*PeliCAN mode,bypass the input comparator*/
86 1
87 1 write_sja(14,0x00);
88 1 write_sja(15,0x00);
89 1
90 1 write_sja(16,md_addr); /*acceptcode default ffffffff*/
91 1 write_sja(17,0xff);
92 1 write_sja(18,0x03);
93 1 write_sja(19,0xff);
94 1
95 1 write_sja(20,0xc0); /*acceptmask default ffffffff*/
96 1 write_sja(21,0xff);
97 1 write_sja(22,0xc0);
98 1 write_sja(23,0xff);
99 1
100 1 write_sja(4,0x09);
101 1 write_sja(1,0x04);
102 1
103 1 /*can_mode[17],0 mode,1 inter,2 bustime0,3 bustime1,4 outputcontrol,5 clockdivide,6-9 acode,10-13 amask,1
-4 errorlimit,15 RXecount,16 TXecount*/
104 1 do{
105 2 write_sja(0,0x00); /*SJA1000 workingmode normal+++++++++++++++++++++++++++*/
106 2 }while(!read_sja(0)&0x08 );
107 1
108 1 send_reset_frame(md_addr);/*发出初始帧*/
109 1 }
110
111
112 void btransmit() reentrant using 0
113 {
114 1 BYTE j;
115 1 BYTE can_addr;
116 1 EA=0;
C51 COMPILER V3.20, SN-0 SJA 05/24/04 10:40:02 PAGE 3
117 1 can_addr=16;
118 1
119 1 do{
120 2 }while(! (read_sja(2)&0x04) ); /* wait until reg2^2==1 */
121 1
122 1 CANLAMP=0;/* light LED */
123 1 for(j=0;j<11;j++) {/* write 11 bytes data to transmit buffer */
124 2 write_sja(can_addr++,TXdata[j]);
125 2 }
126 1 CANLAMP=1;/* disable LED */
127 1
128 1 write_sja(0x01,0x01);/* send out */
129 1 EA=1;
130 1 }
131
132 /* 读取帧
* return value: 0 successful,1 failure
*/
135 BYTE receive() using 0
136 {
137 1 int i=0;
138 1 BYTE addr=16;
139 1
140 1 if(read_sja(2)&0x01)
141 1 {
142 2 CANLAMP=0;
143 2 do{
144 3 for(i=0;i<11;i++){
145 4 RXdata[i]=read_sja(addr++);/*接收数据,读接收寄存器*/
146 4 }
147 3 write_sja(0x01,0x04); /*清空寄存器*/
148 3 }while(read_sja(2)&0x01);
149 2 read_sja(3);
150 2 CANLAMP=1;
151 2 return 0;
152 2 }
153 1 else
154 1 {
155 2 write_sja(0x01,0x0c);
156 2 read_sja(3);
157 2 return 1;
158 2 }
159 1 }
160
C51 COMPILER V3.20, SN-0 SJA 05/24/04 10:40:02 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
CANLAMP. . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
_send_reset_frame. . . . . . . . . . . PUBLIC CODE PROC ----- -----
md_addr. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
temp_reg . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
relay_time . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
ADCAL1 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0095H 1
ADCAL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A0H 1
JDQ1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
JDQ2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
DQ . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0097H 1
T2IE . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
BGEN . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
T2IP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
ADSDATA1 . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
ADSDATA2 . . . . . . . . . . . . . . . ABSBIT ----- BIT 0093H 1
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
_?delay. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
_init_sja. . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
md_addr. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
baud . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
WDSI . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
clear_watchdog . . . . . . . . . . . . EXTERN CODE PROC ----- -----
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
RXdata . . . . . . . . . . . . . . . . EXTERN DATA ARRAY ----- 11
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
TXdata . . . . . . . . . . . . . . . . EXTERN DATA ARRAY ----- 11
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
C51 COMPILER V3.20, SN-0 SJA 05/24/04 10:40:02 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
_?read_sja . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
addr . . . . . . . . . . . . . . . . AUTO U_INT U_CHAR 0000H 1
PID. . . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 54
ReceiveValue . . . . . . . . . . . . MEMBER ----- UNION 0000H 18
CalValue . . . . . . . . . . . . . . MEMBER ----- UNION 0012H 18
SendValue. . . . . . . . . . . . . . MEMBER ----- UNION 0024H 18
ADSCLK1. . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
ADSCLK2. . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
receive. . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
i. . . . . . . . . . . . . . . . . . AUTO DATA INT 0000H 2
addr . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
CANCS. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1
ADDRDY1. . . . . . . . . . . . . . . . ABSBIT ----- BIT 0094H 1
ADDRDY2. . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A1H 1
_?write_sja. . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
addr . . . . . . . . . . . . . . . . AUTO U_INT U_CHAR 0000H 1
val. . . . . . . . . . . . . . . . . AUTO U_INT U_CHAR 0001H 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
T2RSE. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
uValue . . . . . . . . . . . . . . . . * TAG * ----- UNION ----- 18
sValue . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 18
bValue . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 18
_?btransmit. . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
j. . . . . . . . . . . . . . . . . . AUTO U_INT U_CHAR 0000H 1
can_addr . . . . . . . . . . . . . . AUTO U_INT U_CHAR 0001H 1
WDSCK. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0092H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 537 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -