GardenRobot.c:

#include"reg52.h"

#include"intrins.h"

#define uchar unsigned char 

#define uint unsigned int

sbit magInduction1=P2^7;

sbit magInduction2=P2^6;

sbit magInduction3=P2^5;

sbit magInduction4=P2^4;

uchar Duty_left,Duty_right,i=0,j=0;

uint  time=0,s; 

sbit in1=P1^0;

sbit in2=P1^1;

sbit in3=P1^2;

sbit in4=P1^3;

sbit e1=P2^3;

sbit e2=P2^2;

sbit RX=P0^4;

sbit TX=P0^5; 

sbit jd=P3^7;

void init()

{

  TMOD=0X01;

  TH0=(65536-50)/256;

  TL0=(65536-50)%256;

  EA=1;

  ET0=1;

  TR0=1;

  e1=1;

  e2=1;

}

void init2()

{

  TMOD=0x10;

     TH1=0;

  TL1=0;

  TR1=1;

  ET1=1;

  EA=1;

}

void startmodule()

{

  uint n; 

  TX=1;

  for(n=0;n<21;n++)

    _nop_();

  TX=0; 

}

void count()

{

  time=TH1*256+TL1;

  TH1=0;

  TL1=0;

  s=(time*1.7)/100;

}

void stop()

{

  in1=0;

  in2=0;

  in3=0;

  in4=0;

}

void delay(unsigned int k)

  unsigned int x,y;

  for(x=0;x<k;x++) 

    for(y=0;y<2000;y++);

}

void turnRight()

{

  Duty_left=29;

  Duty_right=20;

  in1=1;

  in2=0;

  in3=0;

  in4=1;

}

void turnRight2()

{

  Duty_left=29;

  Duty_right=20;

  in1=1;

  in2=0;

  in3=0;

  in4=1;

}

void turnLeft()

{

  Duty_left=18;

  Duty_right=26;

  in1=0;

  in2=1;

  in3=1;

  in4=0;

}

void turnLeft2()

{

  Duty_left=20;

  Duty_right=30;

  in1=0;

  in2=1;

  in3=1;

  in4=0;

}

void forward()

{

  Duty_left=25;

  Duty_right=25;

  in1=1;

  in2=0;

  in3=1;

  in4=0;

}

void forward2()

{

  Duty_left=45;

  Duty_right=35;

  in1=1;

  in2=0;

  in3=1;

  in4=0;

}

 

void timer() interrupt 1

{

  i++;

  j++;

  if(i<=Duty_left)

    e1=1;

  else

    e1=0;

  if(i>100)

  {

    e1=1;

    i=0;

  }

  if(j<=Duty_right)

    e2=1;

  else

    e2=0;

  if(j>100)

  {

    e2=0;

    j=0;

  }

  TH0=(65536-50)/256;

  TL0=(65536-50)%256;

}

void main()

{

  init();

  init2();

  while(1)

  {

    startmodule(); 

    while(!RX);

    TR1=1;

    while(RX);

    TR1=0;

    count();

    if(magInduction1==0&&magInduction2==1&&magInduction3==1&&magInduction4==1&&s>40)

      turnRight();

    if(magInduction1==0&&magInduction2==0&&magInduction3==1&&magInduction4==1&&s>40)

      turnRight();

    if(magInduction1==1&&magInduction2==0&&magInduction3==0&&magInduction4==1&&s>40)

      forward();

    if(magInduction1==1&&magInduction2==1&&magInduction3==1&&magInduction4==1&&s>40)

      forward();

    if(magInduction1==1&&magInduction2==1&&magInduction3==0&&magInduction4==0&&s>40)

      turnLeft();

    if(magInduction1==1&&magInduction2==1&&magInduction3==1&&magInduction4==0&&s>40)

      turnLeft();

    if(magInduction2==0&&magInduction1==1&&magInduction3==1&&magInduction4==1&&s>40)

      turnRight();

    if(magInduction3==0&&magInduction1==1&&magInduction2==1&&magInduction4==1&&s>40)

      turnLeft();

    if(magInduction1==0&&magInduction2==1&&magInduction3==1&&magInduction4==1&&s<40)

    { 

      stop();

      jd=0;

      delay(30);

      jd=1;

      turnRight2();

      delay(8);

    }

    if(magInduction1==0&&magInduction2==0&&magInduction3==1&&magInduction4==1&&s<40)

    { 

      stop();

      jd=0; 

      delay(30);

      jd=1;

      turnRight2();

      delay(8);

    }

    if(magInduction1==1&&magInduction2==0&&magInduction3==0&&magInduction4==1&&s<40)

    {

      stop();

      jd=0; 

      delay(30);

      jd=1;

      forward2();

      delay(8);  

    }

    if(magInduction1==1&&magInduction2==1&&magInduction3==1&&magInduction4==1&&s<40)

    {

      stop();

      jd=0;

      delay(30);

      jd=1;

      forward2();

      delay(8);

    }

    if(magInduction1==1&&magInduction2==1&&magInduction3==0&&magInduction4==0&&s<40)

    {

      stop();

      jd=0;

      delay(30);

      jd=1;

      turnLeft2();

      delay(8);

    }

    if(magInduction1==1&&magInduction2==1&&magInduction3==1&&magInduction4==0&&s<40)

    {

      stop(); 

      jd=0;

      delay(30);

      jd=1;

      turnLeft2();

      delay(8);

    }

  }

}

