📄 mainn.lst
字号:
249 1 SendBuf[0]=(BaseID>>3) &0XFF;
250 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
251 1 SendBuf[2]=BITFUN ;
252 1 SendBuf[3]=((((FormerFloorFireBaseAdd )<<4)+floor)&0xFF);;
253 1 SendBuf[4]=(((((FormerFloorFireBaseAdd )<<4)+floor)>>8)&0xFF);
254 1 SendBuf[5]=0x01;
255 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
256 1 BCAN_DATA_WRITE(SendBuf);
257 1 BCAN_CMD_PRG(TR_CMD);
258 1 }
259
260 void LockLadPreSend( void )
261 {
262 1 SendBuf[0]=(BaseID>>3) &0XFF;
263 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
264 1 SendBuf[2]=BITFUN ;
265 1 SendBuf[3]=((((FormerFloorLockBaseAdd)<<4)+floor)&0xFF);
266 1 SendBuf[4]=(((((FormerFloorLockBaseAdd)<<4)+floor)>>8)&0xFF);
267 1 SendBuf[5]=0x01;
268 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
269 1 BCAN_DATA_WRITE(SendBuf);
270 1 BCAN_CMD_PRG(TR_CMD);
271 1 }
272
273 void UpRunPreSend( void )
274 { SendBuf[0]=(BaseID>>3) &0XFF;
275 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
276 1 SendBuf[2]=BITFUN ;
277 1 SendBuf[3]=((((FormerFloorUpBaseAdd)<<4)+floor)&0xFF);
278 1 SendBuf[4]=(((((FormerFloorUpBaseAdd)<<4)+floor)>>8)&0xFF);
279 1 SendBuf[5]=0x01;
280 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
281 1 BCAN_DATA_WRITE(SendBuf);
282 1 BCAN_CMD_PRG(TR_CMD);
283 1 }
284
285 void DownRunPreSend( void )
286 { SendBuf[0]=(BaseID>>3) &0XFF;
287 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
288 1 SendBuf[2]=BITFUN ;
289 1 SendBuf[3]=((((FormerFloorDownBaseAdd )<<4)+floor)&0xFF);
290 1 SendBuf[4]=(((((FormerFloorDownBaseAdd )<<4)+floor)>>8)&0xFF);
291 1 SendBuf[5]=0x01;
292 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
293 1 BCAN_DATA_WRITE(SendBuf);
294 1 BCAN_CMD_PRG(TR_CMD);
295 1 }
296
297 void UpRunRelSend()
298 { //P3_4=0;
299 1 SendBuf[0]=(BaseID>>3) &0XFF;
300 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
301 1 SendBuf[2]=BITFUN ;
302 1 SendBuf[3]=((((FormerFloorUpBaseAdd)<<4)+floor)&0xFF);
303 1 SendBuf[4]=(((((FormerFloorUpBaseAdd)<<4)+floor)>>8)&0xFF);
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 6
304 1 SendBuf[5]=0x00;
305 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
306 1 BCAN_DATA_WRITE(SendBuf);
307 1 BCAN_CMD_PRG(TR_CMD);
308 1 }
309
310 void DownRunRelSend()
311 {
312 1 SendBuf[0]=(BaseID>>3) &0XFF;
313 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
314 1 SendBuf[2]=BITFUN;
315 1 SendBuf[3]=((((FormerFloorDownBaseAdd )<<4)+floor)&0xFF);
316 1 SendBuf[4]=(((((FormerFloorDownBaseAdd )<<4)+floor)>>8)&0xFF);
317 1 SendBuf[5]=0x00;
318 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
319 1 BCAN_DATA_WRITE(SendBuf);
320 1 BCAN_CMD_PRG(TR_CMD);
321 1 }
322
323 void LockLadRelSend()
324 {
325 1 SendBuf[0]=(BaseID>>3) &0XFF;
326 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
327 1 SendBuf[2]=BITFUN;
328 1 SendBuf[3]=((((FormerFloorLockBaseAdd)<<4)+floor)&0xFF);
329 1 SendBuf[4]=(((((FormerFloorLockBaseAdd)<<4)+floor)>>8)&0xFF);
330 1 SendBuf[5]=0x00;
331 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
332 1 BCAN_DATA_WRITE(SendBuf);
333 1 BCAN_CMD_PRG(TR_CMD);
334 1 }
335
336 void FireKeyRelSend()
337 {
338 1 SendBuf[0]=(BaseID>>3) &0XFF;
339 1 SendBuf[1]=((BaseID&0x07)<<5)|DLC;
340 1 SendBuf[2]=BITFUN;
341 1 SendBuf[3]=((((FormerFloorFireBaseAdd)<<4)+floor)&0xFF);
342 1 SendBuf[4]=(((((FormerFloorFireBaseAdd)<<4)+floor)>>8)&0xFF);
343 1 SendBuf[5]=0x00;
344 1 // (short)Buf[6]=CRC( &Buf[2], &Buf[5] );
345 1 BCAN_DATA_WRITE(SendBuf);
346 1 BCAN_CMD_PRG(TR_CMD);
347 1 }
348
349 InitCPU()
350 {
351 1
352 1 IT0 =1;
353 1 EX0 =1;
354 1 PX0 =1;
355 1 IE0 =0;
356 1
357 1 TMOD=0X01;
358 1 TH0=0XF6;
359 1 TL0=0X3C;
360 1 EA=1;
361 1 ET0=1;
362 1 TR0=1;
363 1 }
364
365 void T0_Val( void ) interrupt 1 using 2
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 7
366 {
367 1 int i;
368 1 for(i=0;i<4;i++)
369 1 {
370 2 if( (STimerState&(1<<i)) == (1<<i) )
371 2 STimerValue[i]++;
372 2
373 2 if( (STimerValue[i]) == 5 )
374 2 {
375 3 InputChanged |= (1<<i);
376 3 STimerState = STimerState&(~(1<<i));
377 3 STimerValue[i] = 0;
378 3 if((InputTemp&(1<<i))==0)
379 3 InputState &= ~(1<<i);
380 3 else
381 3 InputState |= (1<<i);
382 3 }
383 2 }
384 1 }
385
386 void CAN(void) interrupt 0 using 1
387 {
388 1 P3_4=0;
389 1 if((REG_INTERRUPT&0x01) == 0x01) //接收到数据
390 1 CANDataReceived=TRUE;
391 1
392 1 }
393 main()
394 {
395 1 unsigned char i;
396 1 Config_SJA(); //CAN初始化,SJA1000配置
397 1 InitCPU(); //CPU初始化
398 1
399 1 for(;;)
400 1 {
401 2
402 2 for( i=0; i<4; i++ ) //对4个输入做软件滤波
403 2 {
404 3 if( (InputTemp&(1<<i)) != (P1&(1<<i)) ) //是否有输入信号
405 3 { //P3_4=0;
406 4 if((P1&(1<<i))==0)
407 4 InputTemp &= ~(1<<i);
408 4 else
409 4 InputTemp |= 1<<i;
410 4
411 4 if((STimerState&(1<<i)) == 0) //软定时器未开启
412 4 STimerState = STimerState|(1<<i);
413 4 else
414 4 {
415 5 STimerState = STimerState&(~(1<<i));
416 5 STimerValue[i] = 0;
417 5 }
418 4 }
419 3 }
420 2
421 2 for( i=0; i<4; i++ ) //对4个输入做处理
422 2 {
423 3 if( (InputChanged&(1<<i)) != 0 ) //信号有改变
424 3 { //P3_4=0;
425 4 InputChanged &= ~(1<<i);
426 4 if( (InputState&(1<<i)) == OFF ) //按钮被释放
427 4 {
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 8
428 5 switch(i) //输入数据处理,发送数据
429 5 {
430 6 case 0:
431 6 //P3_4=0;
432 6 UpRunRelSend();
433 6 break;
434 6 case 1:
435 6 DownRunRelSend();
436 6 break;
437 6 case 2:
438 6 LockLadRelSend();
439 6 break;
440 6 case 3:
441 6 FireKeyRelSend(); //对消防输入信号的触发和撤销做处理
442 6 break;
443 6 default:
444 6 break;
445 6 }
446 5 }
447 4 else //按钮按下
448 4 {
449 5 switch(i) //输入数据处理,发送数据
450 5 {
451 6 case 0:
452 6 UpRunPreSend();
453 6 break;
454 6 case 1:
455 6 DownRunPreSend();
456 6 break;
457 6 case 2:
458 6 LockLadPreSend();
459 6 break;
460 6 case 3:
461 6 FireKeyPreSend(); //对消防输入信号的触发和撤销做处理
462 6 break;
463 6 default:
464 6 break;
465 6 }
466 5 }
467 4 }
468 3 }
469 2
470 2 if( CANDataReceived == TRUE ) //有信号接收
471 2 {
472 3 CanRcv_Prg(); //接收信号处理,如有需要则更新数码管显示
473 3 CANDataReceived = FALSE;
474 3 }
475 2 //数码管显示,按列依次显示,每次显示一列
476 2 if(scanRow==5)
477 2 scanRow=0;
478 2
479 2 *reg1=~(1<<scanRow);
480 2 *reg2=DirectionBuf[scanRow];
481 2 *reg3=HighBuf[scanRow];
482 2 *reg4=LowBuf[scanRow];
483 2 scanRow++;
484 2 for(i=0;i<25;i++);
485 2 if(P3_4==0)
486 2 P3_5=1;
487 2 else
488 2 P3_5=0;
489 2 }//FOR
C51 COMPILER V8.02 MAINN 07/05/2007 15:35:46 PAGE 9
490 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1206 ----
CONSTANT SIZE = 290 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 54 2
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -