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

📄 红外收发测试.lst

📁 51实例大全
💻 LST
字号:
C51 COMPILER V7.06   _焱馐誣_测试                                                          06/15/2010 16:44:53 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) OBJE
                    -CT(.\obj\红外收发测试.obj)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:红外发射接收测试
   3            论坛:www.doflye.net
   4            编写:shifang
   5            日期:2009.5
   6            修改:无
   7            内容:通过2路红外发射,顺序接收,检测收发功能是否正常
   8                  
   9          ------------------------------------------------*/
  10          #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  11          
  12          sbit IRSend_A=P1^2;  //定义红外发射
  13          sbit IRSend_B=P1^3;  //定义红外发射
  14          sbit IRRev =P3^2;  //接收接口
  15          sbit LED_A = P1^6;   //演示LED
  16          sbit LED_B = P1^7;   //演示LED
  17          
  18          bit  Flag;
  19          
  20          void Init_Timer0(void);//定时器初始化
  21          void DelayUs2x(unsigned char t);
  22          /*------------------------------------------------
  23                              主函数
  24          ------------------------------------------------*/
  25          void main (void)
  26          {
  27   1      unsigned char i,pulse_num;
  28   1      
  29   1      Init_Timer0();
  30   1      IRSend_A=0; //关闭2个发射管
  31   1      IRSend_B=0;
  32   1      while (1)   //主循环
  33   1        {
  34   2        if(Flag)
  35   2          {
  36   3              pulse_num=0;
  37   3              for(i=0;i<10;i++)
  38   3                      {
  39   4              IRSend_A=1;//打开A发射
  40   4                      DelayUs2x(150);
  41   4                      if(! IRRev)
  42   4                              pulse_num++;
  43   4              IRSend_A=0;//关闭A发射
  44   4              DelayUs2x(150);
  45   4                      }
  46   3      
  47   3              if(pulse_num>6)
  48   3                 LED_A=0;//如果判断有障碍,点亮LED_A指示,否则熄灭
  49   3              else
  50   3                 LED_A=1;
  51   3      
  52   3          pulse_num=0;//清零脉冲计数
  53   3          
  54   3              for(i=0;i<10;i++)
C51 COMPILER V7.06   _焱馐誣_测试                                                          06/15/2010 16:44:53 PAGE 2   

  55   3                      {
  56   4              IRSend_B=1;//打开B发射
  57   4                      DelayUs2x(150);
  58   4                      if(! IRRev)
  59   4                          pulse_num++;
  60   4              IRSend_B=0;//关闭B发射
  61   4              DelayUs2x(150);
  62   4                      }
  63   3      
  64   3              if(pulse_num>6)
  65   3                 LED_B=0;//如果判断有障碍,点亮LED_B指示,否则熄灭
  66   3              else
  67   3                 LED_B=1;
  68   3              }
  69   2        }
  70   1      }
  71          
  72          /*------------------------------------------------
  73                              定时器初始化子程序
  74          ------------------------------------------------*/
  75          void Init_Timer0(void)
  76          {
  77   1       TMOD |= 0x01;    //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                 
  78   1       //TH0=0x00;          //给定初值
  79   1       //TL0=0x00;
  80   1       EA=1;            //总中断打开
  81   1       ET0=1;           //定时器中断打开
  82   1       TR0=1;           //定时器开关打开
  83   1      }
  84          /*------------------------------------------------
  85                           定时器中断子程序
  86          ------------------------------------------------*/
  87          void Timer0_isr(void) interrupt 1 
  88          {
  89   1      
  90   1       TH0=(65536-60000)/256;           //重新赋值 60ms
  91   1       TL0=(65536-60000)%256;
  92   1       
  93   1       Flag=!Flag;
  94   1      
  95   1      }
  96          
  97          /*------------------------------------------------
  98           uS延时函数,含有输入参数 unsigned char t,无返回值
  99           unsigned char 是定义无符号字符变量,其值的范围是
 100           0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
 101           长度如下 T=tx2+5 uS 
 102          ------------------------------------------------*/
 103          void DelayUs2x(unsigned char t)
 104          {   
 105   1       while(--t);
 106   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    126    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
C51 COMPILER V7.06   _焱馐誣_测试                                                          06/15/2010 16:44:53 PAGE 3   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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