📄 chekongzhi.txt
字号:
/*
第一阶段,方向可控,速度恒定
P1口的前7个(0-7)为方向输入(光电管的输入,单片机收到高电平认为有信号)
P2的1口为舵机的pwm
P2的0口为后电机的pwm
*/
#include <regx52.h>
#define uint unsigned int
uint a,c; /*timer0用,调整占空比舵机用基本不用改动*/
uint max=10,zan=5,dang=0,dang3=0; /*timer1用,调整占空比后电机用*/
uint psw=0,biao[7]={1790,1707,1624,1540,1456,1373,1290},i=3;
int jishu=0,jizun,temp1;
sbit p20=P2^1;
sbit p21=P2^0;
sbit p22=P2^2;
sbit p23=P2^3;
sbit p24=P2^4;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p11=P1^0;
sbit p12=P1^1;
sbit p13=P1^2;
sbit p14=P1^3;
sbit p15=P1^4;
sbit p16=P1^5;
sbit p17=P1^6;
sbit p18=P1^7;
void delay(uint k) //k 秒
{
uint i,j;
for(i=0;i<k*1000;i++)
for(j=0;j<121;j++) ;
}
void timer0(void) interrupt 1 using 1 /*定时器0,输出PWM舵机用*/
{p20=!p20;
c=20000-c;
TH0=-(c/256); TL0=-(c%256);
if(c>=500&&c<=2500)c=a;
else c=20000-a;
}
void timer1(void) interrupt 3 using 1 /*定时器1,输出PWM后电机用*/
{
if(zan)
{
if(dang==zan)
{ p21=0; }
if(dang==max)
{ p21=1;dang=0; }
dang++;
}
else p21=0;
TH1=0xff;TL1=0x00;
}
void timer2(void) interrupt 5
{
jishu++;
if(!p11&&!p18&&p13&&p16&&(!p14||!p15)) zan=0;
if(p11==0)
i=0,psw=1;
if(p12==0)
i=1,psw=1;
if(p13==0)
i=2,psw=1;
if(p14==0||p15==0)
i=3,psw=1;
if(p16==0)
i=4,psw=1;
if(p17==0)
i=5,psw=1;
if(p18==0)
i=6,psw=1;
if(psw==1)
{while(p20==0);a=c=biao[i];TH0=-(c/256); TL0=-(c%256);psw=0;
while(!p11);while(!p12);while(!p13);while(!p14);while(!p15);while(!p16);while(!p17);while(!p18);
}
}
void main(void)
{
/* 数组每个对应一个角度,现在为依次按顺序排列*/
TMOD=0x11;
p20=1;
p23=p24=p25=p22=p21=1;
p11=p12=p13=p14=p15=p16=p17=p18=1;
a=1520;
c=a;
TH0=-(a/256); TL0=-(a%256);
EA=1;
ET0=1; TR0=1;EX0=1;
PX0=0;PT0=1;
TH1=0XFF;TL1=0X00;
ET1=1;TR1=1;EX1=1;
PX1=0;PT1=1;
ET2=1;TH2=0xff;TL2=0x00;TR2=1; RCAP2H=0xfa; RCAP2L=0x24;
if(p22)zan=5;
if(p23)zan=6;
if(p24)zan=7;
if(p25)zan=8;
temp1=zan;
delay(3);
while(p26);
while(p26==0);
jishu=0;
while(p26);
jizun=jishu;
for(;;)
{ while(p26==0);
jishu=0;
while(p26);
if(jishu-jizun>jizun*0.1)
zan=10;
if(-(jishu-jizun)>(jizun*0.1))
zan=temp1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -