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

📄 tks.c

📁 多路数据采集 +lcd +菜单功能显示 max485通信
💻 C
📖 第 1 页 / 共 2 页
字号:
        check();

     }



//*************************************************************************************************
   /*  for(ji=0;ji<10;ji++)
     for(ki=0;ki<4;ki++)
     {
        if(point1==32768)
          point1=0x0010;
        eepwrite(point1/256,point1%256,addate[ji][ki].adh);
        check();
        point1++;
        if(point1==32768)
          point1=0x0010;
        eepwrite(point1/256,point1%256,addate[ji][ki].adl);
        point1++;
        if(point1==32768)
          point1=0x0010;
        eepwrite(point1/256,point1%256,addate[ji][ki].adig);

     }   */


}

void time0() interrupt 1
{
      uchar y;
      TR0=1;
      TL0=0x00;
      TH0=0x4c;

      count++;
      if(count==19)
      { ms50=1;        // 1s 时间到了 开始发送
        count=0;       //恢复准备
        ms2=1;         //还不知道用来干什么
        //address=0xa0;  //从0号开始
        //address=what[0];//其实只是其中的高三位  编号作为子机地址 若是不行改成0
        address=0;
      }
      if(ms50==1)
      {
         for(y=0;y<2;y++)
           { se=0;
             qi=0; //发送前把接收的位置清零 从高位其接收存到addate中
             send(address); //收回来的是哪一路 共有四路模拟量
             delay6ms(10);         //延时需要7MS 发送1 接收3个 用了4 在给出一半的冗余时间
             if(se==1)
               {  se=0;
                  break ;
               }
            }
        // ccount1++;      //暂时还用不上 不知道在哪里用了??写得太多了
         address++;
         if((address&0x0f==4))
          // address=what[0];
          {
            address=0;
            ms50=0;
            adp1++;
            adp2++;
            adp1=adp1%10;  //十路中的循环
            adp2=adp2%10;//十路循环
          }

      }



}

void ext1() interrupt 2
{
}

void time1() interrupt 3
{
}

void serial() interrupt 4   //串行中断 接收数据
{

//读回来的数据还没有保存到eeprom
    uchar ud=0;
    if(TI==1)
       ;
    else
    { if(RI==1)
       {
         if(ET0==0)
         {
            what[ud]=SBUF;
            ud++;
            what[8]=ud;
            ms1=1;
         }
         else
          {
             

             switch(qi)
             {
               case 0:
                    addate[adp2][address].adh=SBUF;   //这里应该与上一个数
                   
                    se=0;
                    break;
               case 1:
                    addate[adp2][address].adl=SBUF;
                    se=0;
                
                    break;
               case 2:
                    addate[adp2][address].adig=SBUF;
                    se=0;
                   
                    break;
               case 3:
                    ud=SBUF;
                    if(addate[adp2][address].adh+addate[adp2][address].adl+addate[adp2][address].adig==ud)
                    {
                       se=1;
                    }
                  /* if(addate[adp2][address].adh+addate[adp2][address].adl==ud)
                    {
                       se=1;
                    }
                  */
                    qi=0;

                    //**********************读回来的数据存入eeprom中***********************
                    eepwrite(point2/256,point2%256,addate[adp2][address].adh);
                    check();

                    point2=point2+1;
                    if(point2==0x7fef)
                      point2=0;

                    eepwrite(point2/256,point2%256,addate[adp2][address].adl);
                    check();

                    point2=point2+1;
                    if(point2==0x7fef)
                      point2=0;

                    eepwrite(point2/256,point2%256,addate[adp2][address].adig);
                    check();
                    point2=point2+1;
                    if(point2==0x7fef)
                      point2=0;
                    break;
             }

       qi++;
      RI=0;



        }






       }
    }

}


void search(void)
{    uchar kk,qt;
     qt=0xa0;
     EX0=0;
     EX1=0;
     ET0=0;
     ET1=0;
     for(kk=0;kk<8;kk++)
     {
         send(qt);
         delay3ms(4); //3.2ms
         qt++;
     }
     //EX0=1;
     IE0=0;
     ET0=1;        //开中断
     TR0=1;
}





