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

📄 1.lst

📁 本设计采用ATMEL公司的AT89S52单片机和红外遥控技术实现近距离无线通信的软硬件系统。为了使受控设备识别信号
💻 LST
字号:
C51 COMPILER V8.02   1                                                                     06/10/2007 20:32:47 PAGE 1   


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

line level    source

   1           #include<REG52.H>
   2           #define uchar unsigned char
   3           #define uint  unsigned int
   4           sbit sendport=P3^0;
   5           uchar bdata address;
   6           sbit ad7=address^7;
   7           uchar bdata datafan;
   8           sbit datafan7=datafan^7;
   9           uchar bdata datayuan;
  10           sbit datayuan7=datayuan^7;  
  11           uchar key=0x00;
  12           bit m=0;
  13          
  14                  
  15                   /*=========关显示==========*/
  16          
  17                   void undisplay()
  18                   {
  19   1                 P2=0x00;
  20   1                 P3=0x00;
  21   1                }
  22          
  23          
  24                  /*=========延时函数==========*/ 
  25          
  26                void delay(uint i) 
  27                {
  28   1              while(--i);        
  29   1                  } 
  30          
  31          
  32          /*=========键盘扫描函数1==========*/ 
  33          
  34                 uchar kbscan1()
  35             {
  36   1               uchar l=0;                     
  37   1               P1=0xff;
  38   1               if(P1==0xff)            //没有键按下
  39   1               while(1)
  40   1               {
  41   2                      if(P1!=0xff)
  42   2                      break;   
  43   2               }
  44   1      
  45   1               if(P1!=0xff)        //有键按下
  46   1               {       
  47   2                delay(0x04e1);                         //延时10毫秒
  48   2                if(P1!=0xff)          //确有键按下
  49   2                {
  50   3                    switch(P1)         
  51   3                    {
  52   4                     case 0xfe:l=0x06;break;
  53   4                         case 0xfd:l=0x5b;break;
  54   4                         case 0xfb:l=0x4f;break;
  55   4                         case 0xf7:l=0x66;break;
C51 COMPILER V8.02   1                                                                     06/10/2007 20:32:47 PAGE 2   

  56   4                         case 0xef:l=0x6d;break;               
  57   4                         case 0xdf:l=0x7d;break;
  58   4                         case 0xbf:l=0x07;break;
  59   4                         case 0x7f:l=0x01;break;       
  60   4                         default: break;                                         //读键值
  61   4                     } 
  62   3                        }
  63   2                }
  64   1                return l;
  65   1        }
  66          
  67                          /*=========键盘扫描函数2==========*/ 
  68          
  69           
  70          
  71           uchar kbscan2()
  72             {
  73   1               uchar l=0;     
  74   1               P1=0xff;
  75   1               if(P1==0xff)            //没有键按下
  76   1              while(1)
  77   1               {
  78   2                      if(P1!=0xff)
  79   2                      break;
  80   2                       }
  81   1               if(P1!=0xff)        //有键按下
  82   1               {
  83   2                delay(0x04e1);                         //延时10毫秒
  84   2                if(P1!=0xff)          //确有键按下
  85   2                {
  86   3                    switch(P1)
  87   3                    {
  88   4                     case 0xfe:l=0x7f;break;
  89   4                         case 0xfd:l=0x6f;break;
  90   4                         case 0xfb:l=0x77;break;
  91   4                         case 0xf7:l=0x7c;break;
  92   4                         case 0xef:l=0x39;break;      
  93   4                         case 0xdf:l=0x5e;break;
  94   4                         case 0xbf:l=0x79;break;
  95   4                         case 0x7f:l=0x02;break;       
  96   4                         default: break;                                        //读键值
  97   4                     } 
  98   3                        }
  99   2                }
 100   1                return l;
 101   1        }
 102          
 103                /*=========显示函数==========*/ 
 104                  void display(uchar n)    
 105                     {   
 106   1                     P2=n;
 107   1                  } 
 108          
 109                    /*=========发射调制后的高电平函数==========*/ 
 110                  void sendh(uchar n)
 111                          { 
 112   1                        uchar e;                                                                                                       
 113   1                        sendport=1;              
 114   1                        for(e=0;e<n;e++)      
 115   1                        {             
 116   2               #pragma ASM
 117   2                        NOP
C51 COMPILER V8.02   1                                                                     06/10/2007 20:32:47 PAGE 3   

 118   2                        NOP
 119   2                        NOP
 120   2                        NOP
 121   2                        #pragma ENDASM
 122   2                        sendport=!sendport;           
 123   2                        }     
 124   1                  }
 125          
 126                   /*=========发射函数==========*/ 
 127             void send(uchar qq)
 128            {
 129   1          bit c;
 130   1          uchar i;
 131   1              datayuan=qq;    
 132   1              datafan=~qq;
 133   1          sendh(0xef);           //发送起始位 高电平
 134   1          delay(0x007a);        //发送起始位  低电平
 135   1          address=0x55;     //地址码
 136   1      
 137   1          for(i=0;i<8;i++)        
 138   1         {
 139   2           c=ad7;   
 140   2           if(c==1) 
 141   2           sendh(0x9f);
 142   2               else 
 143   2           sendh(0x4f); 
 144   2           delay(0x0082);
 145   2               address<<=1;  
 146   2          }                           //发送地址位 
 147   1          
 148   1           for(i=0;i<8;i++)              
 149   1           {
 150   2              c=datayuan7;
 151   2              if(c==1)
 152   2              sendh(0x9f);
 153   2             else
 154   2             sendh(0x4f);
 155   2              delay(0x0082);                                   //发送数据位
 156   2                 datayuan=datayuan<<1;
 157   2            }           
 158   1      
 159   1             for(i=0;i<8;i++)
 160   1            {
 161   2                c=datafan7;
 162   2                if(c==1)
 163   2                sendh(0x9f);
 164   2                        else
 165   2                sendh(0x4f);
 166   2                delay(0x0082);
 167   2                        datafan=datafan<<1;
 168   2               }                                        //发送数据反码
 169   1              sendh(0x4f);   
 170   1              sendport=0;                        //发送结束位
 171   1           }
 172          
 173                  /*=========初始化==========*/ 
 174          
 175                    void  original()
 176                    {
 177   1                      undisplay();    //关显示
 178   1                        }
 179          
