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

📄 remote51.lst

📁 最近开发的51单片机多功能 实验板
💻 LST
字号:
C51 COMPILER V8.02   REMOTE51                                                              02/11/2007 10:19:24 PAGE 1   


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

line level    source

   1          #include <REGX52.H>
   2          #define  D45MS 2500
   3          #define  D09MS 450
   4          #define  D220U 0x90
   5          #define  D250U 0x06
   6          
   7          #define IRIN  P1_4 //红外输入引脚的定义
   8          //#define IRIN  P2_7
   9          //#define IRGND P2_6
  10          
  11          union myd{
  12                   unsigned long r;
  13                   unsigned char led[4];    
  14            }     ;
  15          union myd k;
  16          unsigned long readir(void);
  17          void delay1(unsigned int nms);
  18          void initTimer(unsigned char st0); 
  19          
  20          extern void lcd_init(void);
  21          extern void lcd_string(char *strpoint); /*在当前显示位置显示LCD 字符串*/
  22          
  23          
  24          unsigned char code remcode[]={0x12,0x90,0xb8,0xf8,0x98,0xd8,0x88,0xe8,0x48,0x68,//0,1-9
  25                                        0xb0,0xa8,0x99,0x00,0x08,0x60,0x02,0x20,
  26                                                                  //VOL+,VOL-,CH+,CH-,POWER,mute,recall,-/--
  27                                                                    0x40,0xa0,0x2a,0xb2,0x50,0x78,0x70,0x58,0x38,0x30};
  28                                                                          //  最后3排AV。。。Freeze。。。video。。。hide。。。panel等
  29          
  30          void int1(void) interrupt 2
  31          { EA = 0;
  32   1        k.r = readir();
  33   1        IE1 = 0;  
  34   1        EA = 1;
  35   1        IE1 = 0;
  36   1      }
  37          
  38          
  39          int main(void)
  40          { 
  41   1        union myd rdata;  
  42   1        unsigned char m,n,i,seg[]={0x01,0x02,0x04,0x08,0x10,0x00,0x00,0x00};
  43   1        unsigned char zxm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  44   1                    0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff, };
  45   1        unsigned int rekey;
  46   1        unsigned char key, str1[]="Code: --------      SYS:--   USER:--";
  47   1        unsigned char code str2[]="Please press any    key.....";
  48   1        
  49   1        initTimer(D220U); //220us
  50   1        IT1=1;
  51   1        EX1=1;
  52   1        EA=0;rekey=0;
  53   1        key=0x10;
  54   1        lcd_init();
  55   1        lcd_string(str2);
C51 COMPILER V8.02   REMOTE51                                                              02/11/2007 10:19:24 PAGE 2   

  56   1        while(1){  
  57   2                //IRGND =0;
  58   2                k.r = readir();
  59   2                if (k.r ==0xffffffff) rekey++;                  
  60   2                else  rekey =0;
  61   2            P0 = zxm[key];                              
  62   2            P2 = seg[3];
  63   2                m=2;
  64   2                while(m--)
  65   2                {
  66   3                        if(k.r)
  67   3                        {     
  68   4                          if (!rekey) 
  69   4                              {
  70   5                                rdata = k;
  71   5                                  //k.r=0x12345678;
  72   5                                      str1[6]=0x30 | (k.led[0]&0xf0)>>4;
  73   5                                      str1[7]=k.led[0]&0x0f | 0x30;
  74   5      
  75   5                                      str1[8]=0x30 | (k.led[1]&0xf0)>>4;
  76   5                                      
  77   5                                      str1[9]=k.led[1]&0x0f+0x30;
  78   5      
  79   5                                      str1[10]=0x30 | (k.led[2]&0xf0)>>4;
  80   5                                      str1[11]=k.led[2]&0x0f | 0x30;
  81   5      
  82   5                                      str1[12]=0x30 | (k.led[3]&0xf0)>>4;
  83   5                                      str1[13]=k.led[3]&0x0f | 0x30;
  84   5                                      i=6;
  85   5                                      while(i<14)
  86   5                                      {
  87   6                                        if(str1[i]>0x39) str1[i] +=('A'-'9'-1);
  88   6                                        i++;
  89   6                                      }
  90   5                                      str1[24]=str1[6];
  91   5                                      str1[25]=str1[7];
  92   5                                      str1[34]=str1[10];
  93   5                                      str1[35]=str1[11];
  94   5                                      lcd_init();
  95   5                                      lcd_string(str1);
  96   5                                }
  97   4                        } 
  98   3                              i=0;
  99   3                          /*while(i<2)
 100   3                              {
 101   3                              P2 &= 0xe0;P0 = 0xff;
 102   3                              P0=zxm[(rdata.led[2*i]>>4 ) & 0x0f];                    
 103   3                              P2 |= seg[i*2];                 
 104   3                              n=100;while(n--);
 105   3                              P2 &= 0xe0;P0 = 0xff;
 106   3                          P0=zxm[rdata.led[2*i]  & 0x0f];
 107   3                              //P0=zxm[8];                    
 108   3                              //P2 = seg[2*i+1];                      
 109   3                              P2 |= seg[i*2+1];
 110   3                              i++;
 111   3                              n=100;while(n--);
 112   3                              P2 &= 0xe0;P0=0xff;
 113   3                              }
 114   3                              */
 115   3                              i=0;
 116   3                              P2 &=0xe0; 
 117   3                              while(i<16){
C51 COMPILER V8.02   REMOTE51                                                              02/11/2007 10:19:24 PAGE 3   

 118   4                                 if(remcode[i]==rdata.led[2]) {
 119   5                                        //Request(remotekey);//通过串口来查看解码是否正确
 120   5                                        key=i;
 121   5                                        i=22;
 122   5                                      }
 123   4                                 i++;
 124   4                              }
 125   3                    P0 = zxm[key];                              
 126   3                        P2 = seg[3];
 127   3                        n=100;while(n--);
 128   3                        //P2 &= 0xe0;P0=0xff;
 129   3                 } 
 130   2                 //IRGND=0;    
 131   2        }
 132   1      }
 133          
 134          void delay1(unsigned int nms)
 135          {
 136   1        while(nms--); 
 137   1      }
 138          
 139          // 24---220us, 06---250us
 140          void initTimer(unsigned char st0) 
 141          {
 142   1       TMOD=0x02;
 143   1       TH0=st0;
 144   1       TL0=st0; 
 145   1       TR0=1;
 146   1       ET0=0;
 147   1       ET1=0; 
 148   1      }
 149          
 150          void initTimer2() 
 151          {
 152   1       TMOD=0x01;
 153   1       TH0=0xfc;
 154   1       TL0=0x18; 
 155   1       TR0=1;
 156   1       ET0=0;
 157   1       ET1=0; 
 158   1      }
 159          
 160          unsigned long readir(void)
 161          {  unsigned char i;
 162   1         unsigned int delay;
 163   1         unsigned long rdata=0;
 164   1         union myd rem;
 165   1         IRIN = 1;   
 166   1         if(IRIN) return 0;
 167   1         EA=0;i=0;
 168   1         initTimer2();TF0=0;
 169   1         while(IRIN==0); 
 170   1       /*    {
 171   1                        while(TF0==0);
 172   1                        TF0=0;i++;
 173   1                        TH0=0xfc;TL0=0x18;  
 174   1               }
 175   1         TR0=0;
 176   1         if (i<6) return i;*/
 177   1         i=32;
 178   1         while(i--) //始接收
 179   1         {  
C51 COMPILER V8.02   REMOTE51                                                              02/11/2007 10:19:24 PAGE 4   

 180   2            delay =80;
 181   2                initTimer(D220U);
 182   2                while(delay--)  // 延时4.5ms~6.0ms
 183   2                  { 
 184   3                        while(TF0==0);
 185   3                        TF0=0;if(IRIN==0) delay = 0;
 186   3                      }
 187   2                TR0=0;                  
 188   2                while(IRIN==0) IRIN = 1; //等待高电平
 189   2            // 延时0.9ms      begin
 190   2                initTimer(D220U);
 191   2                delay=6;
 192   2                while(delay--)  
 193   2                  {while(TF0==0);TF0=0;}                
 194   2                TR0=0;
 195   2                // 延时0.9ms end
 196   2            rdata <<=1;
 197   2                IRIN =1;
 198   2                if(IRIN)
 199   2                   rdata |= 0x1;
 200   2         }
 201   1         rem.r = rdata;
 202   1         if(rem.r+1) {
 203   2             //if (((rem.led[0]+ rem.led[1])== 0xff) &&((rem.led[2]+ rem.led[3])== 0xff)) return rdata;          
 204   2                 if ((rem.led[2]+ rem.led[3])== 0xff) return rdata;      
 205   2                 else return 0;
 206   2         }
 207   1         else return rdata;
 208   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    715    ----
   CONSTANT SIZE    =    119    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      80
   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 + -