📄 can.lst
字号:
212 1 P1_OD = 0x00;
213 1 PORT_PAGE = 0x00;
214 1 //1.3out,1.4in
215 1 P1_DIR=0x08;
216 1
217 1 //设置rxsel
218 1 set_bit(NCR1,CCE,1);
219 1 can_write_0(NPCR1,0X03,0);
220 1 PORT_PAGE=0x02;
221 1 P1_ALTSEL0 = 0x02;
222 1 P1_ALTSEL1 = 0x02; //p477,端口选择
223 1 //写面板控制寄存器,静态分配,将报文对象0给节点1
224 1 write_pancom(0x02,0x00,0x02);
225 1 //位时序控制,CCE置位
226 1
227 1 can_write(NBTR1,0X3487);
228 1 //设置ncr1(p495),使能can1节点
229 1 can_write(NCR1,0x0e);
230 1 //set_bit(NCR1,CCE,0);
231 1 return;
232 1 }
233 //can初始化
234 /*********选择节点0 ,直接使用复位值(由npcr0控制)
235 p1.0(in) p1.1(out)
236 ******************************/
237 void can_init()
238 {
239 1 #ifdef _can_0_
//漏极开路选择
PORT_PAGE = 0x03;
C51 COMPILER V7.09 CAN 05/15/2008 08:28:24 PAGE 5
P1_OD = 0x00;
PORT_PAGE = 0x00;
P1_DIR=0xfe;
//设置rxsel
set_bit(NCR0,CCE,1);
can_write_0(NPCR0,0X00,0);
PORT_PAGE=0x02;
P1_ALTSEL0 = 0x02;
P1_ALTSEL1 = 0x02; //p477,端口选择
//写面板控制寄存器,静态分配,将报文对象0给节点1
write_pancom(0x02,0x00,0x01);
//测试是否给list1分配报文对象
/*
can_read(MOSTAT0);
if((CAN_DATA1&0xf0)==0x10)
{
PORT_PAGE=0;
P3_DATA=0x55;
}
if(read_bit(0x0104,24)==0)
{
PORT_PAGE=0;
P3_DATA=0XFF;
}*/
//位时序控制,CCE置位
can_write(NBTR0,0X3487);
//设置ncr0 (p495),使能can0节点
can_write(0x0200,0x0e);
//set_bit(NCR0,CCE,0);
//can_write(NBTR0,0X2240);
#else
277 1 can1_init();
278 1 #endif
279 1 //发送数据写入
280 1 a.leibie=0;
281 1 a.signal=0x05;
282 1 a.length=2;
283 1 a.data0[0]=0x01;
284 1 a.data0[1]=0x02;
285 1 write_send_data(a);
286 1
287 1 //报文发送请求,数据侦
288 1 set_bit(MOCTR0 ,SETDIR,1);
289 1 //set_bit(MOCTR0 ,RESDIR,1);
290 1 //set_bit(MOCTR0 ,SETMSGVAL,1);
291 1 //set_bit(MOCTR0 ,RESNEWDAT,0);
292 1 set_bit(MOCTR0 ,SETNEWDAT,1);
293 1 set_bit(MOCTR0 ,SETMSGVAL,1);
294 1 // set_bit(MOCTR0 ,RESMSGVAL,0);
295 1 set_bit(MOCTR0 ,SETTXEN0,1);
296 1 //set_bit(MOCTR0 ,RESTXEN0,0);
297 1 set_bit(MOCTR0 ,SETTXEN1,1);
298 1 //set_bit(MOCTR0 ,RESTXEN1,0);
299 1 set_bit(MOCTR0 ,SETTXRQ,1);
300 1 //set_bit(MOCTR0 ,RESTXRQ,0);
301 1 //set_bit(NSR0,RXOK,1);
302 1
303 1 //can_write(0x0200,0x004e);
C51 COMPILER V7.09 CAN 05/15/2008 08:28:24 PAGE 6
304 1 // PORT_PAGE=0;
305 1 // P3_DATA=0X01;
306 1 //while(read_bit(MOSTAT0,RTSEL)==0);
307 1 if(read_bit(MOSTAT0,NEWDAT)!=0)
308 1 {
309 2 PORT_PAGE=0;
310 2 P3_DATA=0X02;}
311 1 //while(read_bit(MOSTAT0,RTSEL)==0);
312 1 while(read_bit(MOSTAT0,NEWDAT)!=0);
313 1 while(read_bit(NSR0,TXOK)==0);
314 1 //set_bit(NSR0,TXOK,0);
315 1
316 1
317 1
318 1 //set_bit(MOSTAT0,MSGVAL,1);
319 1 //set_bit(MOSTAT0,DIR,1);
320 1 //set_bit(MOSTAT0,TXEN0,1);
321 1 //set_bit(MOSTAT0,TXEN1,1);
322 1 //set_bit(MOSTAT0,TXRQ,1);
323 1
324 1 //set_bit(MOSTAT0,RTSEL,1);
325 1 //while(read_bit(MOSTAT0,RTSEL)==0);//RTSEL位1,选中报文对象进行接收
326 1 // set_bit(MOSTAT0,NEWDAT,1);
327 1 //报文对象发送
328 1 // while(read_bit(MOSTAT0,NEWDAT)==1);
329 1
330 1 }
331
332
333 void main()
334 {
335 1
336 1 P3_init();
337 1 can_init();
338 1 PORT_PAGE=0X00;
339 1 P3_DATA=0X21;
340 1 while(1);
341 1 }
C51 COMPILER V7.09 CAN 05/15/2008 08:28:24 PAGE 7
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P3_DATA. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
CAN_DATA0. . . . . . . . . . . . . . . SFR DATA U_CHAR 00DBH 1
CAN_DATA1. . . . . . . . . . . . . . . SFR DATA U_CHAR 00DCH 1
CAN_DATA2. . . . . . . . . . . . . . . SFR DATA U_CHAR 00DDH 1
CAN_ADH. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DAH 1
CAN_DATA3. . . . . . . . . . . . . . . SFR DATA U_CHAR 00DEH 1
CAN_ADL. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D9H 1
V0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DCH 1
V1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DDH 1
V2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DEH 1
V3 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DFH 1
_can_read. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
P3_init. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
CAN_ADCON. . . . . . . . . . . . . . . SFR DATA U_CHAR 00D8H 1
_read_bit. . . . . . . . . . . . . . . PUBLIC CODE PROC 0006H -----
addr . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
bitnum . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
_can_write . . . . . . . . . . . . . . PUBLIC CODE PROC 0006H -----
addr . . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2
value. . . . . . . . . . . . . . . . AUTO DATA U_LONG 0002H 4
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
can_data . . . . . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 14
leibie . . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
signal . . . . . . . . . . . . . . . MEMBER ----- U_LONG 0001H 4
length . . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
data0. . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0006H 8
receive_message. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_can_write_0 . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
value. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
reg. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
write_send_data. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
data1. . . . . . . . . . . . . . . . AUTO DATA STRUCT 0000H 14
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
k. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 000EH 1
p. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
can_struct . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 14
leibie . . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
signal . . . . . . . . . . . . . . . MEMBER ----- U_LONG 0001H 4
length . . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
data0. . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0006H 8
RWEN . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D8H 1
P1_DIR . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0091H 1
PORT_PAGE. . . . . . . . . . . . . . . SFR DATA U_CHAR 00B2H 1
can_init . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_set_bit . . . . . . . . . . . . . . . PUBLIC CODE PROC 0006H -----
addr . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
bitnum . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
value. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
P1_ALTSEL0 . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P1_ALTSEL1 . . . . . . . . . . . . . . SFR DATA U_CHAR 0091H 1
a. . . . . . . . . . . . . . . . . . . PUBLIC DATA STRUCT 0000H 14
C51 COMPILER V7.09 CAN 05/15/2008 08:28:24 PAGE 8
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
b. . . . . . . . . . . . . . . . . . . PUBLIC DATA STRUCT 000EH 14
BSY. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D9H 1
_write_pancom. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
pancmd . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
panar1 . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
panar2 . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
P1_OD. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
can1_init. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 972 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 28 26
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 + -