📄 vf3em0.lst
字号:
305 1 {
306 2 wr24c256(0,recbuf[5]);
307 2 }
308 1 else if ( addr==8 )
309 1 {
310 2 clrRecord();
311 2 }
312 1 else;
313 1 sendMsg();
314 1 }
315
316 void sendRecord()
317 {
318 1 uint addr;
319 1 uchar len;
320 1 uchar i,Check,byte;
321 1
322 1 addr=recbuf[3]*256+recbuf[4];
323 1 addr=(addr+0x100);
324 1 len=recbuf[5];
325 1 Check=0xeb+0x3a+len;
326 1 sendChar(0xeb); sendChar(0x3a); sendChar(len);
327 1 for ( i=0;i<len;i++ )
328 1 {
329 2 byte=rd24c256(addr+i);
330 2 sendChar(byte);
331 2 Check+=byte;
332 2 }
333 1 sendChar(Check);
334 1 }
335
336 void recRecord()
337 {
338 1 uint addr;
339 1 uchar len,i,Check,byte;
340 1
341 1 addr=recbuf[3]*256+recbuf[4];
342 1 addr=addr*8+0x100;
343 1 len =recbuf[5];
344 1 for ( i=0;i<len;i++ ) wr24c256(addr+i,recbuf[6+i]);
345 1 sendMsg();
346 1 }
347
348 void saveRecord()
349 {
350 1 ulong tmp;
351 1 uchar i,j;
352 1
353 1 tmp=(ulong)(RecordNum-1)*8+0x100;
354 1 for ( i=1;i<4;i++ ) wr24c256(tmp+i+4,RFCardID[1+i]);
355 1
356 1 getClock();
357 1 wr24c256(tmp,Clock.Year);
358 1
359 1 RFCardID[0]=Clock.MonthCentury&0x1f;
360 1 RFCardID[1]=Clock.Day;
361 1 RFCardID[2]=Clock.Hour;
362 1 RFCardID[3]=Clock.Min;
363 1
364 1 RFCardID[0]*=8;
365 1 i=Clock.Day/8;
C51 COMPILER V3.20, SN-50203013 VF3EM0 09/14/06 14:54:47 PAGE 7
366 1 RFCardID[0]+=i;
367 1
368 1 RFCardID[1]=Clock.Day*32;
369 1 i=Clock.Hour/2;
370 1 RFCardID[1]+=i;
371 1
372 1 RFCardID[2]=Clock.Hour*128+Clock.Min;
373 1
374 1 for ( i=0;i<3;i++ ) wr24c256(tmp+1+i,RFCardID[i]);
375 1 wr24c256(tmp+4,00);
376 1 }
377
378 void clrRecord(void)
379 {
380 1 uchar command,i;
381 1 sendChar(0);
382 1
383 1 i=rd24c256(0x28); wr24c256(0x2a,i); wr24c256(0x28,0);
384 1 i=rd24c256(0x29); wr24c256(0x2b,i); wr24c256(0x29,0);
385 1 i=rdPCF8563Byte(0xb)&0x3f; wr24c256(0x2c,i); wrPCF8563Byte(0xb,0x80);
386 1 RecordNum = 0;
387 1 music();
388 1 }
389
390 bit recMsg()
391 {
392 1 uchar CheckNum;
393 1 uchar i;
394 1 uchar time;
395 1
396 1 RecLen=0;
397 1
398 1 TR0=0; TF0=0; time =0; TL0=0xf0;TH0=0xd8; TR0=0x1;
399 1 while ( time<50 ) /* 等待10ms * 50 */
400 1 {
401 2 if ( RI )
402 2 {
403 3 RI=0; REN=1;
404 3 time=0;
405 3 recbuf[RecLen] = SBUF; RecLen++;
406 3 if ( RecLen >= 2 )
407 3 {
408 4 if ( recbuf[0] != 0xeb ) return 0; else;
409 4 if ( recbuf[2] >= 17 ) return 0; else;
410 4
411 4 if ( recbuf[2] == RecLen-4 ) /*接收完成计算校验和*/
412 4 {
413 5 CheckNum = 0;
414 5 for ( i=0; i<RecLen-1; i++ ) CheckNum+=recbuf[i];
415 5 if ( CheckNum == recbuf[RecLen-1] ) return 1; /*接收成功*/
416 5 else return 0; /* 校验和错 */
417 5 }
418 4 else; /*接收数据长度不够*/
419 4 }
420 3 else if(RecLen==1 && recbuf[0]==0x00)
421 3 {
422 4 sendChar(0xaa);
423 4 RecLen=0; /*收到的是唤醒*/
424 4 }
425 3 else if(RecLen==1 && recbuf[0]==0xaa) RecLen=0;/*收到的是唤醒应答的回送*/
426 3 else;
427 3 }
C51 COMPILER V3.20, SN-50203013 VF3EM0 09/14/06 14:54:47 PAGE 8
428 2 else if ( TF0 ) { TR0=0; TL0=0xf0;TH0=0xd8; TR0=0x1; TF0=0; time++;}
429 2 else;
430 2 }
431 1 return 0;
432 1 }
433 /*
void addRecord()
{
uchar i,hh,ll,ss,mm;
bit flag;
RunLed=0;
readRecordNum();
RecordNum++;
dispIntNum(RecordNum);
saveRecord();
RunLed=1;
music();
delayN10ms(20);
RunLed=0;
dispByteHex(RFCardID[3],RFCardID[4]); delayN10ms(10);
RunLed=1;
delayN10ms(10);
RunLed=0;
if (RecordNum>=MaxRecordSum)
{
for ( i=0;i<5;i++ )
{
RunLed=0;delayN10ms(20);
RunLed=1;delayN10ms(20);
}
powerDown();
}
else;
hh=((RecordNum/64)/256);
mm=((RecordNum/64)%256);
ll=RecordNum%64;
wrPCF8563Byte(0xb,ll);
if ( ll==0 )
{
wr24c256(0x28,hh);
wr24c256(0x29,mm);
}
else;
RunLed=1;
powerDown();
}*/
481
482 bit CommMark=0; /*0:没有通讯信号*/
483
484 void int0Route() interrupt 0 using 1
485 {
486 1 CommMark=1;
487 1 EX0=0;
488 1 }
489
C51 COMPILER V3.20, SN-50203013 VF3EM0 09/14/06 14:54:47 PAGE 9
490 void commHandle()
491 {
492 1 uchar i;
493 1
494 1 for (i=0;i<0xff;i++); /*等待接收首个字节的时间*/
495 1 for (i=0;i<0xff;i++); /*等待接收首个字节的时间*/
496 1 for (i=0;i<0xff;i++); /*等待接收首个字节的时间*/
497 1
498 1 sendChar(0xaa);
499 1
500 1 for ( i=0;i<36;i++ )
501 1 {
502 2 if ( recMsg() ) /* 接收到完整的消息 每次接收等待0.5秒 */
503 2 {
504 3 switch(recbuf[1])
505 3 {
506 4 case 0x21: testLed(); break;
507 4 case 0x20: testBell(); break;
508 4 case 0x31: sendClock(); break; /* 发送本笔时钟 */
509 4 case 0x33: pcSetClock(); break;
510 4 case 0x35: rdSysInfo(); break;
511 4 case 0x37: wrSysInfo(); break;
512 4 case 0x39: sendRecord(); break;
513 4 case 0x3b: recRecord(); break;
514 4 default:RecLen=0;
515 4 }
516 3 RecLen=0; /* 清除接收区 */
517 3 i=0;
518 3 }
519 2 else;
520 2 }
521 1 powerDown();
522 1 }
523
524 uchar TT1;
525 void timer1() interrupt 3 using 2 // 50ms interrupt
526 { /* WorkTime 每500ms 减一 */
527 1 TH1=0x4c;
528 1 if (WorkTime==0)
529 1 {
530 2 Shake=0;
531 2 PowerEN=1;
532 2 PCON=0x2;
533 2 }
534 1 else;
535 1 if ( TT1==0 ) { TT1=9; WorkTime--; }
536 1 else TT1--;
537 1 }
538
539 void dispClock()
540 {
541 1 getClock();
542 1
543 1 dispChar(0,Clock.Hour/16);
544 1 DispBuff[0]|=0x10;
545 1 dispChar(1,Clock.Hour%16);
546 1 dispChar(2,Clock.Min/16); dispChar(3,Clock.Min%16);
547 1 wrLcdDisp();
548 1 }
549
550 void main()
551 {
C51 COMPILER V3.20, SN-50203013 VF3EM0 09/14/06 14:54:47 PAGE 10
552 1 uchar StartTime;
553 1 uchar i;
554 1 uint ii;
555 1
556 1 Shake=0;
557 1 PowerEN=0; /*保持电压的供给*/
558 1
559 1 initDisp();
560 1 clrDisp();
561 1
562 1 TMOD=0x11; TR1=1; ET1=1;
563 1 IT0=0; //low level triggered --Wakeup
564 1 EX0=1; //INT0 enable;
565 1
566 1 RI=0;
567 1 WorkTime=10; /*缺省工作=50ms*10*10 大约5秒*/
568 1
569 1 init24c256();
570 1 initPCF8563();
571 1 dispClock();
572 1 EA=1;
573 1
574 1 while (i<10)
575 1 {
576 2 uchar mm;
577 2
578 2 SHD=0;
579 2 if(rfEM()==1)
580 2 {
581 3 SHD=1;
582 3 music();
583 3
584 3 powerDown();
585 3 }
586 2 else ;
587 2 SHD=1;
588 2 if(i==3) powerDown();
589 2 for (ii=0;ii<0x8bfe;ii++);
590 2 WorkTime=4;
591 2 i++;
592 2
593 2 if ( CommMark )
594 2 {
595 3 initComm();
596 3 commHandle();
597 3 powerDown();
598 3 }
599 2 else;
600 2 }
601 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1949 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 29 34
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILER V3.20, SN-50203013 VF3EM0 09/14/06 14:54:47 PAGE 11
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -