小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 4689|回复: 1

我的程序为啥不行呢

[复制链接]
发表于 2015-8-13 20:36:04 | 显示全部楼层 |阅读模式
#include<reg52.h>
#include"xiaoche.h"
#include"xiaoche1.h"
#include"chuankou.h"
void main()
{
           delay1(5000);
           UART_Init();
           delay1(1000);
           init1();
           csbinit();
           PT1=1;
           P2=0x00;
           while(1)
           {  
               
                         csb();
       
           }
}






#include <reg52.h>
#define        uchar unsigned char
#define uint unsigned int
sbit en0=P3^7;
sbit en1=P3^6;
sbit en2=P3^5;
sbit en3=P3^4;
sbit my1=P1^0;
sbit my2=P1^1;
sbit my3=P1^2;
sbit my4=P1^3;
sbit mz1=P1^4;
sbit mz2=P1^5;
sbit mz3=P1^6;
sbit mz4=P1^7;
//sbit s2=P0^0;
//sbit s3=P0^1;
//sbit hz=P3^3;
//sbit hy=P3^2;
uchar pwm,num;
void delay1(uint ms)
{
   uchar i;
   while(ms--)
   {
      for(i=0;i<120;i++);
   }
}
void init1()
{       
   num=0;
   RCAP2H=(65536-500)/256;
   RCAP2L=(65536-500)%256;
   TH2=RCAP2H;
   TL2=RCAP2L;
   EA=1;
   ET2=1;
   TR2=1;
}
void intersvr0() interrupt 3
{
   TF2=0;
   num++;
   if(num==100)
     num=0;
  if(num<=pwm)
   {
       en0=1;
           en1=1;
           en2=1;
           en3=1;
   }
   else
   {
       en0=0;
           en1=0;
           en2=0;
           en3=0;
   }
}
/*void keyscan()
{
   if(s2==0)
   {
     delay1(50);
         if(s2==0)
         {
            if(pwm<100)
                {
                   pwm++;
                   delay1(100);
               
                }
         }
   }
   if(s3==0)
   {
     delay1(50);
         if(s3==0)
         {
            if(pwm>1)
                {
                   pwm--;
                   delay1(100);
                }
               
         }
   }
}*/
void zhi()
{
  my1=1;
  my2=0;
  my3=1;
  my4=0;
  mz1=1;
  mz2=0;
  mz3=1;
  mz4=0;
}
void hou()
{
  my1=0;
  my2=1;
  my3=0;
  my4=1;
  mz1=0;
  mz2=1;
  mz3=0;
  mz4=1;
}
void zuo()
{
  my1=1;
  my2=0;
  my3=1;
  my4=0;
  mz1=0;
  mz2=1;
  mz3=0;
  mz4=1;
}
void you()
{
  my1=0;
  my2=1;
  my3=0;
  my4=1;
  mz1=1;
  mz2=0;
  mz3=1;
  mz4=0;
}
void ting()
{
  my1=0;
  my2=0;
  my3=0;
  my4=0;
  mz1=0;
  mz2=0;
  mz3=0;
  mz4=0;
}
/*void hongwai()
{
   if(hz==0&&hy==1)
   {
      zuo();
   }
   if(hz==1&&hy==0)
   {
      you();
   }
   if(hz==1&&hy==1)
   {
      zhi();
   }
   if(hz==0&&hy==0)
   {
      ting();
          delay1(1000);
          you();
   }
}
/*void main()
{
  init1();
  num=0;
  pwm=16;
  while(1)
  {
          keyscan();
          hongwai();
  }
}        */







#include<reg52.h>
#include"xiaoche1.h"
#define uchar unsigned char
#define uint unsigned int
uint i=0;        
uchar UART_data[5]={0,0,0,0};                                                                                                                                                                                                                                                                     
void UART_Init()
        {
          i=0;
          SCON = 0x50;                    
          TMOD|= 0x20;                    
          PCON|= 0x00;                    
          TH1 = 0xfd;                     
          TL1 = 0xfd;
          TR1  = 1;  
          ES   = 1;                                   
          EA   = 1;                       
        }
