超声波水位报警c语言编程,超声波壁障C语言程序.doc

超声波壁障C语言程序

//将此程序下载到U2,按下U2P32启动,按下U2P33停止

//将另外超声波测距程序下载到U1,并且把两机通讯的拨码开关的第1为打到ON的状态

//程序注释请参考机器人巡黑线程序的注释。

#include

#define uchar unsigned char

#define uint unsigned int

void motor_r_z(void);//右边电动机正转

void motor_l_z(void);//左边电动机正转

void motor_r_f(void);//右边电动机反转

void motor_l_f(void);//左边电动机反转

void back(void); //小车后退

void go(uchar,uchar);//小车前进

void stop(void);//小车停止

void left(void);//小车左转

void right(void);//小车右转

sbit PWM1=P2^5;

sbit PWM2=P2^4;

sbit PWM3=P2^1;

sbit PWM4=P2^2;

sbit EN1=P2^0;

sbit EN2=P2^3;

sbit left_k=P0^7;

sbit right_k=P0^6;

sbit chaoshengbo=P0^2;

sbit start_k=P3^2;

sbit stop_k=P3^3;

sbit sound=P2^7;

uchar data t_0;

uchar data motor_r;

uchar data motor_l;

uchar data Value;

uchar data mid;

//**延时子程序**///

void delay_1ms(uint n)

{

uint i,j;

for(j=n;j>0;j--)

for(i=20;i>0;i--);

}

void ini(void)

{

T0初始化///

TMOD=0x01; //T0工作在方式1

TH0=0xff; //装入T0初值

TL0=0xf6;

TR0=1;//开T0中断

ET0=1;//T0允许中断

EA=1;

//

t_0=0;

/

P2=0;

sound=1;

}

void Sound(void)

{

///蜂鸣器响///

sound=0;

delay_1ms(30);

sound=1;

}

void start(void)

{

uchar a;

aa:

while(start_k);

for(a=0;a<50;a++)

{

delay_1ms(1);

while(start_k)

goto aa;

}

Sound();

go(0x30,0x30);

}

void go(uchar left_motor,uchar right_motor)//直行

{

Value=right_motor;

motor_r_z();

Value=left_motor;

motor_l_z();

}

void motor_r_z(void)//右边电动机正转

{

ACC=0x64+Value;

motor_r=ACC;

EN1=1;

}

void motor_l_z(void)//左边电动机正转

{

ACC=0x64-Value;

motor_l=ACC;

EN2=1;

}

void stop(void)

{

EN2=0;

EN1=0;

}

void time0(void) interrupt 1 using 2

{

TR0=0;

TH0=0xff;

TL0=0xf6;

++t_0;

ACC=t_0;

CY=0;

ACC-=motor_r;

if(CY==1)

{

PWM1=1;

PWM2=0;

goto PWM_2;

}

PWM1=0;

PWM2=1;

PWM_2:

ACC=t_0;

CY=0;

ACC-=motor_l;

if(CY==1)

{

PWM3=1;

PWM4=0;

goto HIGHT;

}

PWM3=0;

PWM4=1;

HIGHT:

ACC=t_0;

if(ACC!=0xc9)

goto EXIT;

ACC=0;

t_0=ACC;

EXIT:

TR0=1;

}

void main(void)

{

uchar a;

ini();

start();

判断左传感器状态

while(1)

{

aa:

while(left_k)

goto bb;

P1_0=0;

Sound();

while(

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值