欢迎来到天天文库
浏览记录
ID:58821360
大小:12.88 KB
页数:13页
时间:2020-10-25
《RoboCup双足竞步狭窄足冠军比赛程序.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#includeunsignedintphase=0;unsignedintServoPos[6]={97,89,94,88,94,96};unsignedintHomePos[6]={97,89,94,88,94,96};#defineFGDD10//翻跟头等待时间#defineCBDD100//迈步步等待时间#defineXS10//斜身幅度#defineMBFDY15//迈步幅度1#defineMBFDEMBFDY*2//迈步幅度2#defineFGFD58//翻跟头幅度#def
2、ineMBSD15//迈步速度#defineFGSD12//翻跟头速度#defineJBHWSD50//后脚板回位速度/*-----计时器计数器1(16bit)比较匹配中断(固定周期2.5ms中断,每次中断后把PC中一个引脚置高,8次中断正好20ms8*2.5=20ms)-----*/SIGNAL(SIG_OUTPUT_COMPARE1A){PORTC
3、=(1<4、CNT0增加到和ServoPos[phase]相等时产生计时器计数器0中断,ServoPos[phase]的值决定了高电平的时间,也就是脉冲的宽度*/TCCR05、=(1<5)/*phase=0,1,2,3,4,5,6,7,分别对应了PC0,PC1,PC2,...PC7*/{phase=0;}}/*-----计时器计数器6、0(8bit)比较匹配中断(中断的时间根据OCR0中设置的ServoPos[phase]值决定,中断后把PC口8个引脚全部降低)-----*/SIGNAL(SIG_OUTPUT_COMPARE0){PORTC&=~((1<7、(1<8、(1<9、(1<10、(1<11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
4、CNT0增加到和ServoPos[phase]相等时产生计时器计数器0中断,ServoPos[phase]的值决定了高电平的时间,也就是脉冲的宽度*/TCCR0
5、=(1<5)/*phase=0,1,2,3,4,5,6,7,分别对应了PC0,PC1,PC2,...PC7*/{phase=0;}}/*-----计时器计数器
6、0(8bit)比较匹配中断(中断的时间根据OCR0中设置的ServoPos[phase]值决定,中断后把PC口8个引脚全部降低)-----*/SIGNAL(SIG_OUTPUT_COMPARE0){PORTC&=~((1<7、(1<8、(1<9、(1<10、(1<11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
7、(1<8、(1<9、(1<10、(1<11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
8、(1<9、(1<10、(1<11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
9、(1<10、(1<11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
10、(1<11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
11、(1<12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR213、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
12、us=0.512ms*//*(94-00)*16=1504us=1.504ms*//*(94+60)*16=2496us=2.496ms*//*62------>90°*//*1------>1.5°*//*15----->22.5°*//*20------>30°*//*30------>45°*//*用T2中断做的mS延时函数-----用于每个动作之间的延时*/voidwait_ms(intmsec){intcount;/*反复用途计数器变数(for句子用使用)*/TCCR2
13、=(1<14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
14、*/for(count=0;count0;i--){ServoPos[2]=ServoPos[2]+2;ServoPos[5]=ServoPos[5]+1;wait_ms(JBHWSD);}for(i=XS;i>0;i--){S
15、ervoPos[2]=ServoPos[2]-1;wait_ms(JBHWSD);}for(i=MBFDY;i>0;i--){ServoPos[0]=ServoPos[0]-1;ServoPos[1]=ServoPos[1]-1;ServoPos[3]=ServoPos[3]-1;ServoPos[4]=ServoPos[4]-1;wait_ms(MBSD);}for(i=XS;i>0;i--){ServoPos[2]=ServoPos[2]-1;ServoPos[5]=ServoPos[5]-1;wait_ms(JBHWSD);}}voidstep2(
16、void)//行进中抬右脚迈右腿右脚落地{unsignedchari;for(i
此文档下载收益归作者所有