⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vf3em0.lst

📁 安防产品源程序 包括液晶芯片, c51单片机,通讯等 程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -