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

📄 +

📁 51单片机配套C程序
💻
字号:
C51 COMPILER V7.10   IR_LED                                                                03/28/2009 21:47:15 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE IR_LED
OBJECT MODULE PLACED IN IR_LED.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IR_LED.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /********************************************************************************
   3          *  标题:  xl系列单片机实验仪演示程序 遥控键值解码-LED显示                      *
   4          *  文件:   xlirled.c                                                           *
   5          *  日期:  2006-1-5                                                             *
   6          *  版本:  3.0 (试验通过版)可用xl600-xl1000单片机综合试验仪试验               *
   7          *  邮箱:  sxj1974@163.com                                                      *
   8          *  网站: http://www.51c51.com    www.8951.com                                 *
   9          ********************************************************************************
  10          *  描述:                                                                       *
  11          *          遥控键值读取器                                                      *
  12          *         数码管显示, P0口为数码管的数据口 ,p2为数码管的控制位 遥控器接p3.2   *
  13          *          喇叭接p3.7  继电器接p1.0  每次按键喇叭提示                          *
  14          *         17(40h)键按下,继电器吸合。19(04h)键按下,继电器关闭。               *
  15          *                                                                              *
  16          ********************************************************************************
  17          * 【版权】 Copyright(C)深圳市学林电子有限公司 www.51c51.com                     *
  18          * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                   *
  19          *  【技术支持】请访问http://www.51c51.com/bbs/index.asp  官方论坛               *
  20          ********************************************************************************/
  21          #include <reg51.h>
  22          #include <intrins.h>
  23          #define  NOP() _nop_()  /* 定义空指令 */
  24          
  25          //SPI IO
  26          sbit MOSIO =P3^4;
  27          sbit S_CLK =P3^5;
  28          sbit R_CLK =P3^6;
  29          
  30          void IR_SHOW();
  31          void delay(unsigned char x);//x*0.14MS
  32          void delay1(unsigned char ms);
  33          void beep();
  34          void delay(unsigned int i);      //函数声名
