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

📄 hong1.lst

📁 51单片机遥控程序
💻 LST
字号:
C51 COMPILER V8.02   HONG1                                                                 08/11/2008 12:35:53 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE HONG1
OBJECT MODULE PLACED IN hong1.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL\C51\BIN\C51.EXE hong1.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*   51单片机红外遥控解码程序   */
   2          /*      适用uPD6121系列            */
   3          /*     周正华 2008.4.11编         */ 
   4          /*    http://hi.baidu.com/52_diy   */
   5          /*此程序是针对uPD6121系列的遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效。*/
   6          #include <reg52.h>
   7          
   8          #define DIGPORT P2
   9          #define WORDPORT P0
  10          unsigned char code LED_num[]={0x3f,0x18,0x76,0x7c,0x59,0x6d,0x6f,0x38,0x7f,0x7d};
  11          
  12          #define Imax 14000    //此处为晶振为11.0592时的取值, 
  13          #define Imin 8000    //如用其它频率的晶振时,
  14          #define Inum 1450    //要改变相应的取值。
  15          unsigned char Im[]={0x00,0x00,0x00,0x00};
  16          
  17          unsigned long m,Tc;
  18          unsigned char i,IrOK;
  19          
  20          
  21          void DelayMy(unsigned int t){
  22   1      while(--t);
  23   1      }
  24          
  25          
  26          void Display_LED(unsigned long num)
  27          {
  28   1      unsigned int ii;
  29   1      unsigned int jj=0;
  30   1      unsigned long aa,bb;
  31   1      unsigned int xx[8]={0,0,0,0,0,0,0,0};
  32   1      do {
  33   2          bb=num/10;
  34   2          aa=num-bb*10;
  35   2          xx[jj]=aa;
  36   2          num=bb;jj++;
  37   2          }
  38   1      while(num>0);
  39   1      DIGPORT=0x80;
  40   1      for(ii=0;ii<8;ii++) {
  41   2          WORDPORT=LED_num[xx[ii]];
  42   2          DelayMy(60);
  43   2          DIGPORT=DIGPORT>>1;
  44   2      };
  45   1      WORDPORT=0;
  46   1      }
  47          
  48          //外部中断解码程序
  49          void intersvr1(void) interrupt 2 using 1
  50          {
  51   1      Tc=TH0*256+TL0;                                               //提取中断时间间隔时长
  52   1      TH0=0; TL0=0;              //定时中断重新置零
  53   1      if((Tc>Imin)&&(Tc<Imax)) m=0;          //找到启始码
  54   1      if(Tc>Inum) Im[m/8]=Im[m/8]>>1|0x80; else Im[m/8]=Im[m/8]>>1; //取码
  55   1      if(m==32) if((Im[2]|0x01)==~Im[3]) IrOK=1; else IrOK=0;    //取码完成后判断读码是否正确
C51 COMPILER V8.02   HONG1                                                                 08/11/2008 12:35:53 PAGE 2   

  56   1      m++;                //准备读下一码
  57   1      }
  58          
  59          
  60          /*演示主程序*/
  61          void main(void)
  62          {
  63   1      m=0;
  64   1      EA=1;
  65   1      
  66   1      IT1=1;EX1=1;
  67   1      
  68   1      TMOD=0x11;  
  69   1      TH0=0;TL0=0;
  70   1      TR0=1;ET0=1;
  71   1      
  72   1      for(;;){
  73   2      DelayMy(100);
  74   2      if(IrOK==1) for(i=0;i<400;i++) Display_LED(Im[2]);
  75   2      IrOK=0;
  76   2      }
  77   1      }
  78          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    510    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14      30
   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 + -