void jisuan()
{
    if(UART_data[2]==0x02)                                       
        {P2=0x55; zhi();}
       
        if(UART_data[2]==0x04)                                         
        {P2=0xff;zuo();}
       
        if(UART_data[2]==0x03)                                         
        {P2=0xaa;you();}
       
        if(UART_data[2]==0x00)                                       
        {P2=0x00;ting();}
       
        if(UART_data[2]==0x01)
        {P2=0xfd;hou();}
       
        if(UART_data[2]==0xF0)                                         
        {P2=0xf7;}
       
        if(UART_data[2]==0xF1)                                       
        {P2=0x01;}
       
        if(UART_data[2]==0xF2)                                         
        {P2=0x02;}
}
void chuankou()
{
    if(i==1)
        {
           jisuan();
           ES=1;
        }
}
/*void main (void)
  {
      delay1(10000)
          init1();
          UART_Init();
          while(1)
            {                                         
                        if(i==1)
                        {
                           jisuan();
                           ES=1;
                        }
            }
}*/                                                                                                                                                                                                                                                  
void UART(void) interrupt 4
  {

  if(RI==1)
    {
           static unsigned char count;
       RI = 0;
           UART_data[count]=SBUF;
           if(count==0&&UART_data[count]==0xff)
           {
              count++;
           }
           else
           if(count>=1&&count<=3)
           {
              count++;
           }
           else
           if(count==4&&UART_data[0]==UART_data[4])
           {
               count=0;
                   i=1;
                   ES=0;
                   TR0=0;
                  // jisuan();
                  chuankou();
                   ES=1;
           }
           else
           {
              count=0;
                  EA=1;
           }
    }
}






        #include   <AT89X51.H>
        #include   <intrins.h>
    #include   <STDIO.H>
        #include "xiaoche1.h"
    #define uchar unsigned  char
    #define uint  unsigned   int  
//        #define  RX  P1_1
//  #define  TX  P1_2
          sbit RX=P3^2;
    sbit TX=P3^3;

        unsigned int  time=0;
        unsigned int  timer=0;
        float         S=0;
    bit           flag =0;
       

/********************************************************/
    void Conut(void)
        {
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
         S=(time*1.87)/100;     //算出来是CM
         if(flag==1)                    //超出测量
         {
          flag=0;
          pwm=100;
         }

                     if(S>=400)
         {
            pwm=100;
         }
         if(S>=300&&S<400)
         {
            pwm++;
                if(pwm==75)
                {
                   pwm=75;
                }
         }
         if(S>=200&&S<300)
         {
            pwm++;
                if(pwm==50)
                {
                   pwm=50;
                }
         }
         if(S>=100&&S<10)
         {
            pwm++;
                if(pwm==25)
                {
                   pwm=25;
                }
         }
         if(S>=1&&S<100)
         {
            pwm++;
                if(pwm==15)
                {
                   pwm=15;
                }
         }
        }
/********************************************************/
void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
/********************************************************/
     void zd0() interrupt 1                  //T0中断用来计数器溢出,超过测距范围
  {
    flag=1;                                                         //中断溢出标志
  }
/********************************************************/
   void  StartModule()                        
  {
          TX=1;                          
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          TX=0;
  }
void csbinit()
{
    TMOD|=0x01;
           TH0=0;
        TL0=0;
        TR0=1;  
        ET0=1;
        EA=1;
}
void csb()
{
           StartModule();
         while(!RX);                //当RX为零时等待
         TR0=1;                            //开启计数
         while(RX);                        //当RX为1计数并等待
         TR0=0;                                //关闭计数
     Conut();                        //计算
         delayms(10);
}
/*void main(void)
{  
    TMOD=0x21;                   //设T0为方式1,GATE=1;
        SCON=0x50;
        TH1=0xFD;
        TL1=0xFD;
        TH0=0;
        TL0=0;
        TR0=1;  
        ET0=1;             //允许T0中断
        TR1=1;                           //开启定时器
        TI=1;

        EA=1;                           //开启总中断


        while(1)
        {
         StartModule();
         while(!RX);                //当RX为零时等待
         TR0=1;                            //开启计数
         while(RX);                        //当RX为1计数并等待
         TR0=0;                                //关闭计数
     Conut();                        //计算
         delayms(10);                //100MS

   }
}*/






回复

使用道具 举报

 楼主| 发表于 2015-8-13 20:39:34 | 显示全部楼层
我的程序为啥不能用 大神帮忙啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-4-18 17:30 , Processed in 1.089902 second(s), 22 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表