C51 COMPILER V8.02   1                                                                     06/10/2007 20:32:47 PAGE 4   

 180                  /*==========键盘扫描函数==========*/
 181          
 182                     kbscan()
 183                    {
 184   1                   if(m==0)
 185   1                  {      
 186   2                 key=kbscan1();   //键盘取值函数1
 187   2                         if(key==0x01)
 188   2                        {  
 189   3                          m=1;
 190   3                              key=0x00;
 191   3                          }
 192   2                        }
 193   1                       else
 194   1                       {
 195   2                          key=kbscan2();   //键盘取值函数2
 196   2                          if(key==0x02)
 197   2                     { 
 198   3                           m=0;
 199   3                           key=0x00;
 200   3                              }
 201   2                        }
 202   1                              return key;
 203   1                        }
 204          
 205          
 206               /*========取发送数据==========*/
 207                    uchar qudata()
 208                    {
 209   1                 uchar  y;
 210   1                         switch(key)
 211   1                            {
 212   2                     case 0x06:y=0x01;break;
 213   2                         case 0x5b:y=0x02;break;
 214   2                         case 0x4f:y=0x03;break;
 215   2                         case 0x66:y=0x04;break;                                                              
 216   2                         case 0x6d:y=0x05;break;       
 217   2                         case 0x7d:y=0x06;break;
 218   2                         case 0x07:y=0x07;break;
 219   2                         case 0x7f:y=0x08;break;
 220   2                         case 0x6f:y=0x09;break;
 221   2                         case 0x77:y=0x0a;break;
 222   2                         case 0x7c:y=0x0b;break;
 223   2                         case 0x39:y=0x0c;break;                                                                              
 224   2                         case 0x5e:y=0x0d;break;               
 225   2                         case 0x79:y=0x0e;break;       
 226   2                         default: break;      
 227   2                         }
 228   1                  return y;
 229   1                         }
 230          
 231                          /*=========主程序==========*/ 
 232               void main(void)
 233              {   
 234   1                uchar senddata;                               
 235   1                      original();      //初始化  
 236   1                    
 237   1              while(1)
 238   1             {  
 239   2                       kbscan();         //键盘取值函数
 240   2      
 241   2                       if(key!=0)
C51 COMPILER V8.02   1                                                                     06/10/2007 20:32:47 PAGE 5   

 242   2                       {
 243   3                    display(key);                //显示函数
 244   3                    senddata=qudata();
 245   3                            send(senddata);              //发射函数
 246   3                    delay(0x30ce);            //延时100ms            
 247   3                    send(senddata);         //发射函数
 248   3                                delay(0xf405);                  //延时0.5s
 249   3                                delay(0xf405);                  //延时0.5s
 250   3                    undisplay();            //关显示
 251   3                            key=0x00;               //键值清零
 252   3                              }
 253   2              }
 254   1          }
 255          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    606    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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