📄 renwu.c
字号:
#include "reg5410.h"
#include "head.h"
unsigned int Maxjiao=502;
unsigned int Minjiao=483;
unsigned int j_time=750;
unsigned int f_time=1500;
extern void DispShuzi(unsigned char x,unsigned char y,unsigned int n); //8*16数字显示
extern void DispShuzi0(unsigned char x,unsigned char y,unsigned int n); //8*16数字显示
extern void DispShuzi1(unsigned char x,unsigned char y,unsigned int n); //8*16数字显示
extern void DispShuzi2(unsigned char x,unsigned char y,unsigned int n); //8*16数字显示
extern void send_data(unsigned char command_data) ;
void yuyin(unsigned char n,unsigned char *str);
void yuyin1(unsigned char n,unsigned char *str,unsigned int x,unsigned char n1,unsigned char *st);
extern unsigned char five_ms;
extern unsigned char Sound_time;
extern unsigned int Run_time;
extern unsigned int delay;
extern unsigned char work;
bit Dir=0;
bit Start=0;
void Find_Way(void)
{
if(Start==1)
{
if(Dir==Froth)
{
if(Led_left==Black)
{ LZMove=1;RZMove=0; }
else if(Led_right==Black)
{ LZMove=0;RZMove=1; }
else if(Led_qian==Black)
{ LZMove=0;RZMove=0; }
}
else if(Dir==Back)
{
if(Led_leftH==Black)
{ LFMove =1;RFMove=0;}
else if(Led_rightH==Black)
{ LFMove =0;RFMove=1;}
else if(Led_qianH==Black)
{ LFMove =0;RFMove=0;}
}
}
else
{ LZMove=1; RZMove=1; LFMove =1; RFMove=1;}
}
void GetADCaiJi(unsigned int *ADData)
{
unsigned int i, j, Sum;
ADC_CONTR=0x80|0x05;
for(i=0; i<100; i++);
Sum = 0;
for(i=0; i<64; i++)
{
ADC_CONTR|=0x08;
while((ADC_CONTR&0x10)==0x00); //等待变成flag=1
Sum = Sum + (ADC_DATA*4+ADC_LOW2);
for(j=0; j<100;j++);
}
*ADData = Sum / 64;
}
void Do_Renwu0(void)
{
unsigned int tmp=0,lasttmp=0,tim;
unsigned char Pingheng=0;
unsigned char dei=10;//运动时间
unsigned int delayi=200,j=0,ji=0;
unsigned char PH=0;
yuyin(18,"基本部奋|测试|开始");
for(j=0;j<520;j++)
for(ji=0;ji<5000;ji++);
yuyin(9,"向C点行驶");
Sound_time=50;
Run_time=0;
Dir=Froth; Start=1;
LZMove=0;RZMove=0;
while(Run_time<j_time)
{ Find_Way(); }
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
tim=Run_time/20;
DispShuzi(0,4,tim);
Sound_time=20;
yuyin1(12,"到达C点|用时",tim,10,"寻找平衡点");
Pingheng=0;
Run_time=0;
while(1)
{
Start=0;
delay=50;
while(delay); //100ms
GetADCaiJi(&tmp);
if(tmp<lasttmp+7||tmp>lasttmp-7)
{
if(tmp>(Maxjiao+7))
{ Dir = Froth ; Start = 1 ;
delay=3;
LZMove=0;RZMove=0;
while(delay)
Find_Way();
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
Pingheng=0;
}
else if(tmp<(Maxjiao-7))
{
Dir = Back; Start = 1;
delay=3;
LFMove=0;RFMove=0;
while(delay)
Find_Way();
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
Pingheng=0;
}
else
{ Pingheng++;
if(Pingheng>=20)
{Start=0; LZMove=1;RZMove=1;LFMove =1;RFMove=1; tim=Run_time/20;DispShuzi(1,4,tim);delay=200;/*while(delay){Sound_time=2;}*/ break;}
}
}
lasttmp=tmp;
}
yuyin1(15,"到达平衡点|用时",tim,0,"");
delay=1000;
while(delay)
{
if(delay%200==190)
Sound_time=10;
}
yuyin(11,"向|B点|行驶");
// delay=200;
// while(delay);
Run_time=0;
Dir=Froth; Start=1;
LZMove=0;RZMove=0;
while(Led_left==White||Led_right==White||Led_qian==White)
Find_Way();
Start=0; { LZMove=1; RZMove=1; LFMove =1; RFMove=1;}
tim=Run_time/20;
DispShuzi(2,4,tim);
yuyin1(13,"到达|B点|用时",tim,0," ");
// delay=200;while(delay){Sound_time=2;}
delay =1000;
while(delay)
{
if(delay%200==190)
Sound_time=10;
}
yuyin(10,"向|A点行驶");
// delay=200;
// while(delay);
Run_time=0;
Dir = Back;Start = 1;
LFMove=0;RFMove=0;
while(Led_leftH==White||Led_rightH==White||Led_qianH==White)
Find_Way();
Start = 0;
Sound_time=50;
tim=Run_time/20;
DispShuzi(3,4,tim);
yuyin1(12,"到达A点|用时",tim,18,"|基本部奋|测试完毕");
work=Renwu0;
Run_time=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
}
void Do_Renwu1(void)
{
unsigned char flagph=0,Pingheng=0,i=0,PH=0;
unsigned int tmp=0,lasttmp=0,jiaodu=0,tim=0;
unsigned char si=0,phi=0; //phi为平衡次数
unsigned char dei=20;//运动时间
unsigned int delayi=20,j=0,ji=0;
yuyin(18,"发挥部奋|测试|开始");
/* delay=650;
while(delay!=0);*/
for(j=0;j<520;j++)
for(ji=0;ji<5000;ji++);
Run_time = 0;
Dir = Froth ; Start = 1;
delayi=200;
dei=20;
Sound_time=50;
LZMove=0;RZMove=0;
yuyin(12,"向|跷板|行驶");
while(Run_time<f_time)
{ /*if(Led_leftH==Black&&Led_rightH==Black&&Led_qianH==Black)
{;}
else*/
Find_Way();
}
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
while(1)
{
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
if(tmp>Maxjiao)
{
jiaodu=1.25*(tmp-Maxjiao);
DispShuzi1(1,1,jiaodu);
}
else if(tmp<=Maxjiao)
{
jiaodu=1.25*(Maxjiao-tmp);
DispShuzi2(1,1,jiaodu);
}
if(PH==0)
{
delay=50;
while(delay); //100ms
GetADCaiJi(&tmp);
if(tmp>(Maxjiao-20))
{
Dir=Froth;Start=1;
LZMove=0;RZMove=0;
delay=20;
while(delay)
Find_Way();
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
}
else
{
Dir=Back;Start=1;
LFMove=0;RFMove=0;
delay=30;
while(delay)
Find_Way();
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
PH=1;
}
}
else if(PH==1)
{
delay=50;
while(delay); //100ms
GetADCaiJi(&tmp);
if( (tmp<lasttmp+4)||(tmp>lasttmp-4))
{
if(tmp>(Maxjiao+7))
{
Dir=Froth;Start=1;
LZMove=0;RZMove=0;
delay=3;//40;//dei;
while(delay)
Find_Way();
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
Pingheng=0;
if(flagph==1)
PH=0;
flagph=0;
}
else if(tmp<(Maxjiao-7))
{
Dir=Back;Start=1;
delay=3;
LFMove=0;RFMove=0;
while(delay)
Find_Way();
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
Pingheng=0;
if(flagph==1)
PH=0;
flagph=0;
}
else
{ Pingheng++;
if(Pingheng>=25)
{
Start=0;
LZMove=1; RZMove=1; LFMove =1; RFMove=1;
if(flagph==0)
{
tim=Run_time/20;
DispShuzi(3,1,tim);
if(phi==0)
yuyin1(15,"第一次平衡|用时",tim,9,"请放|重物");
else if(phi==1)
yuyin1(15,"第二次平衡|用时",tim,0,"");
phi++;
flagph=1;
delay = 1600;
while(delay)
{
if(delay%200==0)
Sound_time=10;
}
}
}
}
}
lasttmp=tmp;
}
}
}
void yuyin(unsigned char n,unsigned char *str)
{
unsigned char i=0;
SBUF=0xFE;
while(TI==0);
TI=0;
SBUF=0x01;
while(TI==0);
TI=0;
SBUF=0x00;
while(TI==0);
TI=0;
SBUF=n;
while(TI==0);
TI=0;
for(i=0;i<n;i++)
{
SBUF=*(str+i);
while(TI==0);
TI=0;
}
}
void yuyin1(unsigned char n,unsigned char *str,unsigned int x,unsigned char n1,unsigned char *st)
{
unsigned char i=0,sen[4],xi=0;
if(x>999)
{
sen[0]=x/1000%10;
sen[1]=x/100%10;
sen[2]=x/10%10;
sen[3]=x%10;
xi=4;
}
else if(x>99)
{
sen[0]=x/100%10;
sen[1]=x/10%10;
sen[2]=x%10;
xi=3;
}
else if(x>9)
{
sen[0]=x/10%10;
sen[1]=x%10;
xi=2;
}
else
{
sen[0]=0;
sen[1]=x%10;
xi=2;
}
SBUF=0xFE;
while(TI==0);
TI=0;
SBUF=0x01;
while(TI==0);
TI=0;
SBUF=0x00;
while(TI==0);
TI=0;
SBUF=n+xi+12+n1;
while(TI==0);
TI=0;
for(i=0;i<n;i++)
{
SBUF=*(str+i);
while(TI==0);
TI=0;
}
SBUF='[';
while(TI==0);
TI=0;
SBUF='n';
while(TI==0);
TI=0;
SBUF='2';
while(TI==0);
TI=0;
SBUF=']';
while(TI==0);
TI=0;
for(i=0;i<xi;i++)
{
SBUF=sen[i]+48;
while(TI==0);
TI=0;
if(xi==(i+2))
{
SBUF=0xb5;
while(TI==0);
TI=0;
SBUF=0xe3;
while(TI==0);
TI=0;
SBUF='[';
while(TI==0);
TI=0;
SBUF='n';
while(TI==0);
TI=0;
SBUF='2';
while(TI==0);
TI=0;
SBUF=']';
while(TI==0);
TI=0;
}
}
SBUF=0xc3;
while(TI==0);
TI=0;
SBUF=0xeb;
while(TI==0);
TI=0;
for(i=0;i<n1;i++)
{
SBUF=*(st+i);
while(TI==0);
TI=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -