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

📄 cfctrlv10.lst

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 LST
📖 第 1 页 / 共 3 页
字号:
 520          *******************************************8
 521          */
 522          void receive(void)
 523          {
 524   1      uchar   i;
 525   1      uchar xdata *sp;
 526   1      wdgclr=!wdgclr;
 527   1      switch(XBYTE[0x1002])//命令标志
 528   1              {
 529   2              case 1:rec_sta=1;TR0=0;//进入接收状态
 530   2                      break;  
 531   2              case 2:                 //接收数据
 532   2                      rece_picture(0);
 533   2                      break;  
 534   2              case 0:                 //加载某一帧数据到显存
 535   2                      dis_page=XBYTE[0x1004]*256+XBYTE[0x1003];
 536   2                      load_data(dis_page);
 537   2                      break;  
 538   2              case    3:              //将一扇区数据写闪存
 539   2                      Program_One_Sector(XBYTE[0x1004]*256+XBYTE[0x1003]);
 540   2                      break;
 541   2              case    4:              //测试
 542   2                      test();
 543   2                      break;
 544   2              case 5:         //接收到显存
 545   2                      rece_picture(1);
 546   2              case 6:         //同步信号
 547   2                      dis_page=XBYTE[0x1004]*256+XBYTE[0x1003];
 548   2                      ms=0;
 549   2              break;
 550   2              case 7:                 //进入自动播放
 551   2                      sp=0x1008;
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 10  

 552   2                      for(i=0;i<12;i++)
 553   2                              {
 554   3                              Write24c02(sp,i*8,8);
 555   3                              sp+=8;
 556   3                              }
 557   2                      ms=0;
 558   2                      TR0=1;
 559   2              break;
 560   2              case 8:
 561   2                      Erase_One_Sector (XBYTE[0x1004]*256+XBYTE[0x1003]);
 562   2              break;
 563   2              default:break;
 564   2              }
 565   1      }
 566          //***************************
 567          void delay(uchar sec)
 568          {
 569   1      uint    i;
 570   1      while(sec)
 571   1              {for(i=0;i<50000;i++);sec--;}
 572   1      }
 573          //****************************
 574          void    SoftRST(void)
 575          {
 576   1      Device_Ctrl=0x0c;
 577   1      Device_Ctrl=0x08;
 578   1      delay(10); //delay 0.5s
 579   1      }
 580          //*********************************
 581          bit     Busy(void)
 582          {
 583   1      while(Status&0x80);
 584   1      if(Status&0x01)
 585   1              return(0);
 586   1      else
 587   1              return(1);
 588   1      }
 589          //********************************
 590          void    Enable8bit(void)
 591          {
 592   1      Busy();
 593   1      Features=0x01;
 594   1      Drv_Head=Select;
 595   1      Command=0xef;
 596   1      }
 597          //*********************
 598          void    SetupCard(void)
 599          {
 600   1      Select=0xe0;
 601   1      Socket=0;
 602   1      Enable8bit();
 603   1      }
 604          //*****************************
 605          bit     WaitDRQ(void)
 606          {
 607   1      while(Status&0x80);
 608   1      while(!(bit)(Status&0x04));
 609   1      if(Status&0x01)
 610   1              return(0);//errors
 611   1      else
 612   1              return(1);//CF Card is BUSY=0;DRQ=1;ERR=0;
 613   1      }
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 11  

 614          //****************************
 615          //Set up sector count ,lba addresses command code
 616          //****************************
 617          void    Function(void)
 618          {
 619   1      Busy();
 620   1      Sectr_Cnt=LBA[0];
 621   1      Sectr_No=LBA[1];
 622   1      Cylinder_Low=LBA[2];
 623   1      Cylinder_Hi=LBA[3];
 624   1      Drv_Head=LBA[4];
 625   1      Command=LBA[5];
 626   1      }
 627          //*********************************
 628          void    Read512(uchar xdata *RamBuf)
 629          {
 630   1      uint    i;
 631   1      for(i=0;i<256;i++)
 632   1              {*RamBuf++=EVEN_Data;*RamBuf++=ODD_Data;}
 633   1      }
 634          //*********************************
 635          void    Write512(uchar xdata *RamBuf)
 636          {
 637   1      uint    i;
 638   1      for(i=0;i<256;i++)
 639   1              {EVEN_Data=*RamBuf++;ODD_Data=*RamBuf++;}
 640   1      }
 641          //***********************************
 642          void    Read_Sctr(void)
 643          {
 644   1      LBA[0]=1;
 645   1      LBA[1]=0x0a;
 646   1      LBA[2]=0;
 647   1      LBA[3]=0;
 648   1      LBA[4]=0;
 649   1      LBA[5]=ReadSctr;
 650   1      Function();
 651   1      WaitDRQ();
 652   1      Read512(0x0000);
 653   1      }
 654          //***********************************
 655          void    Write_Sctr(void)
 656          {
 657   1      LBA[0]=1;
 658   1      LBA[1]=0x0a;
 659   1      LBA[2]=0;
 660   1      LBA[3]=0;
 661   1      LBA[4]=0;
 662   1      LBA[5]=WriteSctr;
 663   1      Function();
 664   1      WaitDRQ();
 665   1      Write512(0x0000);
 666   1      }
 667          
 668          //********************************************
 669          //                                       主程序
 670          //********************************************
 671          void main()
 672          {
 673   1      uchar *p;
 674   1      //uchar i,play; //播放列表计数
 675   1      //uint  rplay;  //重复次数
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 12  

 676   1      PS=1;
 677   1      ES=0;
 678   1      SM0=1;
 679   1      SM1=1;
 680   1      T2CON=0X30;
 681   1      RCAP2H=0XFF;
 682   1      TH2=0XFF;
 683   1      RCAP2L=0Xfb;    //9600bps= c4  115200bps =fb 57600= f6 19200 = e2
 684   1      TL2=0Xfb;
 685   1      TR2=1;
 686   1      
 687   1      REN=1;
 688   1      TMOD=0x05;      //定时器0 模式1 外部时钟
 689   1      //TMOD=0x01;    //定时器0 模式1 外部时钟
 690   1      TL0=V_TL0;
 691   1      TH0=V_TH0;
 692   1      //TR0=1;
 693   1      ET0=1;
 694   1      ES=1;
 695   1      EA=1;
 696   1      SM2=1;
 697   1      ADD=(~P1)&0x1f;
 698   1      //ADD=1;
 699   1      frameok=0;
 700   1      bufp=0x1000;    //接收缓冲区指针
 701   1      test();
 702   1      p=&iic_buf[0];
 703   1      Read24c02(p,0,96);
 704   1      //play=0;
 705   1      SoftRST();
 706   1      SetupCard();
 707   1      Write_Sctr();
 708   1      Read_Sctr();
 709   1      
 710   1      while(1)
 711   1              {
 712   2              wdgclr=!wdgclr;
 713   2      
 714   2              if(frameok)
 715   2                      {receive();frameok=0;}
 716   2              }//while(1)
 717   1      }
 718          /************************************************/
 719          //void send_delay( void)
 720          //{
 721          //uint  Count;
 722          //for (Count=0;Count<=200;Count++);
 723          
 724          //}
 725          //*****************************************
 726          //                      串口中断服务程序
 727          //*****************************************
 728          void send(void) interrupt  4 
 729          {
 730   1      uchar d;
 731   1      if(!TI && RI && !frameok)
 732   1      {RI=0;
 733   2      d=SBUF;
 734   2              if(pointer==0)
 735   2              {if(d==ADD)
 736   3                              {subchk=d;*bufp++=d;TB8=1;senden=1;
 737   4                              SBUF=d;while(!TI);TI=0;
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 13  

 738   4                              senden=0;SM2=0;TB8=0;pointer++;
 739   4                              }
 740   3                              
 741   3              }
 742   2              else 
 743   2                      {if(pointer==4104)
 744   3                      {
 745   4                              if(d==subchk)
 746   4                                      {senden=1;SBUF=subchk;while(!TI);senden=0;TI=0;frameok=1;}
 747   4                              else
 748   4                                      {senden=1;SBUF=~subchk;while(!TI);TI=0;senden=0;}
 749   4                              SM2=1;pointer=0;
 750   4                              bufp=0x1000;
 751   4                              }
 752   3              else
 753   3                      {
 754   4                              *bufp++=d;subchk+=d;pointer++;
 755   4                              }
 756   3                      }        
 757   2        }//end if
 758   1      }
 759          //*************************************
 760          void timer1() interrupt  1  
 761          {TL0=V_TL0;
 762   1      TH0=V_TH0;
 763   1      ms++;
 764   1      if(ms>zhepe)
 765   1              {timout=1;
 766   2              ms=0;
 767   2              }
 768   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1716    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27      25
   IDATA SIZE       =     96    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -