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

📄 bujinmain.lst

📁 用于测试步进电机
💻 LST
📖 第 1 页 / 共 3 页
字号:
 205   1              yy.c[0]=TH0;
 206   1         yy.c[1]=TL0;
 207   1              yy.x+=0xfe70;
 208   1              if(yy.x<0xfe70)yy.x=0xfff0;
 209   1              TH0=yy.c[0];     
 210   1         TL0=yy.c[1];
 211   1              TR0=1;*/
 212   1              scanfkey=1;
 213   1              read_input();   
 214   1      }
 215          /***************************************************************************
 216          *    中断3:定时器1   12M/12T时20mS中断一次
 217          ****************************************************************************/
 218          void int_timer1(void) interrupt 3 using 1
 219          {
 220   1              uchar data  mem_inn;  //做堆栈用--AUXR
 221   1              TH1=0x63;
 222   1              TL1=0xC0;
 223   1              mem_inn=AUXR;
 224   1              AUXR &=0xfd;
 225   1              dispkeyok=1;
 226   1              disp_key();
 227   1              read_input1();  //读计量脉冲
 228   1         if (k1spk_time==100 || k1spk_time==50 || k1spk_time==20) k1spk=0;   //打开蜂鸣器1
 229   1              if (k1spk_time==60 || k1spk_time==30 || k1spk_time==0) k1spk=1;   //关闭蜂鸣器1
 230   1      
 231   1              if (k1spk_time>0)  k1spk_time--;
 232   1              if (k1spk_time==0)  k1spk=1;
 233   1              /****************************/
 234   1              if (k2spk_time==110 || k2spk_time==50 || k2spk_time==20) k2spk=0;   //打开蜂鸣器1
 235   1              if (k2spk_time==60 || k2spk_time==30 || k2spk_time==0) k2spk=1;   //关闭蜂鸣器1
 236   1      
 237   1              if (k2spk_time>0)  k2spk_time--;
 238   1              if (k2spk_time==0)  k2spk=1;
 239   1              //-------------------
 240   1              read_input1();  //读计量脉冲
 241   1              //-----------------------
C51 COMPILER V7.00  BUJINMAIN                                                              09/14/2006 16:35:47 PAGE 5   

 242   1              timesec++;
 243   1              if(timesec==50)ration_mode_a=1;
 244   1              if(timesec==100)  //秒
 245   1              {       timesec=0;dispprn_a=1;ration_mode_a=1;
 246   2                      if(disp_floor_level_a>(gun1.pulse+4))disp_floor_level_a-=4;
 247   2                      if(disp_floor_level_b>(gun2.pulse+4))disp_floor_level_b-=4;
 248   2                      if(prn1time>0)prn1time--;
 249   2                      if(state1==4 && menu1==4 && temp_mema==4) temp_mema=0; 
 250   2                      if(state2==4 && menu2==4 && temp_memb==4) temp_memb=0;
 251   2                      //------------------- 临时时间继电器
 252   2                      //time_temp_delay--;
 253   2                      //if(time_temp_delay>9) time_temp_delay=9;
 254   2                      //if(time_temp_delay==5)dely1=1;
 255   2                      //if(time_temp_delay==0){dely1=0;time_temp_delay=9;}  
 256   2                      //-------------------
 257   2              }
 258   1              read_input1();  //读计量脉冲
 259   1              if(mcstoptime_a>0)mcstoptime_a--;
 260   1              if(mcstoptime_b>0)mcstoptime_b--;
 261   1              update_worka=1;update_workb=1;
 262   1              if(hang_time1!=0)  hang_time1--;  //挂枪延时
 263   1              if(hang_time2!=0)  hang_time2--;  //挂枪延时
 264   1              AUXR=mem_inn;
 265   1      }
 266          /*****************************************************************************
 267          *         功能:串行中断,接收上位机数据
 268          *****************************************************************************/
 269          void seri_int (void) interrupt 4 using 2
 270          {  uchar data  mem_inn;  //做堆栈用--AUXR
 271   1         //uchar data  i;
 272   1         //uchar data rece_data;
 273   1         uchar data verify=0;
 274   1         mem_inn=AUXR;  //做堆栈用
 275   1         AUXR &=0xfd;
 276   1              
 277   1              AUXR=mem_inn;   //做堆栈用
 278   1      }
 279          /***************************************************************************
 280          *    中断5:定时器2    12T时:可调时间中断1次
 281          ****************************************************************************/
 282          void int_timer2(void) interrupt 5 using 3
 283          {       uchar data  mem_inn;  //做堆栈用--AUXR
 284   1              TF2=0;
 285   1              TXD=hlow;
 286   1              if(electromotor){hlow=~hlow;}
 287   1              mem_inn=AUXR;
 288   1              AUXR &=0xfd;
 289   1      
 290   1              if(runsum>0 && !hlow)runsum--;
 291   1              if(runsum==0 && electromotor && !hlow)
 292   1              {       runsum=400;price_a++;  //price_a为圏数
 293   2                      //gun1.sale+=modehl_a;
 294   2                      if(price_a==1)
 295   2                  {   if(gun1.pulse>70)modehl_a=100;
 296   3                              if(gun2.pulse>70)modehl_b=100;
 297   3                      }
 298   2                      if(cmdstop && runf.x<63300 ){cmdstop=0;electromotor=0;}  //停机  12M时为64500
 299   2                      if(price_a>=price_b) cmdstop=1;         
 300   2              }
 301   1              RCAP2H=runf.c[0];
 302   1              RCAP2L=runf.c[1];
 303   1              if(!cmdstop && runf.x<increment_b && !hlow){runf.x++;runf.x++;} //加速
C51 COMPILER V7.00  BUJINMAIN                                                              09/14/2006 16:35:47 PAGE 6   

 304   1              if(cmdstop && runf.x>63000 && !hlow){runf.x--;runf.x--;}   //减速
 305   1              AUXR=mem_inn;   
 306   1      }
 307          /***************************************************************************
 308          *   功能: 工作面A计量处理
 309          ****************************************************************************/
 310          void workajl(void)
 311          {  if(update_worka)
 312   1              {       update_worka=0;updatea=1;
 313   2                      if(jl1s>0)     
 314   2                      {
 315   3                              while  (jl1s>0)
 316   3                              {  gun1.pulse+=1;
 317   4                                      jl1s--;
 318   4                                      gun1.pulse_jsq++;
 319   4                                 //if (gun1.pulse_jsq==120) { gun1.pulse_jsq=0;jsq1out=1;} //通知计数器
 320   4                                      updatea=1;save_oka=1;idle_numa=0;
 321   4                              }
 322   3                      }
 323   2                      else
 324   2                      {
 325   3                              if(state1!=1  || !INT0)  //if(state1==0  || !INT0)  2006-07-11
 326   3                              {
 327   4                                      if(idle_numa<20)idle_numa++;                            
 328   4                                      if(ration_a && (idle_numa>3))  //定量加油完毕
 329   4                                      {  ration_a=0;
 330   5                                         save_oka=1;idle_numa=20;
 331   5                                              if(ration_mode_a)gun1.liter=ration_num_a;
 332   5                                              else gun1.sale=ration_num_a;
 333   5                                              disp_key_clear_a();
 334   5                                              updatea=1;
 335   5                                      }       
 336   4                                      //if(idle_numa==20 && save_oka){save_oka=0;sum_a();}  //累計
 337   4                              }
 338   3                              else idle_numa=0;
 339   3                      }
 340   2                      
 341   2              }       
 342   1      }
 343          
 344          
 345          /***************************************************************************
 346          *   功能: 工作面B计量处理   [ok]
 347          ****************************************************************************/
 348          void workaj2(void)
 349          {  if(update_workb)
 350   1              {       update_workb=0;updateb=1;
 351   2                      if(jl2s>0)     
 352   2                      {
 353   3                              while  (jl2s>0)
 354   3                              {  gun2.pulse+=1;
 355   4                                      jl2s--;
 356   4                                      gun2.pulse_jsq++;
 357   4                                 //if (gun2.pulse_jsq==120) { gun2.pulse_jsq=0;jsq2out=1;} //通知计数器
 358   4                                      updateb=1;save_okb=1;idle_numb=0;
 359   4                              }
 360   3                      }
 361   2                      else
 362   2                      {
 363   3                              if(state2!=1 || !INT0)  //if(state2==0 || !INT0)   2006-07-11
 364   3                              {
 365   4                                      if(idle_numb<20)idle_numb++;
C51 COMPILER V7.00  BUJINMAIN                                                              09/14/2006 16:35:47 PAGE 7   

 366   4                                      if(ration_b  && (idle_numb>3))  //定量加油完毕
 367   4                                      {  ration_b=0;
 368   5                                              save_okb=1;idle_numb=20;
 369   5                                              if(ration_mode_b)gun2.liter=ration_num_b;
 370   5                                              else gun2.sale=ration_num_b;
 371   5                                              disp_key_clear_b();
 372   5                                              updateb=1;
 373   5                                      }
 374   4                              //      if(idle_numb==20 && save_okb){save_okb=0;sum_b();}  //累計
 375   4                              }
 376   3                              else idle_numb=0;
 377   3                      }
 378   2                      
 379   2              }       
 380   1      }
 381          
 382          /***************************************************************************
 383          *   功能:读出EEPROM保存数据
 384          *   JiangMaoZHou
 385          ***************************************************************************/
 386          void  read_eeprom(void)
 387          {  
 388   1         void  *pt;
 389   1              
 390   1              pt=&gun1;       
 391   1              readbyteseq(0x01,pt,37);   //读EEPROM
 392   1              
 393   1              wdt=!wdt;   //WDT
 394   1              WDT_CONTR=0x34;
 395   1      
 396   1              pt=&gun2;       
 397   1              readbyteseq(38,pt,37);   //读EEPROM
 398   1      
 399   1              pt=&(price_a); 
 400   1              readbyteseq(502,pt,2);//单价a
 401   1              pt=&(price_b);  
 402   1              readbyteseq(504,pt,2);//单价b
 403   1          
 404   1      
 405   1              oil_types_a=readbyte(78);  //油品
 406   1              oil_types_b=readbyte(79);  //油品
 407   1              residue_a=readbyte(87); //提前量
 408   1              residue_b=readbyte(87+7); //提前量
 409   1              close_num_a=readbyte(88);    //提前关机量
 410   1              close_num_b=readbyte(88+7);    //提前关机量
 411   1          gunadd_a=readbyte(89);   //中控地址
 412   1              gunadd_b=readbyte(89+7);   //中控地址
 413   1              decimal_a=readbyte(90);   //读小数点a
 414   1              
 415   1              decimal_b=readbyte(90+7);   //读小数点b
 416   1       
 417   1              increment_a=readbyte(91);  //每秒增量1--3

⌨️ 快捷键说明

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