*** WARNING C235 IN LINE 34 OF IR_LED.C: parameter 1: different types
  35          void HC595SendData(unsigned int SendVal);
  36          
  37          sbit IRIN = P3^2;
  38          sbit BEEP = P3^7;
  39          sbit RELAY= P1^3;
  40          sbit GEWEI= P2^7;
  41          sbit SHIWEI= P2^6;
  42          
  43          unsigned char IRCOM[8];
  44          unsigned char code table[16] = 
  45                                  {0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa9,0x26,0xa1,0xb1};
             -//;数码管1-9,0,a,b,c,d,e,f代码表
  46          main()
  47          {
  48   1       IE = 0x81;    //允许总中断中断,使能 INT0 外部中断
  49   1       TCON = 0x1;   //触发方式为脉冲负边沿触发
  50   1       delay(1);
  51   1      
  52   1               IRIN=1;
  53   1               BEEP=1;
C51 COMPILER V7.10   IR_LED                                                                03/28/2009 21:47:15 PAGE 2   

  54   1                       RELAY=1;
  55   1                       for(;;)
  56   1                       {
  57   2                        IR_SHOW();
  58   2                       }
  59   1      
  60   1      } //end main
  61          
  62          void IR_IN() interrupt 0 using 0
  63          {
  64   1       unsigned char i,j,k,N=0;
  65   1        EA = 0;
  66   1      I1:
  67   1        for (i=0;i<4;i++)
  68   1         {
  69   2          if (IRIN==0) break;
  70   2              if (i==3) {EA =1;return;}
  71   2         }
  72   1        delay(20);
  73   1          if (IRIN==1) goto I1;  //确认IR信号出现
  74   1        while (!IRIN)            //等 IR 变为高电平
  75   1          {delay(1);}
  76   1      
  77   1       for (j=0;j<4;j++)
  78   1       { 
  79   2        for (k=0;k<8;k++)
  80   2        {
  81   3               while (IRIN)            //等 IR 变为低电平
  82   3               {delay(1);}
  83   3               while (!IRIN)          //等 IR 变为高电平
  84   3               {delay(1);}
  85   3           while (IRIN)           //计算IR高电平时长
  86   3            {
  87   4                 delay(1);
  88   4                 N++;           
  89   4                 if (N>=30) {EA=1;return;}
  90   4                }
  91   3           IRCOM[j]=IRCOM[j] >> 1;
  92   3           if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
  93   3           N=0;
  94   3        }//end for k
  95   2       }//end for j
  96   1         
  97   1         if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}
  98   1         IRCOM[5]=IRCOM[2] & 0x0F;
  99   1         IRCOM[6]=IRCOM[2] & 0xF0;
 100   1         IRCOM[6]=IRCOM[6] >> 4;
 101   1         beep();
 102   1         EA = 1;
 103   1        
 104   1      }
 105          
 106          void IR_SHOW()
 107           {
 108   1        P0 = table[IRCOM[5]];      
 109   1        GEWEI = 0;
 110   1        SHIWEI = 1;
 111   1        delay1(4);
 112   1        P0 = table[IRCOM[6]];      
 113   1        SHIWEI = 0;
 114   1        GEWEI = 1;
 115   1        delay1(4);
C51 COMPILER V7.10   IR_LED                                                                03/28/2009 21:47:15 PAGE 3   

 116   1       }
 117          
 118          void beep()
 119          {
 120   1        unsigned char i;
 121   1        for (i=0;i<100;i++)
 122   1         {
 123   2         delay(5);
 124   2         BEEP=!BEEP;
 125   2         }    
 126   1        BEEP=1;
 127   1      }
 128          
 129          void delay(unsigned char x)//x*0.14MS
 130          {
 131   1       unsigned char i;
 132   1              while(x--)
 133   1              {
 134   2                      for (i = 0; i<13; i++) {}
 135   2              }
 136   1      }
 137          
 138          
 139          void delay1(unsigned char ms)
 140          {
 141   1       unsigned char i;
 142   1              while(ms--)
 143   1              {
 144   2                      for(i = 0; i<120; i++)
 145   2                      {
 146   3                              _nop_();
 147   3                              _nop_();
 148   3                              _nop_();
 149   3                              _nop_();
 150   3                      }
 151   2              }
 152   1      }
 153          
 154          
 155          
 156          /*********************************************************************************************************
 157          ** 函数名称: HC595SendData
 158          ** 功能描述: 向SPI总线发送数据
 159          *********************************************************************************************************/
 160          void HC595SendData(unsigned int SendVal)
 161          {  
 162   1        unsigned char i;
 163   1                      
 164   1        for(i=0;i<16;i++) 
 165   1         {
 166   2              if((SendVal<<i)&0x8000) MOSIO=1; //set dataline high
 167   2              else MOSIO=0;
 168   2       
 169   2              S_CLK=0;
 170   2              NOP();
 171   2              NOP();
 172   2              S_CLK=1;        
 173   2         }
 174   1         
 175   1              
 176   1        R_CLK=0; //set dataline low
 177   1        NOP();
C51 COMPILER V7.10   IR_LED                                                                03/28/2009 21:47:15 PAGE 4   

 178   1        NOP();
 179   1        R_CLK=1; //片选
 180   1      
 181   1      }
 182          
 183          
 184          /*
 185          ;================================
 186          ;DT9122D 遥控器
 187          
 188          ;******  红外遥控器键值表  ******
 189          
 190          ;  10     03      01      06
 191          ;  09     1D      1F      0D
 192          ;  19     1B      11      15
 193          ;  17     12      16      4C
 194          ;  40     48      04      00
 195          ;  02     05      54      4D
 196          ;  0A     1E      0E      1A
 197          ;  1C     14      0F      0C
 198          ;================================
 199          */
 200          
 201          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    361    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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