📄 can_receive.lst
字号:
205 1 //设置rxsel
206 1 set_bit(NCR1,CCE,1);
207 1 can_write_0(NPCR1,0X03,0);
208 1 PORT_PAGE=0x02;
209 1 P1_ALTSEL0 = 0x02;
210 1 P1_ALTSEL1 = 0x02; //p477,端口选择
211 1 //写面板控制寄存器,静态分配,将报文对象0给节点1
212 1 write_pancom(0x02,0x00,0x02);
213 1 //can_read(MOSTAT0);
214 1
215 1 //测试是否给list1分配报文对象
216 1 /*
217 1 if((CAN_DATA1&0xf0)==0x10)
218 1 {
219 1 PORT_PAGE=0;
220 1 P3_DATA=0x55;
221 1 }
222 1 if(read_bit(0x0104,24)==0)
223 1 {
224 1 PORT_PAGE=0;
225 1 P3_DATA=0XFF;
226 1 }*/
227 1
228 1 //位时序控制,CCE置位
229 1
230 1 can_write(NBTR1,0X3487);
231 1 //设置ncr1(p495),使能can0节点
232 1 can_write(NCR1,0x0e);
233 1 //set_bit(NCR1,CCE,0);
234 1 //侦设置
235 1 set_bit(MOAMR0,MIDE,1);
236 1 set_bit(MOAR0,IDE,0);//标准侦
237 1 return;
238 1 }
239 set_singal(ulong singal)
240 {
241 1 if(read_bit(MOAR0,IDE)!=0)
C51 COMPILER V7.06 CAN_RECEIVE 05/15/2008 00:51:25 PAGE 5
242 1 can_write(MOAR0,(singal|0x20000000));
243 1 else
244 1 can_write(MOAR0,((singal<<18)&0XDFFFFFFF));
245 1 }
246
247 //接受函数
248 void can_receive()
249 {
250 1 #ifdef _can_0_
PORT_PAGE = 0x03;
P1_OD = 0x00;
PORT_PAGE = 0x00;
set_bit(NCR0,CCE,1);
P1_DIR=0xfe;
PORT_PAGE=0x02;
P1_ALTSEL0 = 0x02;
P1_ALTSEL1 = 0x02; //p477,端口选择
//写面板控制寄存器,静态分配
write_pancom(0x02,0x00,0x01);
//位时序控制
can_write(NBTR0,0X3487);
//设置ncr0 (p495)
can_write(NCR0,0X0E);
//侦设置
set_bit(MOAMR0,MIDE,1);
set_bit(MOAR0,IDE,0);//标准侦
#else
270 1 can1_init();
271 1 #endif
272 1 //设置接受滤波信号
273 1 set_singal(0x05);
274 1 //接受验收滤波dir,TXRQ,不发送远程侦
275 1 // set_bit(MOCTR0 ,SETDIR,0);
276 1 set_bit(MOCTR0 ,RESDIR,1);
277 1 //set_bit(MOCTR0 ,SETTXRQ,0);
278 1 set_bit(MOCTR0 ,RESTXRQ,1);
279 1 set_bit(MOCTR0 ,SETMSGVAL,1);
280 1 //set_bit(MOCTR0 ,RESMSGVAL,0);
281 1 set_bit(MOCTR0 ,SETRXEN,1);
282 1 //set_bit(MOCTR0 ,RESRXEN,0);
283 1 //while(read_bit(MOSTAT0,RTSEL)==0);
284 1 while(read_bit(MOSTAT0,NEWDAT)==0);
285 1 //while(read_bit(MOSTAT0,RXUPD)==0);
286 1 while(read_bit(NSR0,RXOK)==0);
287 1 //set_bit(NSR0,RXOK,0);
288 1 // set_bit(MOCTR0 ,SETRTSEL,1);
289 1 //set_bit(MOCTR0 ,RESRTSEL,0);
290 1 //set_bit(MOSTAT0,DIR,0);
291 1 //set_bit(MOSTAT0,TXRQ,0);
292 1
293 1 //while(read_bit(MOSTAT0,RTSEL)==0);//RTSEL位1,选中报文对象进行接收
294 1 //set_bit(MOSTAT0,DIR,1);
295 1 //设置MSGVAL,RXEN
296 1 //set_bit(MOSTAT0,RXEN,1);//接受使能
297 1 //set_bit(MOSTAT0,MSGVAL,1);
298 1 //set_bit(MOSTAT0,DIR,1);
299 1 //读取newdat位
300 1 //while(read_bit(MOSTAT0,NEWDAT)==0);
301 1 //set_bit(MOSTAT0,NEWDAT,0);
302 1 return;
303 1 }
C51 COMPILER V7.06 CAN_RECEIVE 05/15/2008 00:51:25 PAGE 6
304 void delay()
305 {
306 1 int i,j;
307 1 for( i=250;i>0;i--)
308 1 for( j=250;j>0;j--);
309 1 }
310
311 int main()
312 {
313 1
314 1 P3_init1();
315 1 PORT_PAGE = 0x00;
316 1 P3_DATA=0X11;
317 1
318 1 delay();
319 1 can_receive();
320 1 PORT_PAGE = 0x00;
321 1 can_read(MOFCR0);
322 1 P3_DATA=CAN_DATA3;//数据长度
323 1 //P3_DATA=read_datalen();
324 1 while(1);
325 1 return 0;
326 1 }
C51 COMPILER V7.06 CAN_RECEIVE 05/15/2008 00:51:25 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
_set_singal. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
singal . . . . . . . . . . . . . . . AUTO DATA U_LONG 0000H 4
delay. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA INT 0006H 2
j. . . . . . . . . . . . . . . . . . * REG * DATA INT 0004H 2
_can_read. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
CAN_ADCON. . . . . . . . . . . . . . . SFR DATA U_CHAR 00D8H 1
AUAD . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DBH 1
_read_bit. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
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 0000H -----
addr . . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2
value. . . . . . . . . . . . . . . . AUTO DATA U_LONG 0002H 4
main . . . . . . . . . . . . . . . . . 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
P3_PUDSEL. . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
RWEN . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D8H 1
_can_res . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
value. . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
_can_set . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
value. . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
P1_DIR . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0091H 1
P3_DIR . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B1H 1
PORT_PAGE. . . . . . . . . . . . . . . SFR DATA U_CHAR 00B2H 1
P3_init1 . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_set_bit . . . . . . . . . . . . . . . PUBLIC CODE PROC 0004H -----
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
P3_ALTSEL0 . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
read_datalen . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
P3_ALTSEL1 . . . . . . . . . . . . . . SFR DATA U_CHAR 00B1H 1
P3_PUDEN . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B1H 1
BSY. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D9H 1
C51 COMPILER V7.06 CAN_RECEIVE 05/15/2008 00:51:25 PAGE 8
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
_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
P3_OD. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
can_receive. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
can1_init. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1004 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 15
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 + -