打印

基于7421的超声波避障

[复制链接]
127|1
跳转到指定楼层
楼主
我的程序有点乱,请大神们批评指出
#include "Function_Init.H"

/**************************************************************
?μ?÷£o±?ày3ì?Yê?á?ADC?áè?′??D?÷μ?êy?μ£?è?oó?D??μ±?°′??D?÷ê?·?′|óúoúé??-?£????óò£?
è?1?′??D?÷?úoúé???óò£??íμ?áá??ó|μ?LED×÷?a??ê??£
±àD′£o??oìáá
ê±??£o2019.4.29
***************************************************************/
extern void ADC_Init(uint Channel);
extern void void Timer_Init(void);
extern void PWM_Init(void);
extern void PWM_ctr(uchar pwmL,uchar pwmR);
extern void ADC_ch();
extern void Uart0_Init(uint Freq,unsigned long int baud);
extern bit Uart0SendFlag ;
extern uint adcL,adcR;
uchar pwmL,pwmR;
#define uint unsigned int
#define uchar unsigned char
#define TRIG P1_1
#define ECHO  p1_0
unsigned int  time=0;
unsigned int  timer=0;
unsigned int k = 0;
unsigned int s = 0;
void main(void)
{
        uint m,k;
        IO_Init();  //òy??3?ê??ˉ
        PWM_Init();  //PWM3?ê??ˉ
        Uart0_Init(16,9600);
        pwmL=100,pwmR=100;//????±è3??μ
        P1CON|=0x01;
  P1CON|=~0x02;
        TOMD = 0x21;
        TH0 = 0;
        TL0 = 0;
        EA = 1;
        IE |=0X44;       //?a??ADC?D??
        while(1)
        {WDTCON |= 0x10;                    //???′??
          ADC_ch();       
                for(m=0;m<500;m++);//?óê±ò???ê±??£? ò???o?D?3μ???ˉ?ù?è???yμ??é??
                if((adcR>3300) &&(adcL<2800))  //óò′??D?÷??óúoúé???óò£?×ó′??D?÷??óú°×é???óò
                {if(pwmL<250)pwmL++;//ìá??×óμ??ú?y?ˉD?o?μ?????±è£?êμ??óò×a
                        pwmR=400;
                        P1&=~0X80; //μ?ááP1.7òy??μ?LED,D5
                  P1|=0X40;  //1?±?LED
                        PWM_ctr(pwmL,pwmR);
                               
                }       
                                        if((adcR>3300) &&(adcL>3300))  //×ó,óò′??D?÷??óúoúé???óò£?
                {
                        pwmR=150;
                        pwmL=pwmR;  //?±DD
                        PWM_ctr(pwmL,pwmR);
                        P1|=0X80;  //1?±?LED
                        P1&=~0X40; //μ?ááP1.6òy??μ?LED,D6               
                }
       
                        if((adcR<2800) &&(adcL<2800))  //×ó,óò′??D?÷??óú°×é???óò£?
                {pwmR=0;  //?-μ?Dy×a
                        pwmL=0;
                        PWM_ctr(pwmL,pwmR);
                        P1&=~0X40; //μ?ááP1.6òy??μ?LED,D6
                        P1&=~0X80; //μ?ááP1.7òy??μ?LED,D5
                }
       
                                if((adcR<2800) &&(adcL>3300))  //×ó′??D?÷??óúoúé???óò£?óò′??D?÷??óú°×é???óò
                {if(pwmR<150)pwmR++;//ìá??óòμ??ú?y?ˉD?o?μ?????±è£?×óêμ??×a
                        pwmL=800;
                        PWM_ctr(pwmL,pwmR);
                                P1|=0X80;  //1?±?LED
                         P1|=0X40;  //1?±?LED
                }
          k++;
                if(k>=100)                //???-?·1000′?£?·¢?íò?′?1aμ?′??D?÷êy?Y
    { SS0DAT = adcL>>8;  //×ó′??D?÷êy?Y??×??ú
                while(!Uart0SendFlag);
                Uart0SendFlag = 0;
                SS0DAT = (uchar)adcL;  //×ó′??D?÷êy?Yμí×??ú
                while(!Uart0SendFlag);
                Uart0SendFlag = 0;
                  SS0DAT = adcR>>8;  //óò′??D?÷êy?Y??×??ú
                while(!Uart0SendFlag);
                Uart0SendFlag = 0;
                SS0DAT = (uchar)adcR;  //óò′??D?÷êy?Yμí×??ú
                while(!Uart0SendFlag);
                Uart0SendFlag = 0;
          k=0;
   }
               
                void Timer_Count(void);
         if(s==)
       
        }

}
void Conut(void)
        {
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
         S=(time*1.88)/10;     //??3?à′ê?MM
        //3?3?2aá?·??§??ê??°-?±
        }
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
        for(j=587;j>0;j--)
}
void Micro Wait( int timeout )
{
        while(timeout--)
        {
                TRIG = 1;
    asm"NOP";
                asm"NOP";       
    asm"NOP";
                 asm"NOP";
                 asm"NOP";
                 asm"NOP";
                 asm"NOP";
                 asm"NOP";
                TRIG = 0;
        }
}
void delay_10us(void)
{
        Micro Wait(10);
}
void Timer_Count(void)
{
                 TR0=0;                            //?a????êy
             while(ECHO==0);                        //μ±RX?a1??êy2¢μè′y
             TR0=1;                                //1?±???êy
         Conut();                        //????

}
void zd0() interrupt 1
{
         
          TR0 = 0;
         TL0 = 0;
}

使用特权

评论回复
沙发
| 2019-6-13 22:52 | 只看该作者
注释都乱码了。
建议代码以“添加代码文字”的方式加入到帖子中

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

在线客服 快速回复 返回顶部 返回列表
全民彩票