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

📄 spotwelder.lst

📁 点焊机控制器C51源码+SCH & DDB
💻 LST
📖 第 1 页 / 共 3 页
字号:
 222   3                               else if(position==12)
 223   3                                 SpaceTime=DEC_DSP(100,SpaceTime);
 224   3                               else if(position==13)
 225   3                                 SpaceTime=DEC_DSP(10,SpaceTime);
 226   3                               else if(position==14)
 227   3                                 SpaceTime=DEC_DSP(1,SpaceTime);
 228   3                               
 229   3                         }
 230   2                break;
 231   2          case 0x10:             //shift
 232   2                 DeleteKeyCode();
 233   2                         if(bcheck){bcheck=0;break;}
 234   2                 if(Program==FUNC)
 235   2                          {
 236   3                                position++;
 237   3                                if(position==15)
 238   3                                      position=0;
 239   3                  }
 240   2                         break;
 241   2              
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 5   

 242   2          case 0x20:                  //Function
 243   2                     DeleteKeyCode();
 244   2                         bcheck=0;
 245   2                 if(Program==RUN)
 246   2                          {
 247   3                                 Program=FUNC;
 248   3                                 bSet_led=0;
 249   3                                 flag_func=1;
 250   3                                 flag_run=0;
 251   3                                 position=0;
 252   3                                 Work=Emergency;
 253   3                              }
 254   2                         else
 255   2                          {
 256   3                                 Program=RUN;
 257   3                                 flag_func=0;
 258   3                                 flag_run=1;
 259   3                                 bSet_led=1;
 260   3                              }
 261   2                 break;       
 262   2          case 0x40:                    //check
 263   2                     DeleteKeyCode();
 264   2                         if((current_state==stop)&&(flag_func==0))
 265   2                          {  if(!bcheck)
 266   3                                  {
 267   4                                bPrrz_led=0;
 268   4                                bPrrz_RlyDr=0;
 269   4                        prrz_buf=PrrzTime;
 270   4                                PrrzTime=0;
 271   4                                        bcheck=1;
 272   4                            Work=check;
 273   4                                      }
 274   3                                 else bcheck=0;
 275   3                              }
 276   2                     break;
 277   2          default:
 278   2                 break;
 279   2        }
 280   1      }
 281          /*********************************************************************************
 282            这里的数据填充顺序是为和 74154 的输出顺序相配合,因布线不合理所致     。
 283          **********************************************************************************/
 284          void DisData_DSP()
 285          {
 286   1          DisData[0]=(char)((SpaceTime/100)%10);
 287   1          DisData[1]=(char)((SpaceTime/10)%10);
 288   1          DisData[2]=(char)(SpaceTime%10);
 289   1          DisData[3]=(char)((PrrzLTime/100)%10);
 290   1          DisData[4]=(char)((PrrzLTime/10)%10);
 291   1          DisData[5]=(char)(PrrzLTime%10);
 292   1          DisData[6]=(char)((PrrzTime/100)%10);
 293   1          DisData[7]=(char)((PrrzTime/10)%10);
 294   1          DisData[8]=(char)(PrrzTime%10);
 295   1          DisData[9]=(char)((WeldTime/100)%10);
 296   1          DisData[10]=(char)((WeldTime/10)%10);
 297   1          DisData[11]=(char)(WeldTime%10);
 298   1              DisData[12]=(char)((WorkCount/100)%10);
 299   1              DisData[13]=(char)((WorkCount/10)%10);
 300   1              DisData[14]=(char)(WorkCount%10);
 301   1      
 302   1      }
 303          /***************************   LED_Display()   ************************************
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 6   

 304          
 305           i 左移 4 位做为 74154 的输入,74154的 输出 Q0-Q14 为SpaceTimed \PrrzLTime\PrrzTime\
 306           WeldTime\WorkCount 的 百位 ,十 位,个位。而面板上的次序为 PrrzTime \WeldTime \WorkCount\
 307           PrrzLTime\SpaceTime,这样以来按键移位的顺序和显示位驱动的顺序无法统一,需要分别处理
 308          ***********************************************************************************/
 309           
 310          void LED_Display()
 311          { 
 312   1         static unsigned int j;
 313   1         static unsigned char i;
 314   1         P2_7=1;
 315   1         DisData[i] &=0x0f;
 316   1         DisData[i] |=(i<<4);
 317   1         if(flag_func)
 318   1          { 
 319   2                if(j++>999)j=0;
 320   2                if(j>499)P0=DisData[i];
 321   2                else
 322   2                 {  
 323   3                    if((position==0)&&(i==6))P0=0xff;
 324   3                        else if((position==1)&&(i==7))P0=0xff;
 325   3                        else if((position==2)&&(i==8))P0=0xff;
 326   3                        else if((position==3)&&(i==9))P0=0xff;
 327   3                        else if((position==4)&&(i==10))P0=0xff;
 328   3                        else if((position==5)&&(i==11))P0=0xff;
 329   3                        else if((position==6)&&(i==12))P0=0xff;
 330   3                        else if((position==7)&&(i==13))P0=0xff;
 331   3                        else if((position==8)&&(i==14))P0=0xff;
 332   3                        else if((position==9)&&(i==3))P0=0xff;
 333   3                        else if((position==10)&&(i==4))P0=0xff;
 334   3                        else if((position==11)&&(i==5))P0=0xff;
 335   3                        else if((position==12)&&(i==0))P0=0xff;
 336   3                        else if((position==13)&&(i==1))P0=0xff;
 337   3                        else if((position==14)&&(i==2))P0=0xff;
 338   3                        else P0=DisData[i];
 339   3             }
 340   2              }
 341   1         else P0=DisData[i];
 342   1         if((i==1)||(i==3) ||(i==6)||(i==9))P2_7=0;    //小数点
 343   1         i++;
 344   1         if(i==15)i=0;
 345   1      }
 346          
 347          /**************************    initail()    ***************************************/
 348          void Initail()
 349          {
 350   1        TCON=0x01;       //IT0=1,下降沿触发中断
 351   1        IP=0x04;         //PX0=1;外部中断优先级最高
 352   1        IE=0x8b;         //EA=1,ET1=1,ET0=1,EX0=1;
 353   1        TMOD=0x11;
 354   1        TL1=71;
 355   1        TH1=243;
 356   1        TR1=1;
 357   1        TH0=216;
 358   1        TL0=239;
 359   1        TR0=1;
 360   1        bExecute=0;
 361   1        KeyCode=0;
 362   1        KeyState=0;
 363   1        Program=RUN;
 364   1        //DownCT=0;
 365   1      }
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 7   

 366          
 367          void InitValue()
 368          {
 369   1        PrrzTime=50;
 370   1        WeldTime=50;
 371   1        PrrzLTime=50;
 372   1        WorkCount=10;
 373   1        SpaceTime=5;
 374   1        Program=RUN;
 375   1        WorkMode=MAN;
 376   1      }
 377          //****************************
 378          void delay(uchar i,uchar j)
 379          {
 380   1        uchar n,m;
 381   1        for(n=i;n>0;n--)
 382   1          for(m=j;m>0;m--);
 383   1      }
 384          //*************************     void main()    ************************************
 385          
 386          unsigned char data FSTBuf[2]={0,0};
 387          
 388          void main(void)
 389          {
 390   1        unsigned char i;
 391   1        unsigned int data *rptr;
 392   1        for(i=5;i>0;i--)
 393   1           IRcvStr(AT24WC01,0x20,FSTBuf,2);
 394   1        i=FSTBuf[0]+FSTBuf[1];
 395   1        if(i!=0xcc)
 396   1         {
 397   2            FSTBuf[0]=0x39;
 398   2                FSTBuf[1]=0x93;
 399   2                for(i=5;i>0;i--)
 400   2                  ISendStr(AT24WC01,0x20,FSTBuf,2);
 401   2                InitValue();
 402   2                flag_run=1;
 403   2         }
 404   1        else
 405   1          {
 406   2                do { i=IRcvStr(AT24WC01,0x00,trnscv,11);
 407   3               }while(!i);
 408   2                rptr=trnscv;
*** WARNING C182 IN LINE 408 OF SPOTWELDER.C: pointer to different objects
 409   2                PrrzTime=*rptr;
 410   2                rptr+=1;
 411   2                WeldTime=*rptr;
 412   2                rptr+=1;
 413   2                WorkCount=*rptr;
 414   2                rptr+=1;
 415   2                PrrzLTime=*rptr;
 416   2                rptr+=1;
 417   2                SpaceTime=*rptr;
 418   2                WorkMode=trnscv[10];
 419   2                if( (PrrzTime>999) ||(WeldTime>999)
 420   2                  ||(WorkCount>999)||(PrrzLTime>999)||(SpaceTime>999))
 421   2                  { 
 422   3                        InitValue();flag_run=1;
 423   3                      }
 424   2                if(WorkMode==AUTO)bMode_led=0;
 425   2         }
 426   1        Initail();  
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 8   

 427   1        while(1)
 428   1          {
 429   2                 Key_Server();
 430   2                 DisData_DSP();
 431   2             if(flag_run==1)
 432   2                  {  
 433   3                         flag_run=0;
 434   3                         rptr=trnscv;
*** WARNING C182 IN LINE 434 OF SPOTWELDER.C: pointer to different objects
 435   3                         *rptr=PrrzTime;
 436   3                         rptr+=1;
 437   3                         *rptr=WeldTime;
 438   3                         rptr+=1;
 439   3                         *rptr=WorkCount;
 440   3                         rptr+=1;
 441   3                         *rptr=PrrzLTime;
 442   3                         rptr+=1;
 443   3                         *rptr=SpaceTime;
 444   3                         trnscv[10]=WorkMode;
 445   3                         do{ i=ISendStr(AT24WC01,0x00,trnscv,8);
 446   4                           }while(!i);
 447   3                         delay(50,50);  //10ms

⌨️ 快捷键说明

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