源文件下载:

链接:GardenRobot.c
提取码:iu32 

基于C语言的磁引导园丁机器人源程序 --单片机应用的更多相关文章

  1. 基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)

    基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的 ...

  2. selenium2自动化测试实战--基于Python语言

    自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...

  3. 关于《selenium2自动测试实战--基于Python语言》

    关于本书的类型: 首先在我看来技术书分为两类,一类是“思想”,一类是“操作手册”. 对于思想类的书,一般作者有很多年经验积累,这类书需要细读与品位.高手读了会深有体会,豁然开朗.新手读了不止所云,甚至 ...

  4. 《Selenium2自动化测试实战--基于Python语言》 --即将面市

    发展历程: <selenium_webdriver(python)第一版>   将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...

  5. Gogs - 基于 Go 语言的自助 Git 服务

    Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务.Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs ...

  6. Ggoogle Protocol Buffer的使用 (基于C++语言)

    首先说明的是Protocol Buffle是灵活高效的.它的一个很好的优点(很重要的,我认为)就是后向兼容性--当我们扩展了了.proto文件后,我们照样可以用它来读取之前生成的文件. 之前已经写了关 ...

  7. 基于C# 语言的两个html解析器

    基于C# 语言的两个html解析器 1)Html Agility Pack http://nsoup.codeplex.com/ 代码段示例: HtmlDocument doc = new HtmlD ...

  8. springmvc国际化 基于浏览器语言的国际化配置

    当前标签: springmvc   springmvc国际化 基于浏览器语言的国际化配置 苏若年 2013-10-09 13:03 阅读:305 评论:0   SpringMVC中应用Ajax异步通讯 ...

  9. 基于JAVA语言的多线程技术

    1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资 ...

随机推荐

  1. 大数据和Hadoop时代的维度建模和Kimball数据集市

    小结: 1. Hadoop 文件系统中的存储是不可变的,换句话说,只能插入和追加记录,不能修改数据.如果你熟悉的是关系型数据仓库,这看起来可能有点奇怪.但是从内部机制看,数据库是以类似的机制工作,在一 ...

  2. [Day8] eclipse

    快捷键 1.内容辅助键  Alt+/ 2.格式化Ctrl+Shift+f 代码区域右键 -- Source – Format 3. 自动导包: Ctrl+Shift+o 如果当前类在多个包中都存在,这 ...

  3. safari手机浏览器的width:100%的自适应问题

    Tips: 调试 iPad 或 iPhone 可在设置中启动调试模式,在 Mac 中的 Safari 浏览器 同样开启开发者模式后,进行联机调试.功能彪悍. 最近在做一个页面时,发现在 iPad 的 ...

  4. day014 模块

    # 1.用于多种语言交互 编程语言通用数据 # 内置的 不需要安装 直接导入使用 import json # 导入一个json模块 # dumps loads# dump load 有持久化的功能 # ...

  5. MySql 创建索引原则

    https://blog.csdn.net/csdnones/article/details/50412603 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引 ...

  6. git中设置http代理和取消http代理

    设置http代理 git config --global https.proxy https://127.0.0.1:1080 取消http代理git config --global --unset ...

  7. python调用RPC接口

    要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...

  8. idea快捷键使用

    idea                                 eclipse project                           workspace module     ...

  9. CentOS 7 之 Systemd 入门教程:实战篇

    开机启动对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件. 如果你想让该软件开机启动,就执行下面的命令(以httpd.ser ...

  10. MySQL插入更新_ON DUPLICATE KEY UPDATE

    前提:操作的表具有主键或唯一索引 INSERT INTO:表中不存在对应的记录,则插入:若存在对应的记录,则报错: INSERT INTO IGNORE:表中不存在对应的记录,则插入:若存在对应的记录 ...