跪求大神给调试下这个程序

2019-07-18 12:08发布

本帖最后由 发烧狂 于 2015-5-9 10:36 编辑

跪求大神给调试下这个程序
原理图还没画完 另外参照教程做了一个 ae2501b电机驱动 不知道对不对 求大神再给做一个 这个是百度给的ae2501b的信息http://wenku.baidu.com/view/6444c115f18583d049645972.html

#include<AT89X51.H>
#include<absacc.h>   
#include<intrins.h>  
#define uchar unsigned char
#define uint unsigned int
/*---接口定义 ---*/   
sbit Menu = P2^5; //菜单选择   
sbit TZDJ = P2^4; //停止电机   
sbit ZFZ = P2^3; //正反转选择   
sbit DJXZ = P2^2;//电机选择  
sbit LED_DK1 = P2^1; //数码管段控第1位
sbit LED_DK2 = P2^0; //数码管段控第2位  
sbit ADC0832_CS = P1^1;  
sbit ADC0832_CLK = P1^2;   
sbit ADC0832_DODI = P1^3; //停止电机   
sbit DJ1a = P1^4; //直流电机1控制+  
sbit DJ1d = P1^5;//直流电机1控制-  
sbit DJ2a = P1^6; //直流电机2控制+   
sbit DJ2d = P1^7;//直流电机2控制-   
sfr DAT = 0x80; //数码管8位段控数据  
sfr JXQ_DAT = 0xB0; //鉴相器8位数据  
void Init();  
void tzjcl();
void LED_display();  
void delay();  
uchar Menu_value=0,DJXZ_value=0,ZFZ_value=0,TZD_value=0,TZDJ_value=0;  
uchar *LED_1,flag=0,ADC0832_Hd,ADC0832_Ld,i,k,ADC0832_dat=100, H_dat=10;   
/*---主函数---*/
void main(void)
     {      
     Init();
         while(1)      
          {           
           if((Menu=0)||(DJXZ=0)||(ZFZ=0)||(TZDJ=0))      
            {               
             TH1 = 0xfc;            
             TL1 = 0x18;            
             TR1=1;      
           }         
       LED_display();      
          }
      }
void Init()  
      {      
       ADC0832_CS = 1;      
       LED_1=&ADC0832_dat;
       TMOD=0x10;      
       TH1 = 0xfc;      
       TL1 = 0x18;      
       EA=1;      
       ET1=1;      
       TR1=0;   
      }  
/*---按键判断与处理程序---*/  
void t1(void) interrupt 3 using 0  
{      
  TR1=0;  
  flag=flag+1;      
  if(flag=1)      
      {         
       if(Menu=0)      
           {              
            if(Menu_value!=2)            
            Menu_value=Menu_value+1;
            else
            Menu_value=0;      
           }         
       if(DJXZ=0)   
           {            
            if(DJXZ_value!=1)        
            DJXZ_value=DJXZ_value+1;      
            else           
            DJXZ_value=0;   
           }      
       if(ZFZ=0)   
           {            
            if(ZFZ_value!=1)     
            ZFZ_value=ZFZ_value+1;     
            else         
            ZFZ_value=0;      
           }         
       if(TZDJ=0)  
           {            
            if(TZDJ_value!=1)            
            TZDJ_value=TZDJ_value+1;      
            else           
            TZDJ_value=0;      
             }                 
    loop:if((Menu=1)&&(DJXZ=1)&&(ZFZ=1)&&(TZDJ=1))   
           {            
            TH1 = 0xfc;  
            TL1 = 0x18;      
            TR1=1;              
            flag=1;
           }         
       else            
       goto loop;     
       }     
if(flag=2)     
        {         
         if((Menu=1)&&(DJXZ=1)&&(ZFZ=1)&&(TZDJ=1))   
           {              
            flag=0;         
            tzjcl();      
           }         
         else              
         goto loop;   
        }
}  
/*---塔吊运行程序---*/  
void tzjcl()     
{         
  if(Menu_value=0)   //运行电机     
  {        
  if(TZDJ_value=0)     
      {               
        if(DJXZ_value=0)        
             {               
               if(ZFZ_value=0)     
                    {                  
                     DJ1a = 1;              
                     DJ1d = 0;           
                  }         
              else      
                  {  
                     DJ1a = 0;                  
                     DJ1d = 1;         
                  }     
             }      
       else   
            {              
             if(ZFZ_value=0)   
                  {                  
                   DJ2a = 1;              
                   DJ2d = 0;         
                    }           
             else         
                  {               
                   DJ2a = 0;            
                   DJ2d = 1;         
                  }      
             }     
       }      
else     
      {           
        DJ1a = 0;           
        DJ1d = 0;            
        DJ2a = 0;            
        DJ2d = 0;     
      }   
}     
if(Menu_value=1)   //测量物重     
{   
loop:ADC0832_Hd= 0;     
ADC0832_Ld= 0;      
k= 0;      
_nop_ ();         
ADC0832_CS = 0;        
_nop_ ();        
ADC0832_CLK = 0;   
_nop_ ();        
_nop_ ();           
ADC0832_CLK = 1;        
ADC0832_DODI = 1;         
_nop_ ();         
_nop_ ();        
ADC0832_CLK = 0;      
_nop_ ();         
_nop_ ();           
ADC0832_CLK = 1;        
ADC0832_DODI = 0;         
_nop_ ();      
_nop_ ();  
ADC0832_CLK = 0;   
_nop_ ();      
_nop_ ();            
ADC0832_CLK = 1;      
_nop_ ();        
_nop_ ();      
ADC0832_CLK = 0;   
_nop_ ();         
_nop_ ();           
for(i=0;i<8;i++)   
      {            
       ADC0832_CLK = 1;                    
         _nop_ ();      
         _nop_ ();         
         ADC0832_CLK = 0;        
         _nop_ ();         
         _nop_ ();
        ADC0832_Hd |= ADC0832_DODI;        
        ADC0832_Hd<<=1;     
       }
            
for(i=0;i<8;i++)      
       {            
        ADC0832_CLK = 1;   
        _nop_ ();            
        _nop_ ();         
        ADC0832_CLK = 0;            
        _nop_ ();              
        _nop_ ();            
        k|= ADC0832_DODI;         
        k<<=i;            
        ADC0832_Ld |= k;      
        }         
        ADC0832_CLK = 1;      
        _nop_ ();         
        _nop_ ();         
        ADC0832_CS = 1;     
        ADC0832_CLK = 0;         
        _nop_ ();         
        _nop_ ();
        if(ADC0832_Hd=ADC0832_Ld)   
                {            
                 ADC0832_Hd=ADC0832_dat;      
                 LED_1=&ADC0832_dat;   
                }        
        else        
        goto loop;     
       }      
  if(Menu_value=2)  
//测量高度     
    {         
     H_dat=(JXQ_DAT/16)*10+(JXQ_DAT%16);   
     LED_1=&H_dat;   
    }  
  }  
/*---显示函数---*/  
void LED_display()  
  {      
   uchar code table[10]=
           {
            0x3f,0x06,0x5b,0x4f,0x66,0x6d,   
            0x7d,0x07,0x7f,0x6f
           };   
    //数码管段码,分别为0到9.      
         uchar code table2[8]={0x01,0x02}; // 数码管位空序列     
         uchar table1[2];      
         table1[0]=*LED_1%10;      
         table1[1]=*LED_1/10;      
         LED_DK1=table2[0];   
         delay();   
         DAT=table[table1[1]];   
         LED_DK2=table2[1];   
         delay();
  }
/*---延时函数---*/  
void delay()
     {   
      uchar i,j;  
      for(i=200;i>0;i++)   
            {         
             for(j=200;j>0;j++);   
            }
     }


0.png
所需的电机和驱动 所需的电机和驱动
左图是找的 这个好像也不符合 右图是自己做的 左图是找的 这个好像也不符合 右图是自己做的
我程序.rar 下载积分: 积分 -1 分
1.75 KB, 下载次数: 3, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。