📄 ncca-m-01.lst
字号:
C51 COMPILER V7.50 NCCA_M_01 03/25/2008 13:02:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE NCCA_M_01
OBJECT MODULE PLACED IN NCCA-M-01.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE NCCA-M-01.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "AT89S8252.H"
2 #include "absacc.h"
3
4 #define FIFO_LEVEL 16
5 #define UBYTE unsigned char
6
7 #define SJA_REG_BaseADD 0x0800
8
9 #define RAM_DATA_IN_BASE 0x000
10 #define RAM_DATA_OUT_BASE 0x200
11 #define RAM_PARA_IN_BASE 0x400
12 #define RAM_PARA_OUT_BASE 0x520
13 #define RAM_CTRL_AREA_BASE 0x7C0
14 #define NODEID_ADDR 0x640
15 #define IN_IO_LENGTH 0x7F0
16 #define OUT_IO_LENGTH 0x7F6
17 #define BusStatusAddr 0x7DA
18
19 #define REG_MOD XBYTE[SJA_REG_BaseADD + 0x00]//0
20 #define REG_CMD XBYTE[SJA_REG_BaseADD + 0x01]//1
21 #define REG_SR XBYTE[SJA_REG_BaseADD + 0x02]//2
22 #define REG_IFR XBYTE[SJA_REG_BaseADD + 0x03]//3
23 #define REG_IER XBYTE[SJA_REG_BaseADD + 0x04]//4
24 #define REG_BTR0 XBYTE[SJA_REG_BaseADD + 0x06]//6 05 rvd
25 #define REG_BTR1 XBYTE[SJA_REG_BaseADD + 0x07]//7
26 #define REG_OCR XBYTE[SJA_REG_BaseADD + 0x08]//8
27 #define REG_TEST XBYTE[SJA_REG_BaseADD + 0x09]//9
28 #define REG_ALC XBYTE[SJA_REG_BaseADD + 0x0b]//11 0a rvd
29 #define REG_ECC XBYTE[SJA_REG_BaseADD + 0x0c]//12
30 #define REG_EWLR XBYTE[SJA_REG_BaseADD + 0x0d]//13
31 #define REG_RXERR XBYTE[SJA_REG_BaseADD + 0x0e]//14
32 #define REG_TXERR XBYTE[SJA_REG_BaseADD + 0x0f]//15
33
34 #define REG_ACR0 XBYTE[SJA_REG_BaseADD + 0x10]//16
35 #define REG_ACR1 XBYTE[SJA_REG_BaseADD + 0x11]//17
36 #define REG_ACR2 XBYTE[SJA_REG_BaseADD + 0x12]//18
37 #define REG_ACR3 XBYTE[SJA_REG_BaseADD + 0x13]//19
38 #define REG_AMR0 XBYTE[SJA_REG_BaseADD + 0x14]//20
39 #define REG_AMR1 XBYTE[SJA_REG_BaseADD + 0x15]//21
40 #define REG_AMR2 XBYTE[SJA_REG_BaseADD + 0x16]//22
41 #define REG_AMR3 XBYTE[SJA_REG_BaseADD + 0x17]//23
42
43 #define REG_RxIDBuffer0 XBYTE[SJA_REG_BaseADD + 0x10]//16
44 #define REG_RxIDBuffer1 XBYTE[SJA_REG_BaseADD + 0x11]//17
45 #define REG_RxIDBuffer2 XBYTE[SJA_REG_BaseADD + 0x12]//18
46 #define REG_RxIDBuffer3 XBYTE[SJA_REG_BaseADD + 0x13]//19
47 #define REG_RxIDBuffer4 XBYTE[SJA_REG_BaseADD + 0x14]//20
48 //
49 #define REG_TxIDBuffer0 XBYTE[SJA_REG_BaseADD + 0x10]//16
50 #define REG_TxIDBuffer1 XBYTE[SJA_REG_BaseADD + 0x11]//17
51 #define REG_TxIDBuffer2 XBYTE[SJA_REG_BaseADD + 0x12]//18
52 #define REG_TxIDBuffer3 XBYTE[SJA_REG_BaseADD + 0x13]//19
53 #define REG_TxIDBuffer4 XBYTE[SJA_REG_BaseADD + 0x14]//20
54
55 #define REG_DataBuffer1 XBYTE[SJA_REG_BaseADD + 0x15]//21
C51 COMPILER V7.50 NCCA_M_01 03/25/2008 13:02:22 PAGE 2
56 #define REG_DataBuffer2 XBYTE[SJA_REG_BaseADD + 0x16]//22
57 #define REG_DataBuffer3 XBYTE[SJA_REG_BaseADD + 0x17]//23
58 #define REG_DataBuffer4 XBYTE[SJA_REG_BaseADD + 0x18]//24
59 #define REG_DataBuffer5 XBYTE[SJA_REG_BaseADD + 0x19]//25
60 #define REG_DataBuffer6 XBYTE[SJA_REG_BaseADD + 0x1a]//26
61 #define REG_DataBuffer7 XBYTE[SJA_REG_BaseADD + 0x1b]//27
62 #define REG_DataBuffer8 XBYTE[SJA_REG_BaseADD + 0x1c]//28
63 //
64 #define REG_RMC XBYTE[SJA_REG_BaseADD + 0x1d]//29
65 #define REG_RBSA XBYTE[SJA_REG_BaseADD + 0x1e]//30
66 #define REG_CDR XBYTE[SJA_REG_BaseADD + 0x1f]//31
67
68 unsigned char xdata _REG_CMD _at_ 0x801;
69 unsigned char xdata _REG_SR _at_ 0x802;
70 unsigned char xdata _REG_ACR0 _at_ 0x810;
71 unsigned char xdata _REG_ACR1 _at_ 0x811;
72 unsigned char xdata _REG_ACR2 _at_ 0x812;
73 unsigned char xdata _REG_ACR3 _at_ 0x813;
74 unsigned char xdata _REG_AMR0 _at_ 0x814;
75 unsigned char xdata _REG_AMR1 _at_ 0x815;
76 unsigned char xdata _REG_AMR2 _at_ 0x816;
77 unsigned char xdata _REG_AMR3 _at_ 0x817;
78
79 unsigned char xdata _REG_DataBuffer4 _at_ 0x818;
80 unsigned char xdata _REG_DataBuffer5 _at_ 0x819;
81 unsigned char xdata _REG_DataBuffer6 _at_ 0x81a;
82 unsigned char xdata _REG_DataBuffer7 _at_ 0x81b;
83 unsigned char xdata _REG_DataBuffer8 _at_ 0x81c;
84
85 #define ON 0
86 #define OFF 1
87
88 sbit SJARst = P1 ^ 1; //SJA1000 reset
89 sbit CANComIndicator=P3 ^ 3;
90 sbit SPIComIndicator=P1 ^ 3;
91 sbit ACKM=P1^2;
92 sbit ACKS=P1^0;
93 sbit SS=P1^4;
94 sbit stne=P1^1;
95
96 void SPIComm();
97
98 struct COBIDD
99 {
100 unsigned int rvd1 :3;
101 unsigned int nodeID :7;
102 unsigned int FuncCode :4;
103 unsigned int rvd2 :2;
104 unsigned int rvd3 ;
105 };
106
107 struct sja1000TxIDALL
108 {
109 unsigned char TxID3;
110 unsigned char TxID4;
111 unsigned char TxID1;
112 unsigned char TxID2;
113 };
114 union canTxIDD
115 {
116 struct COBIDD COBID;
117 struct sja1000TxIDALL all;
C51 COMPILER V7.50 NCCA_M_01 03/25/2008 13:02:22 PAGE 3
118 };
119 union canTxIDD canTxID;
120
121 struct sja1000RxIDALL
122 {
123 unsigned char RxID3;
124 unsigned char RxID4;
125 unsigned char RxID1;
126 unsigned char RxID2;
127 };
128 union canRxIDD
129 {
130 struct COBIDD COBID;
131 struct sja1000RxIDALL all;
132 };
133 union canRxIDD canRxID;
134 unsigned char temp_data1,SRcpy,CANOfflinTime,CANRdata[8],CANSdata[8];
135 UBYTE i;
136 UBYTE rdata1[17],sdata[16],Sum,SPIOfflinTime;
137
138 main()
139 {
140 1 SPIComIndicator=1;
141 1 for(i=0;i<16;i++)
142 1 {
143 2 sdata[i] = 0;
144 2 rdata1[i] = 0;
145 2 }
146 1 SPCON=0XFE;
147 1 ACKM=ACKS;
148 1 SS=0;
149 1 CANOfflinTime = 0;
150 1 canTxID.all.TxID1=0;
151 1 canTxID.all.TxID2=0;
152 1 canTxID.all.TxID3=0;
153 1 canTxID.all.TxID4=0;
154 1 SJARst = 1;
155 1 for(i = 0;i < 225;i++);
156 1 SJARst = 0;
157 1 for(i = 0;i < 225;i++);
158 1 SJARst = 1;
159 1 for(i = 0;i < 225;i++);
160 1 REG_MOD = 0x01;
161 1 temp_data1 = REG_MOD;
162 1 if((temp_data1 & 0x01)!=0)
163 1 {
164 2 REG_MOD = 0x05;
165 2 REG_BTR0 = 0x87;
166 2 REG_BTR1 = 0x0b4;
167 2 REG_OCR = 0x1a;
168 2 REG_CDR = 0xc8;
169 2 REG_RBSA = 0x00;
170 2 REG_ACR0 = 0x0ff;
171 2 REG_ACR1 = 0x0ff;
172 2 REG_ACR2 = 0x0ff;
173 2 REG_ACR3 = 0x0ff;
174 2 REG_AMR0 = 0x0ff;
175 2 REG_AMR1 = 0x0ff;
176 2 REG_AMR2 = 0x0ff;
177 2 REG_AMR3 = 0x0ff;
178 2 REG_IER = 0x0b;// enable TIE RIE DOIE
179 2 }
C51 COMPILER V7.50 NCCA_M_01 03/25/2008 13:02:22 PAGE 4
180 1 temp_data1 = REG_MOD;
181 1 REG_MOD = temp_data1 & 0x0fe;
182 1 //_REG_CMD=0x01;
183 1
184 1 EA=1;
185 1 EX0=1;//enable ex0
186 1
187 1 REG_TxIDBuffer0 = 0x88; //??? ???8 dsp:2no.,99,2,10,0xffffffe
188 1 REG_TxIDBuffer1 = 0x00;
189 1 REG_TxIDBuffer2 = 0x01;
190 1
191 1 REG_TxIDBuffer3 = 0x02 ;
192 1 REG_TxIDBuffer4 = 0x0f0;
193 1 REG_DataBuffer1 = 0x03;
194 1 REG_DataBuffer2 = 0x04;
195 1 REG_DataBuffer3 = 0x05;
196 1 REG_DataBuffer4 = 0x06;
197 1 REG_DataBuffer5 = 0x07;
198 1 REG_DataBuffer6 = 0x08;
199 1 REG_DataBuffer7 = 0x09;
200 1 REG_DataBuffer8 = 0x0a;
201 1
202 1 REG_CMD = 0x10;//SelfReceptionRequest
203 1
204 1 for(;;)
205 1 {
206 2
207 2 SPIComm();
208 2 }
209 1 }
210
211 void SPIComm()
212 {
213 1 char temp;
214 1 SPIOfflinTime++;
215 1 if((ACKM==ACKS)||(SPIOfflinTime==255))
216 1 {
217 2 if(SPIOfflinTime==255)
218 2 {
219 3 SPIComIndicator=1;
220 3 }
221 2 else
222 2 {
223 3 SPIComIndicator=0;
224 3 }
225 2
226 2 SPIOfflinTime=0;
227 2 // SS=1;
228 2 SPDAT =sdata[0];
229 2 temp = SPDAT ;
230 2 while ((SPSTA & 0x80) == 0);
231 2 rdata1[0]=SPDAT;
232 2 // SS=0;
233 2
234 2 for(i = 0; i < FIFO_LEVEL; i++)
235 2 {
236 3 // SS=1;
237 3 SPDAT =sdata[i];
238 3 while ((SPSTA & 0x80) == 0);
239 3 rdata1[i+1]=SPDAT;
240 3 // SS=0;
241 3 }
C51 COMPILER V7.50 NCCA_M_01 03/25/2008 13:02:22 PAGE 5
242 2
243 2 ACKM=!ACKS;
244 2 if(rdata1[0]==0x5A)
245 2 {
246 3 Sum=0;
247 3 for(i=1;i<FIFO_LEVEL-1;i++)
248 3 {
249 4 Sum += rdata1[i];
250 4 }
251 3
252 3 if((Sum & 0x0ff)==rdata1[FIFO_LEVEL-1])
253 3 {
254 4
255 4 }
256 3 }
257 2 sdata[0]=0x5A;
258 2
259 2 Sum=0;
260 2 for(i=1;i<FIFO_LEVEL-1;i++)
261 2 {
262 3 Sum += sdata[i];
263 3 }
264 2 sdata[FIFO_LEVEL-1]=Sum & 0x0ff;
265 2 }
266 1 }
267
268 void EXINT0_isr() interrupt 0 using 1
269 {
270 1 SRcpy = REG_IFR;
271 1 if(SRcpy & 0x02)
272 1 {
273 2
274 2 REG_TxIDBuffer0 = 0x88;
275 2 REG_TxIDBuffer1 = 0x55;
276 2 REG_TxIDBuffer2 = 0x55;
277 2 REG_TxIDBuffer3 = 0x55;
278 2 REG_TxIDBuffer4 = 0x50;
279 2
280 2 REG_DataBuffer1 = rdata1[1];
281 2 REG_DataBuffer2 = rdata1[2];
282 2 REG_DataBuffer3 = rdata1[3];
283 2 REG_DataBuffer4 = rdata1[4];
284 2 REG_DataBuffer5 = rdata1[5];
285 2 REG_DataBuffer6 = rdata1[6];
286 2 REG_DataBuffer7 = rdata1[7];
287 2 REG_DataBuffer8 = rdata1[8];
288 2
289 2 REG_CMD = 0x1;//TransmitionRequest
290 2 }
291 1
292 1 if(SRcpy & 0x01)
293 1 {
294 2 canRxID.all.RxID1 = REG_RxIDBuffer1;
295 2 canRxID.all.RxID2 = REG_RxIDBuffer2;
296 2
297 2 canRxID.all.RxID3 = REG_RxIDBuffer3;
298 2 canRxID.all.RxID4 = REG_RxIDBuffer4;
299 2
300 2 sdata[1] = REG_DataBuffer1;
301 2 sdata[2] = REG_DataBuffer2;
302 2 sdata[3] = REG_DataBuffer3;
303 2 sdata[4] = REG_DataBuffer4;
C51 COMPILER V7.50 NCCA_M_01 03/25/2008 13:02:22 PAGE 6
304 2 sdata[5] = REG_DataBuffer5;
305 2 sdata[6] = REG_DataBuffer6;
306 2 sdata[7] = REG_DataBuffer7;
307 2 sdata[8] = REG_DataBuffer8;
308 2
309 2 CANComIndicator=ON;
310 2 REG_CMD = 0x4;
311 2 }
312 1 else
313 1 {
314 2 CANOfflinTime++;
315 2 if(CANOfflinTime==255)
316 2 {
317 3 CANComIndicator=OFF;
318 3 }
319 2 }
320 1 if(SRcpy & 0x08)
321 1 {
322 2 REG_CMD = 0x8;
323 2 }
324 1 }
325
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 519 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 63 1
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 + -