⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 双红外发射壁障原理测试.lst

📁 LY-51S c语言 程序
💻 LST
字号:
C51 COMPILER V7.06   薩_焱鈅_蒧_谡_訽理测试                                                07/12/2010 11:27:25 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 薩_焱鈅_蒧_谡_訽理测试
OBJECT MODULE PLACED IN .\obj\双红外发射壁障原理测试.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 双红外发射壁障原理测试.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\双红外发射壁
                    -障原理测试.lst) OBJECT(.\obj\双红外发射壁障原理测试.obj)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:红外发射接收测试
   3            论坛:www.doflye.net
   4            编写:shifang
   5            日期:2009.5
   6            修改:无
   7            内容:通过2路红外发射,顺序接收,检测收发功能是否正常
   8                  用手遮挡对应的发射管,用共阳数码管的a、d端模拟左右2端
   9                          每60ms分别检测2路发射,通过每组发射10个脉冲,如果接收到的脉冲个数大于6,表明有遮挡存在
  10          ------------------------------------------------*/
  11          #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  12          /*------------------------------------------------
  13                        硬件端口连接定义
  14          ------------------------------------------------*/
  15          
  16          #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
  17          
  18          sbit IRSend_A=P1^2;  //定义红外发射 A
  19          sbit IRSend_B=P1^3;  //定义红外发射 B
  20          sbit IRRev =P3^2;    //接收接口
  21          
  22          
  23          bit  Flag;
  24          bit  Left_Flag;  //定义 是否存在遮挡标志位。为1表示有遮挡
  25          bit  Right_Flag;
  26          /*------------------------------------------------
  27                            函数声明
  28          ------------------------------------------------*/
  29          void Init_Timer0(void);//定时器初始化
  30          void DelayUs2x(unsigned char t);
  31          void IR_Send_Rev (void);
  32          /*------------------------------------------------
  33                              主函数
  34          ------------------------------------------------*/
  35          void main (void)
  36          {
  37   1      
  38   1        Init_Timer0();
  39   1      
  40   1      while (1)   //主循环
  41   1        {
  42   2        if(Flag)
  43   2           {
  44   3                
  45   3                IR_Send_Rev ();
  46   3      
  47   3                if(Right_Flag)   //利用数码管的a,和d 段的亮灭表示左右遮挡情况
  48   3                  DataPort |=0x08;
  49   3                else
  50   3                  DataPort &=0x01;
  51   3      
  52   3            if(Left_Flag)
  53   3                  DataPort |=0x01;
  54   3                else
C51 COMPILER V7.06   薩_焱鈅_蒧_谡_訽理测试                                                07/12/2010 11:27:25 PAGE 2   

  55   3                  DataPort &=0x08;                            
  56   3               }
  57   2        }
  58   1      }
  59          
  60          /*------------------------------------------------
  61                              定时器初始化子程序
  62          ------------------------------------------------*/
  63          void Init_Timer0(void)
  64          {
  65   1       TMOD |= 0x01;    //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                 
  66   1       //TH0=0x00;          //给定初值
  67   1       //TL0=0x00;
  68   1       EA=1;            //总中断打开
  69   1       ET0=1;           //定时器中断打开
  70   1       TR0=1;           //定时器开关打开
  71   1      }
  72          /*------------------------------------------------
  73                           定时器中断子程序
  74          ------------------------------------------------*/
  75          void Timer0_isr(void) interrupt 1 
  76          {
  77   1      
  78   1       TH0=(65536-60000)/256;           //重新赋值 60ms
  79   1       TL0=(65536-60000)%256;
  80   1       
  81   1       Flag=!Flag;
  82   1      
  83   1      }
  84          
  85          /*------------------------------------------------
  86           uS延时函数,含有输入参数 unsigned char t,无返回值
  87           unsigned char 是定义无符号字符变量,其值的范围是
  88           0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  89           长度如下 T=tx2+5 uS 
  90          ------------------------------------------------*/
  91          void DelayUs2x(unsigned char t)
  92          {   
  93   1       while(--t);
  94   1      }
  95          /*------------------------------------------------
  96                       2路红外发射接收函数
  97          通过每组发射10个脉冲,如果接收到的脉冲个数大于6,
  98          表明有遮挡存在,通过2路发射接收得到遮挡结果组合,
  99          可以判断障碍物位置。从而进行前进、后退、左转、右转
 100          ------------------------------------------------*/
 101          void IR_Send_Rev (void)
 102          {
 103   1      unsigned char i,pulse_num;
 104   1      
 105   1      IRSend_A=0; //关闭2个发射管
 106   1      IRSend_B=0;
 107   1      
 108   1          pulse_num=0;//清零脉冲计数 
 109   1              for(i=0;i<10;i++)
 110   1                      {
 111   2              IRSend_B=1;//打开B发射
 112   2                      DelayUs2x(150);
 113   2                      if(! IRRev)
 114   2                          pulse_num++;
 115   2              IRSend_B=0;//关闭B发射
 116   2              DelayUs2x(150);
C51 COMPILER V7.06   薩_焱鈅_蒧_谡_訽理测试                                                07/12/2010 11:27:25 PAGE 3   

 117   2                      }
 118   1      
 119   1              if(pulse_num>6)
 120   1                 Left_Flag=1;//如果判断有障碍,点亮LED_B指示,否则熄灭
 121   1              else
 122   1                 Left_Flag=0;
 123   1      
 124   1              pulse_num=0;   //脉冲计数
 125   1              for(i=0;i<10;i++)
 126   1                      {
 127   2              IRSend_A=1;//打开A发射
 128   2                      DelayUs2x(150);
 129   2                      if(! IRRev)
 130   2                              pulse_num++;
 131   2              IRSend_A=0;//关闭A发射
 132   2              DelayUs2x(150);
 133   2                      }
 134   1              if(pulse_num>6)
 135   1                 Right_Flag=1;//如果判断有障碍,点亮LED_A指示,否则熄灭
 136   1              else
 137   1                 Right_Flag=0;
 138   1      
 139   1      
 140   1      
 141   1      
 142   1      }
 143          
 144          
 145          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    133    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -