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

📄 irc_000.lst

📁 红外遥控器解码
💻 LST
字号:
C51 COMPILER V8.02   IRC_000                                                               03/24/2009 20:01:13 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE IRC_000
OBJECT MODULE PLACED IN irc_000.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE irc_000.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1            #include<stc89c51rc_rd+.h>
   2            #define uchar unsigned char
   3            #define uint  unsigned int
   4            #define irc    P1 
   5            #define disp_data P2
   6            #define t_3ms5 0x0c
   7            #define t_1ms  0x03
   8           
   9          unsigned char seg_bcd[] = {0x7e,0x48,0xbc,0xb6,0xd2,0xe6,0xee,0x38,0xFe,0xf2,   
  10                                     };// 0--9
  11          uchar get_code[4] = {0} ;
  12          uchar tms[20]={0};
  13          uchar  timer;
  14          void UartInit();
  15          void UartSendChar(unsigned char ch);
  16          void delay(uint time)    //10ms--10000
  17          {
  18   1       while(time--);
  19   1      }
  20          
  21          void set_timer()
  22          {     
  23   1       TH0=0;      
  24   1       TL0=0;
  25   1       TR0=1;
  26   1      }
  27          
  28          void disp(dat)
  29          {
  30   1        switch (dat)
  31   1          {case 0x1b:dat=10;break;
  32   2               case 0x1f:dat=11;break;
  33   2               case 0x1e:dat=12;break;
  34   2               case 0x1a:dat=13;break;
  35   2               default:break;
  36   2              }
  37   1        disp_data=seg_bcd[dat];         
  38   1      }
  39                                    
  40          uchar get_num()
  41          { uchar i,j,rd,dat=0;
  42   1        for(j=0;j<4;j++)
  43   1        { for(i=8;i>0;i--)
  44   2               {
  45   3                dat>>=1; 
  46   3                do
  47   3            rd=irc;
  48   3            while(!(rd&0x04));        //      wait high
  49   3                set_timer();             //检测高电平时间
  50   3                do
  51   3            rd=irc;
  52   3            while(rd&0x04);   //      wait low
  53   3                TR0=0;
  54   3            timer=TH0;
  55   3                if(timer>t_1ms)dat=dat|0x80;
C51 COMPILER V8.02   IRC_000                                                               03/24/2009 20:01:13 PAGE 2   

  56   3            else dat=dat&0x7f;          
  57   3                }
  58   2         get_code[j]=dat;
  59   2         }
  60   1      return(get_code[2]);    
  61   1      }
  62          
  63          void main()
  64          {
  65   1      uchar rd;
  66   1      UartInit();
  67   1       P2=0x00;
  68   1       P1=0xef;
  69   1       disp(5);
  70   1       TMOD=0x01;//T0选择方式一
  71   1      judge: 
  72   1       do     
  73   1       rd=P1;
  74   1       while(rd&0x04);        //wait low
  75   1       delay(100);
  76   1       rd=P1;
  77   1       if(rd&0x04)goto judge; //xiao dou
  78   1       do
  79   1       rd=irc;
  80   1       while(!(rd&0x04));      //wait high
  81   1       set_timer();
  82   1       do
  83   1       rd=irc;
  84   1       while(rd&0x04);         //wait low
  85   1       TR0=0;
  86   1       timer=TH0;
  87   1       if(timer<t_3ms5){delay(2000);goto judge;}//连续按下,重复标志
  88   1       rd=get_num();
  89   1       disp(rd);
  90   1       UartSendChar(rd);
  91   1       goto judge; 
  92   1      }
  93          /************************************************************
  94          * Name: UartInit
  95          * Func:
  96          *  串行通信初始化
  97          * Para: 
  98          *  uchar ch: 发送的字符
  99          * Return: None
 100          ***********************************************************/
 101          void UartInit()
 102          {
 103   1       SCON  = 0x50;          // SCON: serail mode 1, 8-bit UART
 104   1          TMOD |= 0x20;       // TMOD: timer 1, mode 2, 8-bit reload 
 105   1          PCON |= 0x80;       // SMOD="1"; 
 106   1          TH1   = 0xFA;       // Baud:9600  fosc="11".0592MHz 
 107   1       TL1   = 0xFA;
 108   1          IE   |= 0x90;       // 使能串行中断
 109   1       
 110   1          TR1   = 1;          // 启动TIMER1
 111   1       
 112   1      }
 113            /************************************************************
 114           * Name: UartSendChar
 115           * Func:
 116           *  向串口发送一个字符
 117           * Para: 
C51 COMPILER V8.02   IRC_000                                                               03/24/2009 20:01:13 PAGE 3   

 118           *  uchar ch: 发送的字符
 119           * Return: None
 120           ***********************************************************/
 121          void UartSendChar(unsigned char ch)
 122          {
 123   1          SBUF = ch;
 124   1          while(TI==0);
 125   1          TI=0;
 126   1      }
 127                                                     


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    269    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     35       3
   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 + -