机器人擂台赛51程序
- 格式:doc
- 大小:31.50 KB
- 文档页数:7
一、活动背景随着科技的发展,机器人技术日益成熟,为激发青少年对机器人技术的兴趣,提高他们的创新能力和实践能力,特举办本次机器人比赛活动。
二、活动主题创新未来,智慧挑战三、活动目标1. 激发青少年对机器人技术的兴趣,培养他们的创新精神和实践能力。
2. 提高我国机器人技术普及率,推动机器人教育的发展。
3. 促进青少年交流与合作,提高团队协作能力。
四、活动时间2023年10月1日至10月5日五、活动地点XX市青少年活动中心六、活动对象全国范围内热爱机器人技术的青少年(年龄在14-18岁之间)七、活动内容1. 竞赛项目(1)机器人足球比赛(2)机器人迷宫挑战赛(3)机器人创意设计比赛2. 活动流程(1)报名阶段:活动前一个月开始,通过官方网站、微信公众号等渠道进行宣传报名。
(2)培训阶段:活动前两周,组织参赛选手进行机器人基础知识培训。
(3)竞赛阶段:活动期间,进行机器人足球比赛、迷宫挑战赛和创意设计比赛。
(4)颁奖典礼:活动结束后,举行颁奖典礼,对获奖选手进行表彰。
八、活动组织1. 主办单位:XX市科学技术协会、XX市教育局2. 承办单位:XX市青少年活动中心3. 协办单位:XX市机器人爱好者协会、XX市各大高校机器人俱乐部九、活动经费1. 活动场地租赁费2. 培训讲师费用3. 竞赛器材费用4. 颁奖典礼费用5. 宣传费用十、活动宣传1. 通过官方网站、微信公众号等渠道发布活动通知。
2. 邀请各大媒体进行宣传报道。
3. 在校园、社区、公共场所张贴海报。
4. 与各大高校、企业合作,共同推广活动。
十一、活动奖励1. 机器人足球比赛:设立一等奖、二等奖、三等奖及优秀奖。
2. 机器人迷宫挑战赛:设立一等奖、二等奖、三等奖及优秀奖。
3. 机器人创意设计比赛:设立一等奖、二等奖、三等奖及优秀奖。
4. 优秀组织奖:对积极参与活动、组织有力的单位或个人进行表彰。
十二、活动总结1. 活动结束后,组织相关人员对活动进行总结,分析活动效果,提出改进意见。
第十一届职业技能大赛“机器人制作”竞赛方案第一部分竞赛规程一、竞赛名称机器人制作。
二、竞赛目的通过竞赛,考察高职院校在机械结构技术、自动控制、单片机应用技术、信息技术等领域的理论教学与实践的成果。
普及机器人技术、展示高职院校在机器人项目的制作、控制与应用等领域的风采。
激发学生对机构组装、控制原理、传感器、编程技术等相关领域的学习兴趣,拓展学生视野,丰富学生知识,提升学生的综合素质。
本次竞赛提倡自主开发、自主设计、自主完成各功能模块的搭建。
培养队员独立思考能力、团队协作意识与组织管理能力;进一步推动自动化类、电子信息类以及计算机控制类专业的课程体系、教学体系、教学内容和教学方法的改革,提高高职院校的教学质量,促进高技能人才的培养工作。
三、竞赛方式和内容(一)竞赛方式竞赛采取团体竞赛方式,每支参赛队由2名选手组成,选手须为2014年同校在籍学生,其中队长1名,性别和年级不限。
(二)竞赛内容§1、机器人及参赛队伍相关信息机器人应该安装有便于裁判操作的启动与停止按钮。
每一个比赛队伍中,只允许有一台机器人报名参赛。
应明确每台参赛机器人的指导老师和参赛选手。
机器人命名:每台机器人必须取名,并粘贴于机器人身上,用于报名、登记、标示、识别。
姓名长度不超过5个汉字,2个字母/数字算一个汉字。
外形尺寸:尺寸形状要适应比赛场地,其水平面投影的尺寸小于200mm×300mm。
传感器:在不违反规则和规范的情况下,不限制机器人传感器的类型和数量。
动力:请在每组比赛点名前为机器人充好蓄电池。
点名检录后,不得充电。
其他:机器人不得伤害人,不得损坏场地、景点与环境。
§2、场地、路线、环境§2.1场地比赛场地约为2.4m×4.8m,采用背胶亚膜绿色喷绘,场地上引导线为黑色电工胶布黏贴。
场地线路有宽度约20mm的黑色引导线,用以引导机器人。
整个场地参考2014年驾驶员考试科目二的路线图设置,具体场地路线图如附图所示分为起止区、半坡起步区、侧方停车区、直角转弯及S转弯区、倒车入库区共五个部分组成。
机器人武术擂台赛项目竞赛规程一、总则1.1 竞赛名称机器人武术擂台赛1.2 竞赛目的本项赛事的目的在于促进智能机器人技术(尤其是自主识别、自主决策技术)的普及。
参赛队需要在规则范围内以各自组装或者自制的自主机器人互相搏击,并争取在比赛中获胜,以对抗性竞技的形式来推动相关机器人技术在大学生、青少年中的普及与发展。
本项赛事未来的发展目标是:比赛中,两个使用双腿自主行走的仿人形机器人互相搏击并将对方打倒或者打下擂台。
1.3 竞赛内容概述在指定的擂台上有双方机器人和 5 个中国象棋棋子。
双方机器人模拟中国古代擂台搏击的规则,互相击打或者推挤。
如果一方机器人整体离开擂台区域或者不能再继续行动,则另一方获胜。
如果双方均未离开擂台且都能自主移动,则在比赛时间结束后,推下擂台上象棋棋子数量多的一方获胜,否则双方判为平局。
本规则的原则是规定参赛队不能做的方面。
也就是说,本规则没有明确禁止的做法均是允许的,除非技术委员会认为该事项可能危害二、场地和机器人2.1 比赛场地及道具2.1.1 场地、道具规格及说明1. 比赛场地(即擂台,如图 1 所示)大小为长、宽分别为是2400 ,高150 的正方形矮台,台上表面即为擂台场地。
底色从外侧四角到中心分别为纯黑到纯白渐变的灰度。
场地的两个角落设有坡道,机器人从出发区启动后,沿着该坡道走上擂台。
场地四周围0.5 米处有高400 的方形白色围栏。
比赛开始后,围栏内区域不得有任何障碍物或人。
图1 擂台赛场地整体3D 效果2. 场地中心的红色“武”字不影响灰度渐变效果,只是相应的灰度3. 出发区及坡道用正蓝色和正黄色颜色涂敷。
出发区平地尺寸为300x400。
4. 出发坡道水平长度为400,宽度为400,坡道顶端高度与擂台平齐,即150。
图2 主要尺寸5. 场地的材质为木质,场地表面最大承重能力50。
场地表面的材料为亚光膜,各种颜色和线条用计算机彩色喷绘的形式产生。
参赛队可以从技术委员会指定的厂家购买场地表面材料,也可以在官方讨论区下载标准图纸后自行制作(注意选择精度较高的“写真” ,而不是布面料、精度较低的“喷绘” )。
编程机器人比赛流程English Answer:1. Team Formation:Teams of 2-4 members are formed.Teams can be composed of students from different schools or backgrounds.Each team selects a team name and a project leader.2. Project Definition:Teams identify a specific challenge or problem they want to address with their robot.They define the scope of their project, including the robot's goals, design, and functionality.3. Robot Design and Construction:Teams design and build their robots using a variety of materials, including LEGO, metal, and electronics.They utilize engineering principles and problem-solving skills to create robots that meet their project requirements.4. Programming the Robot:Teams program their robots using a specific programming language or environment.They develop algorithms and write code to control the robot's movements, sensors, and decision-making capabilities.5. Testing and Debugging:Teams thoroughly test their robots to ensure they function as intended.They identify and fix any bugs or errors in the robot's design, construction, or programming.6. Competition Day:Teams bring their robots to the competition venue and participate in a series of challenges or tasks.Robots are scored based on their performance, functionality, and innovative design.7. Judging and Awards:A panel of judges evaluates the robots and teams based on predetermined criteria.Teams are recognized and awarded prizes for their achievements in various categories.8. Post-Competition:Teams reflect on their experience and identify areas for improvement.They may continue to refine their robots and participate in future competitions.中文回答:1. 队伍组建:组建由2-4名成员组成的队伍。
机器人武术擂台赛规则第一章:赛事组织与参与条件第一节:赛事组织1.1赛事组织方负责赛事的筹备、组织、宣传和安全保障工作。
1.2赛事组织方应确保赛事的公平、公正和公开性,并确保赛事的规则和程序得到严格遵守。
第二节:参与条件2.1 参赛机器人必须符合国际机器人联合会(Robotic Union)的机器人竞赛技术规范。
2.2参赛机器人必须经过严格的安全检测,确保不会对观众和其他机器人造成伤害。
第二章:竞赛规则第一节:擂台赛场1.1擂台赛场由一个平面矩形空间构成,边长为10米,由柔软的材料覆盖以保证安全性。
1.2赛场上设有四个角区,角区大小为0.5米×0.5米,用于记录机器人被撞落的次数。
1.3赛场周围设有防护栏,并设置观众席以确保观赛安全。
第二节:比赛流程2.1比赛采取单败淘汰制,每场比赛为三回合。
2.2每回合比赛时间为3分钟,两名机器人在赛场上进行攻防。
2.3每回合结束后,裁判将根据机器人的攻击性、防御性、技术水平和判定依据等进行评分,并宣布获胜者。
2.4若每回合结束时无法确定获胜者,则进入加时赛。
加时赛时间为1分钟,加时赛结束后裁判根据机器人表现评定胜负。
第三节:机器人规则3.1机器人必须经过严格检测,并符合相关机器人竞赛技术规范。
3.2机器人的高度不能超过1.5米,重量不能超过100千克。
3.3机器人不能携带任何可爆炸的、易燃的或具有伤害性的物质。
第四节:裁判规则4.1赛事组织方将选拔经验丰富的裁判进行比赛裁判工作。
4.2裁判需公正、客观、严格按照规则进行判定,确保比赛的公平性。
4.3裁判有权对违反规则的机器人进行警告、扣分或直接判败等惩罚措施。
第三章:奖励与荣誉第一节:奖励1.1比赛设立冠军、亚军和季军奖励,分别颁发金牌、银牌和铜牌。
1.2获胜机器人和队伍将获得丰厚的奖金和相关荣誉。
第二节:荣誉2.1获胜机器人和队伍将获得机器人武术擂台赛冠军的荣誉称号。
2.2赛事组织方将向获胜的机器人和队伍发出荣誉证书和纪念品。
学生机器人比赛方案近年来,机器人技术的飞速发展使得机器人比赛成为许多学生们热衷的活动之一。
机器人比赛不仅激发了学生对科学技术的兴趣,还培养了他们的创新思维和团队合作精神。
在此,我将提出一个全面的学生机器人比赛方案。
(字数:69)一、赛事类型及规则首先,选择适合学生参与的机器人比赛类型。
考虑到学生的水平和兴趣,可以选择任务型比赛,如迷宫寻踪、足球机器人比赛或航拍无人机竞赛等。
比赛规则应设定明确,包括匹配时间、场地尺寸、参赛队伍规模等。
二、赛事组织与推广为了提高参与度和竞争性,需要制定赛事组织与推广方案。
建立一个专业的组委会,负责比赛的筹备、组织、评审和奖品设置等工作。
另外,组委会可与相关学校合作,推广比赛项目,吸引更多学生参与。
(字数:75)三、培训与指导为了确保比赛的公平性和学生的参与度,提供培训和指导十分重要。
组委会可以邀请专家进行机器人制作工作坊,教授学生基本的机器人知识和操控技能。
此外,建议设立导师制度,由老师或资深学生为初学者提供一对一的指导和支持。
四、资源支持机器人制作需要大量的资源支持。
组委会可以联系企业或相关机构,寻求赞助和合作。
赞助商可以提供器材、设备和资金。
同时,学校可以为比赛设置奖金和荣誉称号,以增加学生投入的积极性。
(字数:56)五、团队合作机器人比赛鼓励学生之间的团队合作。
建议将参赛队伍限定为两至四人之间,以鼓励学生相互配合、分工合作,并培养他们的合作能力。
此外,组织团队间友谊赛和交流活动,加强学生之间的交流与学习。
六、创新与设计机器人比赛强调学生的创新能力和设计思维。
鼓励学生用不同的材料和技术制作机器人,培养他们的创造力与问题解决能力。
评审团应设立创新和设计方面的专项奖,以鼓励学生在机器人制作中独具创意。
(字数:57)七、安全措施机器人比赛涉及到电子设备和机械装置,需制定一系列安全措施保障参赛学生的安全。
比如为比赛场地设置防护措施,要求参赛队伍佩戴安全防护设备。
同时,要加强对参赛队伍的安全教育,提醒他们遵守比赛规则和操作规范。
#include<reg52.h>#include<math.h>#define uchar unsigned char#define uint unsigned int#define TIME 5500sbit en1=P1^4;sbit en2=P1^5;sbit in11=P1^1;sbit in12=P1^0;sbit in21=P1^3;sbit in22=P1^2;sbit s1=P0^1;int c1=1000,t1,t2,f1,f2,flag1,flag2;void delay(uchar t) //ms延时{uchar a,b;for(a=t;a>0;a--)for(b=110;b>0;b--);}void init() //初始化函数{TH0=(65536-c1)/256;TL0=(65536-c1)%256;in11=0;in12=0;in21=0;in22=0;en1=0;en2=0;}void DJ(char num,char speed)//电机控制函数{if(speed>=-100&&speed<=100){switch(num){case 1: f1=abs(speed);if(speed>0){in11=1;in12=0;}else{in11=0;in12=1;}break;case 2: f2=abs(speed);if(speed>0){in21=1;in22=0;}else{in21=0;in22=1;}break;default: break;}}}void main(){TMOD=0x02;EA=1;init();ET0=1;TR0=1;DJ(1,100);DJ(2,100);delay(5000);while(1){uint m,n;/* P3=0;delay(1);m=P3;m&=0x0f;switch(m) //底部红外防跌落检测{case 0x01: DJ(1,-100); // 1:右转+后退DJ(2,-100);delay(TIME);DJ(1,100);DJ(2,-100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x08: DJ(1,-100); // 4:左转+后退DJ(2,-100);delay(TIME);DJ(1,100) ;DJ(2,-100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x02: DJ(1,100); // 2:左转+前进DJ(2,100);delay(3000);DJ(1,100);DJ(2,20);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x04: DJ(1,100); // 3:右转+前进DJ(2,100);delay(3000);DJ(1,20);DJ(2,100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x09: DJ(1,-100); // 1、4:后退DJ(2,-100);delay(TIME);DJ(1,-100);DJ(2,100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x06: DJ(1,100); // 2、3:前进DJ(2,100);delay(TIME);DJ(1,-100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x05: DJ(1,100); // 1、3:右转DJ(2,50);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x0a: DJ(1,50); // 2、4:左转DJ(2,100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x03: DJ(1,100); // 1、2:右转DJ(2,70);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x0c: DJ(1,70); // 3、4:左转DJ(2,100);delay(TIME);DJ(1,100);DJ(2,100);break;case 0x0f: DJ(1,100); // 1、2、3、4:前进DJ(2,100);break;default: DJ(1,100);DJ(2,100);break;}*/P0=0xff;delay(1);n=P0;n|=0xc0;switch(n) //红外避障检测{case 0xfe: DJ(1,100); // 红外1:左转DJ(2,-100);DJ(1,-100);DJ (2,-100);break;case 0xfd: DJ(1,100); // 红外2:右转DJ(2,-100);delay(5000);DJ(1,100);DJ (2,100);break;case 0xfb: DJ(1,-70); // 红外3:右后DJ(2,-100);delay(500);DJ(1,100);DJ(2,100);break;case 0xf7: DJ(1,-70); // 红外4:左后DJ(2,-100);delay(500);DJ(1,100);DJ(2,100);break;case 0xef: DJ(1,100); // 红外5:原地右转DJ(2,-100);delay(5500);DJ(1,100);DJ(2,100);break;case 0xdf: DJ(1,-100); // 红外6:原地左转DJ(2,100);delay(5500);DJ(1,100);DJ(2,100);break;case 0xfc: D J(1,100); // 红外1、2:全速前进DJ(2,100);delay(500);DJ(1,100);DJ(2,100);break;case 0xf3: DJ(1,100); // 红外3、4:全速后退DJ(2,100);delay(500);DJ(1,100);break;default: DJ(1,100);DJ(2,100);break;}}}void timer0()interrupt 1 using 1 //中断服务程序{if(c1==0){flag1=f1;flag2=f2;}if(c1<flag1)en1=1;else en1=0;c1++;if(c1<flag2)en2=1;else en2=0;if(c1>=100)c1=0;}。
金沙滩51单片机比赛计分牌设计金沙滩51单片机比赛计分牌的设计一般需要分为硬件设计和软件程序设计两部分。
硬件设计包括:主控板、LED显示屏、按键模块、电源模块等。
主控板可以选用51单片机,其余的硬件模块则可以模块化设计,方便调试和维护。
软件程序设计包括:计分显示功能、时间计时器、按键控制等。
基于51单片机的软件设计通常采用C语言实现,需要与硬件设计相匹配。
下面是一个简单的示例程序:```#include<reg51.h>//定义引脚连接关系#define DATAPORT P0 //定义数据输入口#define RS P2_0 //定义寄存器选择#define RW P2_1 //定义读写选择#define E P2_2 //定义使能信号//定义全局变量unsigned char code SlectedPlace[] = {0x80,0xc0};unsigned char code CommCode[] = {0x38,0x0c,0x06,0x01,0x80,0x00};unsigned char NumCount[] = {0,1,2,3,4,5,6,7,8,9};//数字映射unsigned char SlectedInputPlace;//数据输入地址unsigned char TempSelectPlace;//数据显示地址//声明函数void CommandWrite(unsigned char);void DataWrite(unsigned char);void Delay(unsigned int);void ShowNum(unsigned char);void main(void){unsigned int CountTime;//计数变量unsigned char CountNum;//计数(分/秒)SlectedInputPlace = 0x0f;//数据输入地址TempSelectPlace = 0x80;//数据显示位置CommandWrite(0x38);//液晶显示模式设置:显示状态,两行显示CommandWrite(0x0c);//显示控制:开显示,不显示光标while (1){//计时次数达到60秒或者达到60分钟,计数清零if (CountNum == 60){CountNum = 0;CommandWrite(SlectedPlace[0]);//清零计数ShowNum(CountNum);}if (CountTime == 3600)//计数达到一小时{CountTime = 0;//计时清零TempSelectPlace = SlectedPlace[1];//时间显示移位CommandWrite(TempSelectPlace);ShowNum(++CountNum);}//按键中断检测if(P3_1==0)//按下了计数器按键{Delay(100);//消抖CountTime++;//计数器加一TempSelectPlace = SlectedPlace[0];//选择计数器显示位置 CommandWrite(TempSelectPlace);//清空原来计数器的内容 ShowNum(CountTime%60);}}}//命令写入函数void CommandWrite(unsigned char CommData){Delay(5);RS = 0;RW = 0;E = 0;DATAPORT = CommData;Delay(5);E = 1;Delay(5);E = 0;}//数据写入函数void DataWrite(unsigned char Data){Delay(5);RS= 1;RW = 0;E = 0;DATAPORT = Data;Delay(5);E = 1;Delay(5);E = 0;}//数字显示函数void ShowNum(unsigned char ShowData){unsigned char shiwei, gewei;//十位,各位shiwei = ShowData / 10;//分解十位数字gewei = ShowData % 10;//分解个位数字DataWrite(0x30+shiwei);DataWrite(0x30+gewei);}//延时函数void Delay(unsigned int i){unsigned int j,k;for(j=0;j<i;j++){for(k=0;k<110;k++);}}```以上是一个简单的设计示例,具体的实现方式还需要根据具体的需求进行调整和优化。
/*机器人擂台赛51程序*****************************************//*使用芯片:AT89S52 或者STC89C52 或A T89S51 STC89C51*//*晶振:11.0592MHZ****************************************//*编译环境:Keil*************************************//*作者:wangzhian yuhao******************************//*时间:20120526*************************************//*机器人底座四个角下面各有一个灰度传感器,正前面对称安装两个红外传感器,后面,左面右面个一个传感器*//*电机电压为12V直流减速电机,驱动为L298N模块*//*程序应尽量避免电机转向的突然变化,电机为高速蜗杆减速电机,转速高,电压高,突然转向容易闪火花,烧坏电机*/#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define con P0uchar sj,sec,count;uchar sj1,sec1,count1;uchar sj2,sec2,count2;uchar sj3,sec3,count3;uchar sj4,sec4,count4;uchar sj5,sec5,count5;uint a,b,m;/*==============机器人电路接线图=====================*//*四个灰度传感器,从左到右,序号从0到3,为P2口的低四位,遇到遮挡物返回为低电平*/sbit f0=P2^7;sbit f1=P2^6;sbit f2=P2^5;sbit f3=P2^4;/*五个红外传感器,从左到右,序号从0到3,为P2口的高四位,检测到目标后返回是低电平*/sbit f4=P2^3;sbit f5=P2^2;sbit f6=P2^1;sbit f7=P2^0;sbit f8=P1^3;int z[]={0xaa,0x55,0x5a,0xa5,0xe5,0xb5,0xad,0xa7,0xda,0x7a,0x5e,0x5b};//z[0]前进0xaa,二进制为10101010//z[1]后退0x55,二进制为01010101//z[2]左转0x5a,二进制为01011010//z[3]右转0xa5,二进制为10100101//z[4]沿左后轮顺时针转0xe5,二进制为11100101//z[5]沿左前轮顺时针转0xb5,二进制为10110101//z[6]沿右前轮顺时针转0xad,二进制为10101101//z[7]沿右后轮顺时针转0xa7,二进制为10100111//z[8]沿左后轮逆时针转0xda,二进制为11011010//z[9]沿左前轮逆时针转0x7a,二进制为01111010//z[10]沿右前轮逆时针转0x5e,二进制为01011110//z[11]沿右前轮逆时针转0x5b,二进制为01011011int hdjc();//灰度检测int hwjc();//红外检测void zttz();//姿态调整void xzsm();//扫描void xzsm1();//旋转扫描void jingong();//进攻void delay(uint i);void main(){m=0;sec1=2;//一秒count1=0;//1代表10微秒,sj1=20*sec1+count1;//左转时间sec2=2;count2=0;sj2=20*sec2+count2;//前进时间sec3=2;count3=0;sj3=20*sec3+count3;//扫描前进时间sec4=3;count4=0;sj4=20*sec4+count4;//扫描旋转时间sec5=1;count5=10;sj5=20*sec5+count5;//扫描旋转时间TMOD=0x01;IE=0x82;TH0=(65536-50000)/256;TL0=(65536-50000)%256;//左转45度/*con=z[2];count=0;sec=0;//秒置0TR0=1;//定时器1开始工作do{a=hdjc();//灰度检测b=hwjc();//红外检测sj=sec*20+count;}while((a==0)&&((b==0)||(b==4))&&(sj<=sj1));TR0=0;//定时器1停止工作*///前进到擂台中间con=z[0];count=0;sec=0;//秒置0TR0=1;//定时器1开始工作do{a=hdjc();//灰度检测b=hwjc();//红外检测sj=sec*20+count;}while((a==0)&&(b==0)&&(sj<=sj2));TR0=0;//定时器1停止工作a=hdjc();b=hwjc();while(1){if((a==0)||(a==5)||(a==8)){if(b==0)xzsm();//未遇到边沿,未遇到敌人,旋转扫描elseif((b==1)||(b==2))xzsm1();elseif((b==3)||(b==4))jingong();//遇到敌人,进攻}elsezttz();//遇到边沿,但没发现敌人,调整姿态}void delay(uint i){uint x,y;for(x=i;x>0;x--)for(y=110;y>0;y--);}//灰度检测int hdjc(){int i=0;if((f3==0)&&(f2==0)&&(f1==0)&&(f0==1)) i=1;//0001,左后遇到边沿if((f3==0)&&(f2==0)&&(f1==1)&&(f0==0)) i=2;//0010,左前遇到边沿if((f3==0)&&(f2==0)&&(f1==1)&&(f0==1)) i=6;//0011,左边两个都遇到边沿if((f3==0)&&(f2==1)&&(f1==0)&&(f0==0)) i=3;//0100,右前遇到边沿if((f3==0)&&(f2==1)&&(f1==1)&&(f0==1)) i=8;//0110,前面两个都遇到边沿if((f3==1)&&(f2==0)&&(f1==0)&&(f0==0)) i=4;//1000,右后遇到边沿if((f3==1)&&(f2==0)&&(f1==0)&&(f0==1)) i=5;//1001,后面两个都遇到边沿if((f3==1)&&(f2==1)&&(f1==0)&&(f0==0)) i=7;//1100,右边都两个遇到边沿return(i);}//红外检测int hwjc(){int i=0;if((f5==0)&&(f6==0)) i=3;else{if((f4==0)||(f5==0)) i=1,m=1;if((f6==0)||(f7==0)) i=2,m=2;}if(f8==0) i=4;return(i);}//旋转扫描函数void xzsm(){int j,k;k=0;do{//前进扫描if(j>=1){if(a==0)con=z[0];if(a==5)con=z[0];elseif(a==8)con=z[1];}elsej++;/*{con=z[1];j++;}elsecon=z[0];*/count=0;sec=0;//秒置0TR0=1;//定时器1开始工作do{a=hdjc();//灰度检测b=hwjc();//红外检测sj=sec*20+count;//计时}while((a==0)&&(b==0)&&(sj<=sj3));//发现边沿,敌人,到达定时,则跳出TR0=0;//定时器1停止工作if((a==0)&&(b==0)){con=z[3];count=0;//100毫秒置0sec=0;//秒置0TR0=1;do{a=hdjc();//灰度检测b=hwjc();//红外检测sj=sec*20+count;//计时}while((a==0)&&(b==0)&&(sj<=sj4));//发现边沿,敌人,到达定时,则跳出TR0=0;//定时器1停止工作}}while(((a==0)||(a==5)||(a==8))&&(b==0));//发现边沿,敌人,则跳出}void xzsm1(){if(m==1)con=z[2];elseif(m==2)con=z[3];count=0;//100毫秒置0sec=0;//秒置0TR0=1;do{a=hdjc();//灰度检测b=hwjc();//红外检测sj=sec*20+count;//计时}while((a==0)&&(b!=0)&&(b!=3)&&(b!=4)&&(sj<=sj5));//发现边沿,敌人,到达定时,则跳出TR0=0;//定时器1停止工作if(sj>sj5)do{con=0x00;}while(!((f4==1)&&(f7==1)));}//姿态调整函数void zttz(){do{switch(a){case 1:con=z[0];delay(400);con=z[3];delay(400);con=z[0];break;//前进,右转,后退case 2:con=z[1];delay(400);con=z[2];delay(400);con=z[1];break;//后退,左转,前进case 3:con=z[1];delay(400);con=z[3];delay(400);con=z[1];break;//后退,右转,前进case 4:con=z[0];delay(400);con=z[2];delay(400);con=z[0];break;//前进,左转,后退case 6:con=z[3];delay(900);con=z[1];break;case 7:con=z[2];delay(900);con=z[1];break;}a=hdjc();b=hwjc();}while((a!=0)&&(a!=5)&&(a!=8)); //调整姿态,正对边沿跳出}//进攻函数void jingong(){do{switch(b){case 3:con=z[0];break;case 4:con=z[1];break;}a=hdjc();b=hwjc();}while((a==0)&&((b==3)||(b==4)));}void timer0()interrupt 1 using 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;sec++;if(sec==60)sec=0;}}。