找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5655|回复: 1
打印 上一主题 下一主题
收起左侧

通过定时器中断控制循迹小车程序

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2015-7-23 19:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>       
  2. sbit P00=P0^0;          //循迹口               
  3. sbit P01=P0^1;
  4. sbit P02=P0^2;

  5. sbit P04=P0^4;           //电机1                左轮
  6. sbit P05=P0^5;

  7. sbit P06=P0^6;           //电机2
  8. sbit P07=P0^7;
  9. unsigned int i=0,j=0;
  10. void main()
  11. {
  12.    while(1)
  13.   {       
  14.    P04=1;P05=1;P06=1; P07=1;
  15.    TMOD=0X01;
  16.    EA=1;
  17.    ET0=1;          
  18.   
  19.         if(P00==0&&P01==1&&P02==0)// 小车直走定时0.002ms                 
  20.          {
  21.          TH0=0XFF;                  //定时0.005ms
  22.          TL0=0Xfe;
  23.          TR0=1;
  24.          }
  25.         if(P00==0&&P01==0&&P02==1) //小车右转定时0.005ms          
  26.    {
  27.     TH0=0XFF;
  28.     TL0=0Xfe;                                  //0.01
  29.     TR0=1;  
  30.    }         
  31.           if(P00==1&&P01==0&&P02==0)//小车左转定时0.005ms                       
  32.    {
  33.     TH0=0XFF;
  34.     TL0=0Xfe;
  35.     TR0=1;
  36.    }
  37.     if(P00==1&&P01==1&&P02==1)        //全部检测到黑线时 车停
  38.           {
  39.            TH0=0XFF;
  40.        TL0=0Xfe;
  41.        TR0=1; }       


  42. /***********************************/
  43.          if(P00==0&&P01==1&&P02==1)//两个传感器测到 左拐
  44.           {TH0=0XFF;
  45.        TL0=0Xfe;
  46.        TR0=1; }       
  47.           if(P00==1&&P01==1&&P02==0)//两个传感器测到 左拐
  48.           {TH0=0XFF;
  49.        TL0=0Xfe;
  50.        TR0=1; }       
  51.           
  52. /**********************************/       
  53.        
  54. }
  55. }

  56. xiong() interrupt 1
  57. {         
  58.   if(P00==0&&P01==1&&P02==0)//小车直线快走  定时0.002ms                                
  59.            {
  60.     TH0=0XFF;
  61.     TL0=0Xfe;

  62.         P04=0;                                //电机1        左轮
  63.         P05=1;
  64.         P06=1;                           //电机2         右转
  65.         P07=0;
  66.          }

  67.   if(P00==0&&P01==0&&P02==1) //小车右转        定时0.005ms          
  68.    {                                       
  69.                                      
  70.     TH0=0XFF;
  71.     TL0=0Xfe;

  72.         P04=1;                        //电机1         左轮
  73.         P05=1;                        
  74.         P06=1;                      //电机2
  75.         P07=0;
  76.         i=1;
  77.    }
  78.           if(P00==0&&P01==0&&P02==0&&i==1)// 特别         出线时用
  79.                 {TH0=0XFF;
  80.                  TL0=0Xfe;
  81.                  P04=1;
  82.                  P05=1;
  83.                  P06=1;
  84.                  P07=0;
  85.                                  j=0;// q=0;w=0;
  86.                 }
  87.                                                        
  88.     if(P00==1&&P01==0&&P02==0)//小车左转定时0.005ms
  89.        {
  90.         TH0=0XFF;
  91.         TL0=0Xfe;
  92.         P04=0;                                //电机1
  93.             P05=1;
  94.                                        
  95.             P06=1;                           //电机2
  96.             P07=1;
  97.         j=1;         
  98.               }
  99.    if(P00==0&&P01==0&&P02==0&&j==1)        // 特别 出线时用
  100.       { TH0=0XFF;
  101.         TL0=0Xfe;
  102.         P04=0;
  103.         P05=1;
  104.         P06=1;
  105.         P07=1;
  106.              i=0;//q=0;w=0;   
  107.            }                                                       
  108.          if(P00==1&&P01==1&&P02==1)
  109.          {                                                //全部检测到黑线时 车停
  110.           TH0=0XFF;
  111.       TL0=0Xfe;
  112.           P04=1;          
  113.           P05=1;
  114.       P06=1;
  115.       P07=1;}
  116. /*********************************************/


  117.   if(P00==0&&P01==1&&P02==1)//两个传感器测到 左拐
  118.          {                                                                                  
  119.           TH0=0XFF;
  120.       TL0=0Xfe;
  121.           P04=1;          
  122.           P05=0;                                //  一个轮前转一个轮后转 转90
  123.       P06=1;
  124.           P07=0;

  125.           }
  126.                
  127.               if(P00==1&&P01==1&&P02==0)//两个传感器测到 右拐
  128.            {                                                                                  
  129.             TH0=0XFF;
  130.         TL0=0Xfe;                         
  131.             P04=0;          
  132.             P05=1;
  133.         P06=0;                         //        一个轮前转一个轮后转 转90
  134.         P07=1;

  135.                 }       
  136.         }
  137. /***************************************/
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:92665 发表于 2015-10-16 21:36 | 只看该作者
试了一下 很好的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表