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

📄 iic.lst

📁 QH_MCU_V1.1单片机C源码. 内含实验程序 这是修改版.
💻 LST
字号:
C51 COMPILER V7.07   IIC                                                                   09/21/2007 13:12:29 PAGE 1   


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

stmt level    source

   1          #include <REG51.H>
   2          #include <sys.h>
   3          #include <intrins.h>
   4          
   5          const   unsigned char   LedCode[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0XDE,0xF9,
             -0xF1};
   6          const   unsigned char   Sel[]={0x80,0x81,0x82,0x83};
   7          
   8          sbit  scl = P1^5;
   9          sbit  sda = P1^6;
  10          void delay ();
  11          
  12          void sel_bit0(void)
  13          {
  14   1               P2 = 0x00;
  15   1               P2 = 0x10;
  16   1               P0 = 0x0f;
  17   1         P2 = 0x00;
  18   1         P0 = 0x00;
  19   1               P2 = 0x80;
  20   1      }
  21            
  22          void sel_bit1(void)
  23          {
  24   1               P2 = 0x00;
  25   1               P2 = 0x10;
  26   1               P0 = 0x1f;
  27   1         P2 = 0x00;
  28   1         P0 = 0x00;
  29   1               P2 = 0x80;
  30   1      }
  31            
  32          void sel_bit2(void)
  33          {
  34   1               P2 = 0x00;
  35   1               P2 = 0x10;
  36   1               P0 = 0x2f;
  37   1         P2 = 0x00;
  38   1         P0 = 0x00;
  39   1               P2 = 0x80;
  40   1      }
  41            
  42          void sel_bit3(void)
  43          {
  44   1               P2 = 0x00;
  45   1               P2 = 0x10;
  46   1               P0 = 0x3f;
  47   1         P2 = 0x00;
  48   1         P0 = 0x00;
  49   1               P2 = 0x80;
  50   1      }
  51             
  52          
  53          void star()
  54            {
C51 COMPILER V7.07   IIC                                                                   09/21/2007 13:12:29 PAGE 2   

  55   1              scl=0;
  56   1                              sda=1;
  57   1              scl=1;
  58   1                       _nop_();
  59   1          _nop_();
  60   1          _nop_();
  61   1          _nop_();
  62   1          _nop_();
  63   1          _nop_();
  64   1          _nop_();
  65   1          _nop_();
  66   1               sda=0;
  67   1          _nop_();
  68   1          _nop_();
  69   1          _nop_();
  70   1          _nop_();    
  71   1          scl=0;
  72   1          _nop_();
  73   1          _nop_();
  74   1          _nop_();
  75   1          _nop_();
  76   1      
  77   1               
  78   1        }
  79          void stop()
  80            {
  81   1          sda=0;
  82   1              scl=0;
  83   1          scl=1;
  84   1      
  85   1          _nop_();
  86   1          _nop_();
  87   1          _nop_();
  88   1          _nop_();
  89   1          sda=1;
  90   1          _nop_();
  91   1          _nop_();
  92   1          _nop_();
  93   1          _nop_();
  94   1         
  95   1      
  96   1        }
  97          
  98          bit ack()
  99           { 
 100   1          bit a_ack;
 101   1          scl=0;
 102   1          _nop_();
 103   1          _nop_();
 104   1          sda=1;
 105   1          scl=1;
 106   1      
 107   1          if(sda==0)
 108   1          {
 109   2          a_ack=0;
 110   2          }
 111   1          else
 112   1          {
 113   2          a_ack=1;
 114   2          }
 115   1          scl=0;
 116   1      
C51 COMPILER V7.07   IIC                                                                   09/21/2007 13:12:29 PAGE 3   

 117   1              return(a_ack);
 118   1       }
 119          
 120           void noack()
 121            {
 122   1           scl=0;
 123   1           sda=1;
 124   1           scl=1;
 125   1          _nop_();
 126   1          _nop_();
 127   1          _nop_();
 128   1          _nop_();
 129   1           scl=0;
 130   1           sda=0;
 131   1        }
 132          
 133          void senddata(uchar shu)
 134            {
 135   1          uchar i;
 136   1          scl=0;
 137   1         
 138   1          for(i=0;i<8;i++)
 139   1          {
 140   2             sda=(bit) (shu & 0x80);
 141   2                 scl=1;
 142   2              _nop_();
 143   2              _nop_();
 144   2              _nop_();
 145   2              _nop_();
 146   2                      scl=0;
 147   2                      shu=shu<<1;
 148   2          }
 149   1      
 150   1         }
 151          uchar receive()
 152            {
 153   1         
 154   1          uchar j,nn;
 155   1          scl=0;
 156   1          for(j=0;j<8;j++)
 157   1          {
 158   2              scl=1;
 159   2                      nn=nn<<1;
 160   2                      nn=nn|((uchar)(sda));
 161   2                       _nop_();
 162   2              _nop_();
 163   2              _nop_();
 164   2              _nop_();
 165   2                      scl=0;
 166   2      
 167   2          }
 168   1          return(nn);
 169   1      
 170   1        }  
 171          
 172          
 173          
 174           void writebyte(uchar addr, uchar databyte)
 175             {
 176   1          uchar datareg,addrreg;
 177   1                datareg=databyte;
 178   1                addrreg=addr;
C51 COMPILER V7.07   IIC                                                                   09/21/2007 13:12:29 PAGE 4   

 179   1                star();
 180   1                senddata(0xa0);
 181   1                if (!ack())
 182   1                  {
 183   2                         P0=LedCode[0];
 184   2                         sel_bit0();
 185   2                         delay();
 186   2                         delay();
 187   2                         delay();
 188   2                      }
 189   1                senddata(addrreg);
 190   1             if (!ack())
 191   1                  {
 192   2                         P0=LedCode[1];
 193   2                         sel_bit0();
 194   2                          delay();
 195   2                         delay();
 196   2                         delay();
 197   2                      }
 198   1                 senddata(datareg);
 199   1             if (!ack())
 200   1                  {
 201   2                         P0=LedCode[2];
 202   2                         sel_bit0();
 203   2                         delay();
 204   2                         delay();
 205   2                         delay();
 206   2                      }  
 207   1             stop();
 208   1             delay();
 209   1         }
 210           uchar readbyte (uchar addr)
 211              {
 212   1                 uchar databuf;
 213   1                 star();
 214   1                 senddata(0xa0);
 215   1                if (!ack())
 216   1                  {
 217   2                         P0=LedCode[0];
 218   2                         sel_bit0();
 219   2                         delay();
 220   2                         delay();
 221   2                         delay();
 222   2                      }
 223   1                  senddata(addr);
 224   1                if (!ack())
 225   1                  {
 226   2                         P0=LedCode[4];
 227   2                         sel_bit0();
 228   2                         delay();
 229   2                         delay();
 230   2                         delay();
 231   2                      }
 232   1            star();
 233   1             senddata(0xa1);
 234   1                if (!ack())
 235   1                  {
 236   2                         P0=LedCode[5];
 237   2                         sel_bit0();
 238   2                         delay();
 239   2                         delay();
 240   2                         delay();
C51 COMPILER V7.07   IIC                                                                   09/21/2007 13:12:29 PAGE 5   

 241   2                      }
 242   1                 databuf=receive();
 243   1                 noack();
 244   1                 stop();
 245   1                 return (databuf);
 246   1              }
 247          
 248          
 249          
 250          void ISRit0(void) interrupt 0 using 0
 251            {
 252   1         uchar i;
 253   1         uchar databuf;
 254   1       //       IE0=0;
 255   1          for(i=0; i<16; i++)
 256   1       
 257   1                   {
 258   2                         // P0=LedCode[i];
 259   2                           databuf=readbyte(i);
 260   2          //         delay();
 261   2              //               delay();
 262   2              //           delay();
 263   2                               delay();
 264   2                               P0=databuf;
 265   2                           sel_bit1();
 266   2      //                       delay();
 267   2      //                       delay();
 268   2                               delay();
 269   2                        }
 270   1      
 271   1      //                P2=0xFF;
 272   1      
 273   1         }
 274          
 275            
 276          
 277          void main()
 278          {
 279   1          uchar i;
 280   1              EA = 1;
 281   1      //      IT0=1;
 282   1          EX0 = 1;
 283   1          for(i=0; i<16; i++)
 284   1       
 285   1                 {
 286   2                      writebyte(i,LedCode[i]);
 287   2                       
 288   2                        //   writebyte(0,0xFF);
 289   2                      //      delay();
 290   2                  }
 291   1      
 292   1      
 293   1      
 294   1              while(1)
 295   1              {
 296   2      
 297   2                 P0=0xff;
 298   2                 sel_bit0();
 299   2                 P0=0xff;
 300   2                 sel_bit1();
 301   2                 P0=0xff;
 302   2                 sel_bit2();
C51 COMPILER V7.07   IIC                                                                   09/21/2007 13:12:29 PAGE 6   

 303   2                 P0=0xff;
 304   2                 sel_bit3();
 305   2      
 306   2              }
 307   1      }
 308          
 309          void delay()
 310          {
 311   1          uchar i = 0;
 312   1              uchar j = 0;
 313   1        for (j=0;j<255;j++)
 314   1         {
 315   2          for (i=0; i<250; i++)
 316   2                ;
 317   2         }
 318   1      }
 319          
 320          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    490    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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