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

📄 hongwai.lst

📁 用51MUC控制的红外遥控器键值数码管显示程序
💻 LST
字号:
C51 COMPILER V7.10   HONGWAI                                                               10/13/2008 20:41:42 PAGE 1   


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

line level    source

   1          /******************************************************************
   2          /*                                                                *
   3          /* OK400C单片机开发系统演示程序                                                               *
   4          /*                                                                *
   5          /* 版本: V2.0 (2007/11/20)                                       *
   6          /* 作者: 高山流水 (Email: aoke999@sohu.com)                      *
   7          /* 网站: www.aokemcu.cn(奥科电子)                                *
   8          /*                                                                *
   9          /*                                                                *
  10          /******************************************************************/
  11          
  12          #include <reg52.h>       //51芯片管脚定义头文件
  13          #include <intrins.h>     //内部包含延时函数 _nop_();
  14          
  15          #define uchar unsigned char
  16          #define uint  unsigned int
  17          
  18          sbit dula=P2^6;
  19          sbit wela=P2^7;
  20          
  21          //#define       DELAYNUM        40      //该数值可以调节显示的速度
  22          
  23          sbit  IRIN = P3^2;         //红外接收器数据线
  24          sbit  BEEP = P2^3;         //蜂鸣器驱动线
  25          
  26          
  27          //uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
  28          uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  29          uchar IRCOM[]={0x00,0x00,0x00,0x00,0x10,0x10};
  30          uchar  dis[8];
  31          
  32          void delay(unsigned char x);
  33          void  display();
  34          void beep();
  35          
  36          void dis8(uchar r,uchar c)
  37          {
  38   1         dula=0;
  39   1         P0=table[r];         
  40   1         dula=1;
  41   1         dula=0;
  42   1      
  43   1         wela=0;
  44   1         P0=~(1<<c);
  45   1         wela=1;
  46   1         wela=0;
  47   1         delay(5);
  48   1      }
  49          
  50          /*******************************************************
  51          *                                                      *
  52          * 主函数                                               *
  53          *                                                      *
  54          *******************************************************/
  55          main(void)
C51 COMPILER V7.10   HONGWAI                                                               10/13/2008 20:41:42 PAGE 2   

  56          {
  57   1      //      uchar k;
  58   1      
  59   1              EA=1;
  60   1              ET1=1;
  61   1              EX0=1;
  62   1              while(1)
  63   1              {
  64   2                      dis8(IRCOM[4],5);
  65   2                      dis8(IRCOM[5],4);
  66   2              }
  67   1      
  68   1      } //end of main()
  69          
  70          
  71          void IR_IN() interrupt 0 //using 0
  72          {
  73   1              unsigned char j,k,N=0;
  74   1              EA = 0;   
  75   1              delay(10);
  76   1              
  77   1              if (IRIN==1) 
  78   1              {
  79   2                      EA =1;
  80   2                      return;
  81   2              } 
  82   1                              //确认IR信号出现
  83   1              while (!IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。
  84   1              {
  85   2                      delay(1);
  86   2              }
  87   1              while (IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。
  88   1              {
  89   2                      delay(1);
  90   2              }
  91   1              for (j=0;j<4;j++)         //收集四组数据
  92   1              { 
  93   2                      for (k=0;k<8;k++)        //每组数据有8位
  94   2                      {
  95   3                              while (IRIN)            //等 IR 变为低电平,跳过4.5ms的前导高电平信号。
  96   3                              {
  97   4                                      delay(1);
  98   4                              }
  99   3                              while (!IRIN)          //等 IR 变为高电平
 100   3                              {
 101   4                                      delay(1);
 102   4                              }
 103   3                              while (IRIN)           //计算IR高电平时长
 104   3                              {
 105   4                                      delay(1);
 106   4                                      N++;   
 107   4                              }                        //高电平计数完毕     
 108   3                              if (N>=30)
 109   3                              { 
 110   4                                      EA=1;
 111   4                                      return;                  //0.14ms计数过长自动离开。
 112   4                              }
 113   3                              IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”
 114   3                              if (N>7) 
 115   3                              {
 116   4                                      IRCOM[j] = IRCOM[j] | 0x80;
 117   4                              }                                               //数据最高位补“
C51 COMPILER V7.10   HONGWAI                                                               10/13/2008 20:41:42 PAGE 3   

 118   3                              N=0;
 119   3                      }//end for k
 120   2              }//end for j
 121   1              /*
 122   1              if (IRCOM[2]!=~IRCOM[3])   //接收时间是否正确
 123   1          { 
 124   1            EA=1;
 125   1            return; 
 126   1          }
 127   1              
 128   1              if(IRCOM[0]!=0x00)         //比较用户码
 129   1          { 
 130   1            EA=1;
 131   1            return; 
 132   1          }*/
 133   1              IRCOM[4]=IRCOM[2] & 0x0F;     //取键码的低四位
 134   1              IRCOM[5]=IRCOM[2] >> 4;       //右移4次,高四位变为低四位
 135   1      
 136   1              beep();
 137   1              EA = 1; 
 138   1      } 
 139          
 140          /**********************************************************/
 141          void beep()
 142          {
 143   1        unsigned char i;
 144   1        for (i=0;i<180;i++)
 145   1         {
 146   2           delay(6);
 147   2           BEEP=!BEEP;                 //BEEP取反
 148   2         } 
 149   1        BEEP=1;                      //关闭蜂鸣器
 150   1      }
 151          /**********************************************************/
 152          void delay(unsigned char x)    //x*0.14MS
 153          {
 154   1       unsigned char i;
 155   1        while(x--)
 156   1       {
 157   2        for (i = 0; i<13; i++) {}
 158   2       }
 159   1      }
 160          
 161          /**********************************************************/
 162          


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


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

⌨️ 快捷键说明

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