void main(void)
{    uchar i,j,led,mul,m;




//***********************************************************************************//
    {     //一般的初始化
      SP=0x60;
      con=0;         //  开液晶屏
      cs=1;          //  iic eeprom 有效
      delay(100);
      disinit();     //液晶显示初始化
      adp2=9;  //指向最后一点数据
      adp1=0;  //指向第一点数据
     }      // 一般的初始化结束

    //***************************若是可调则先调用search()子函数***********************
      //search();




//*************************************************************************************//






//********************************************复位时取出地址指针*******************************//
  /*   eepwrite(0x7f,0xff,0x00);       //预先写入的数据
     check();
     eepwrite(0x7f,0xfe,0x00);
     check();
     eepwrite(0x7f,0xfd,0x00);
     check();
     eepwrite(0x7f,0xfc,0x78);
     check();                     //刚开始时写入7fff的地址值是0也就是说从0开始写入数据

     eepwrite(0x7f,0xfa,0);
     check();
   */
     point1=eepread(0x7f,0xff);
     point1<<=8;
     point1=point1|eepread(0x7f,0xfe);
     point2=eepread(0x7f,0xfd);
     point2<<=8;
     point2=point2|eepread(0x7f,0xfc);

     which=eepread(0x7f,0xfb); //读出上次掉电前转换的是哪一路
     select=eepread(0x7f,0xfa);//读出上次掉电前是什么模式

     move=eepread(0x7f,0xf9);

     pause=eepread(0x7f,0xf8);  //初始值可以写进去


 //掉电前系统正在做什么事情 是否要接着上次的工作????? 比较复杂



//****************************************读出数据最后一次写入的10点数据***********************************//
       //point2=point1;
       for(i=0;i<10;i++)
       for(j=0;j<4;j++)
          { // addate[10][4];
            if(point1==0x7fef)
            point1=0x00;
            addate[i][j].adh=eepread(point1/256,point1%256);
            point1++;
            if(point1==0x7fef)
            point1=0x0000;
            addate[i][j].adl=eepread(point1/256,point1%256);
            point1++;
            if(point1==0x7fef)
            point1=0x0000;
            addate[i][j].adig=eepread(point1/256,point1%256);
            point1++ ;
          }


           maxinit();//总线485通信初始化
           select=0;
           pause=0;
           while(1)
           {   //which
              if(select==1)
               {




                  if(ms2==1)
                   {
                     ms2=0;
                     m=(mul+adp1)%10;
                   //z中断应不应该关掉呢??  不能关的
                    for(i=0;i<4;i++)
                        {
                          switch(i)
                          {
                            case 0: write(0x80,0);

                                   // write(0x30+i,1);
                                    break;
                            case 1: write(0x90,0);
                                   // write(0x30+i,1);
                                    break;
                            case 2: write(0x88,0);
                                  //  write(0x30+i,1);
                                    break;
                            case 3: write(0x98,0);
                                  //  write(0x30+i,1);
                                    break;
                          }
                          //write(0x80+i*8,0);
                          write(0x30+i,1);
                          write(':',1);
                          write(' ',1);
                          write(' ',1);
                          write(0x30+addate[m][i].adh/10,1);
                          write(0x30+addate[m][i].adh%10,1);
                          write(0x30+addate[m][i].adl/10,1);
                          write(0x30+addate[m][i].adl%10,1);
                          write(' ',1);
                          write(' ',1);
                          write(0x30+addate[m][i].adig/10,1);
                          write(0x30+addate[m][i].adig%10,1);


                      }  //for

                   }     //ms2

                   led=key();
                   switch(led)
                     {
                      case 0:
                      case 1:
                      case 2:
                      case 3:
                      case 4:
                      case 5:
                      case 6:
                      case 7:
                      case 8:
                      case 9: mul=led; break;
                      case 10:select=0;break;
                      case 11:pause=!pause;break;
                     }

               } //select
              else
               {


                  if(pause==1)
                   {

                      led=key();
                     switch(led)
                     {
                      case 0:
                      case 1:
                      case 2:
                      case 3:
                      case 4:
                      case 5:
                      case 6:
                      case 7:
                      case 8:
                      case 9: mul=led; break;
                      case 10:select=1;break;
                      case 11:pause=!pause;break;
                     }
                      continue   ;
                   }
                  else
                   {
                     if(ms2)
                      { ms2=0;
                        for(i=0;i<4;i++)
                         {
                           switch(i)
                           {
                             case 0: write(0x80,0);

                                   // write(0x30+i,1);
                                    break;
                             case 1: write(0x90,0);
                                   // write(0x30+i,1);
                                    break;
                             case 2: write(0x88,0);
                                  //  write(0x30+i,1);
                                    break;
                             case 3: write(0x98,0);
                                  //  write(0x30+i,1);
                                    break;
                           }  //switch

                          write(0x30+i,1);
                          write(':',1);
                          write(' ',1);
                          write(' ',1);
                          write(0x30+addate[adp2][i].adh/10,1);
                          write(0x30+addate[adp2][i].adh%10,1);
                          write(0x30+addate[adp2][i].adl/10,1);
                          write(0x30+addate[adp2][i].adl%10,1);
                          write(' ',1);
                          write(' ',1);
                          write(0x30+addate[adp2][i].adig/10,1);
                          write(0x30+addate[adp2][i].adig%10,1);
                         }   //for i=0
                       }     //if ms2
                     }         //else2


                   led=key();
                   switch(led)
                     {
                      case 0:
                      case 1:
                      case 2:
                      case 3:
                      case 4:
                      case 5:
                      case 6:
                      case 7:
                      case 8:
                      case 9: mul=led; break;
                      case 10:select=1;break;
                      case 11:pause=!pause;break;
                     }

                }         // else1
           } // while

}  // main








⌨️ 快捷键说明

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