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

📄 s_ motor-key.lst

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 233   1              {
 234   2                lcd_wdat(cdis4[m]);    //显示字符
 235   2                m++;
 236   2              }      
 237   1      
 238   1              for(m=0;m<2;m++)
 239   1                { 
 240   2                           lcd_pos(0x0c+m);    //显示方向符号
 241   2                   lcd_wdat(0x3e);
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         11/23/2006 20:59:18 PAGE 5   

 242   2                        }
 243   1      
 244   1      }
 245          /********************************************************/
 246          /*
 247          /*数据转换子程序
 248          /*
 249          /********************************************************/
 250          void  data_conv() 
 251           {
 252   1           data_temp1=data_temp/10;       //高位
 253   1               if(data_temp1==0)
 254   1               {data_temp1=0x20;}             //高位为0不显示
 255   1           else 
 256   1               {data_temp1=data_temp1+0x30;}
 257   1      
 258   1               data_temp2=data_temp%10;       //低位
 259   1           data_temp2=data_temp2+0x30;
 260   1       }
 261          
 262          /********************************************************/
 263          /*
 264          /*数据显示子程序
 265          /*
 266          /********************************************************/
 267          void  data_dis()
 268          {
 269   1                 data_temp = snum;        //显示圈数
 270   1                 data_conv();
 271   1             lcd_pos(0x44); 
 272   1             lcd_wdat(data_temp1);
 273   1             lcd_pos(0x45); 
 274   1             lcd_wdat(data_temp2);
 275   1                 
 276   1                 data_temp = rate;         //显示速率
 277   1                 data_conv();
 278   1             lcd_pos(0x4d); 
 279   1             lcd_wdat(data_temp1);
 280   1             lcd_pos(0x4e); 
 281   1             lcd_wdat(data_temp2);
 282   1      }
 283          /********************************************************
 284          /*
 285          /* 显示运行方向符号
 286          /*
 287          /********************************************************/
 288          void  motor_DR()
 289            {
 290   1             if(direction==1)           //正转方向标志
 291   1              { for(m=0;m<2;m++)
 292   2                { 
 293   3                          lcd_pos(0x0c+m);      //显示方向符号
 294   3                  lcd_wdat(0x3e);
 295   3                         }
 296   2                       }
 297   1              else
 298   1               { for(m=0;m<2;m++)       //反转方向标志
 299   2                 { 
 300   3                       lcd_pos(0x0c+m);     //显示方向符号 
 301   3                   lcd_wdat(0x3c);
 302   3                         }
 303   2                       }
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         11/23/2006 20:59:18 PAGE 6   

 304   1        }
 305          
 306          /********************************************************
 307          /*
 308          /* 显示运行状态
 309          /*
 310          /********************************************************/
 311          void  motor_RUN()
 312           {
 313   1            if(on_off==1)
 314   1                 { TR0=1; 
 315   2                   lcd_pos(0);     //设置显示位置为第一行的第1个字符
 316   2               m = 0;
 317   2               while(cdis5[m] != '\0')
 318   2                { lcd_wdat(cdis5[m]);      //RUNNING
 319   3                  m++;   }
 320   2                  motor_DR();              //
 321   2                 }  
 322   1            else  
 323   1                 { TR0=0; P1 =0xf0; 
 324   2                       lcd_pos(0);     //设置显示位置为第一行的第1个字符
 325   2               m = 0;
 326   2               while(cdis3[m] != '\0')
 327   2                { lcd_wdat(cdis3[m]);      //STOP
 328   3                  m++;   }
 329   2                  motor_DR();              //
 330   2                              snum=snum1;             //
 331   2                              number1=0;              //清圈数计数器
 332   2               }
 333   1        }
 334          
 335          /********************************************************
 336          *                                                       
 337          *  主程序                                               
 338          *                                                      
 339          *********************************************************/
 340          main()
 341           { 
 342   1               LCD_init_DIS();
 343   1                      
 344   1                       TMOD = 0x01;       //T0定时方式1
 345   1                       TL0  = 0x33;
 346   1               TH0  = 0xf5;
 347   1                       EA   = 1;
 348   1                       ET0  = 1; 
 349   1                       P1   = 0xf0; 
 350   1                      
 351   1         while(1)
 352   1          {  
 353   2             if(K1==0)
 354   2                 {
 355   3               beep();
 356   3                   while(K1==0);       //等待键释放
 357   3                   on_off=~on_off;       
 358   3               motor_RUN();           
 359   3              }   //K1 end
 360   2      /********************************************************/
 361   2            if(K2==0)    
 362   2             {
 363   3                   beep();
 364   3                       if(snum_dr==1)
 365   3                        { snum++;
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         11/23/2006 20:59:18 PAGE 7   

 366   4                          snum1=snum;
 367   4                          if(snum==0x14)
 368   4                  { snum_dr=~snum_dr;}
 369   4                        }
 370   3                       else  
 371   3                         {snum--;
 372   4                              snum1=snum;
 373   4                          if(snum==0x01)
 374   4                              { snum_dr=~snum_dr; }
 375   4                         }
 376   3                       
 377   3                 } //K2  end
 378   2      /********************************************************/
 379   2              if(K3==0)    
 380   2            {
 381   3                   beep();
 382   3                       direction=~direction; 
 383   3               motor_DR();
 384   3            }//K3 end
 385   2      
 386   2      /********************************************************/
 387   2              if(K4==0)    
 388   2             {
 389   3                   beep();
 390   3                       if(rate_dr==1)
 391   3                        { rate++;
 392   4                          if(rate==0x10)
 393   4                  { rate_dr=~rate_dr;}
 394   4                        }
 395   3                        else  
 396   3                         { 
 397   4                          rate--;
 398   4                          if(rate==0x01)
 399   4                              { rate_dr=~rate_dr; }
 400   4                         }
 401   3                      } //K4 end
 402   2          
 403   2      /********************************************************/
 404   2            if(number1==snum1)   //与设定圈数是否相等  
 405   2                 { number1=0; 
 406   3               on_off=0;
 407   3               TR0=0;
 408   3                   snum=snum1;
 409   3                       P1 =0xf0;
 410   3                       motor_RUN();
 411   3                 }         
 412   2               data_dis();
 413   2              }  // while(1) end
 414   1       }  //main end
 415          
 416          /********************************************************/
 417          /*
 418          /*  定时器 0 中断 
 419          /*
 420          /********************************************************/
 421          
 422          void  motor_onoff()  interrupt  1  
 423           {     
 424   1             TL0  = 0x33;
 425   1             TH0  = 0xf5; 
 426   1             q++;
 427   1                 if(q < rate)
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         11/23/2006 20:59:18 PAGE 8   

 428   1              { return; }
 429   1                 else 
 430   1             {  q=0;    
 431   2                    number++;                  //脉冲计数
 432   2              
 433   2                   if(number==96)              //96个脉冲电机转一圈
 434   2                    { snum--;
 435   3                          number=0;
 436   3                  number1++; }                 //电机转动圈数
 437   2                        
 438   2      
 439   2               if(direction==1)            //方向标志
 440   2                    { if(v<8)  
 441   3                      {P1 = FFW[v];v++;}       //取数据,正转
 442   3                     if(v==8) 
 443   3                     { v=0; } 
 444   3                }
 445   2               
 446   2                   else
 447   2                    { if(v<8)  
 448   3                      {P1 = REV[v];v++;}       //取数据,反转
 449   3                      if(v==8) 
 450   3                      { v=0; } 
 451   3                }
 452   2                 }
 453   1       } 
 454          
 455          /********************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    784    ----
   CONSTANT SIZE    =    101    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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