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

📄 spi.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                      SPI_SDA = 1;// delay about 1us
                              else
                                      SPI_SDA = 0;// delay about 1us
                
                              SPIdelay(DELAY);// delay about 1us
              
                              SPI_SCL=1;                      // CLOCK = High
                              SPIdelay(DELAY);// delay about 1us
              
                              if(j != 0)
                              {
                                      SPI_SCL = 0;
                                      SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
                              }
                      }
              
                      SPI_SCL=1;
                      SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
                      
                      SPI_SDA = 1;                                                    // Data Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
                      SPIdelay(DELAY);// delay about 1us
              
                      SPIdelay(50);  // delay about 25us
                      
                      SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_SCL = 0;                                                    //      SCL Low
                      SPIdelay(DELAY);// delay about 1us
                      
                      for (j = 23; j >= 0; j--)//17
                      {
              
                              SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
              
                              if ((xData >> j) & 0x00000001L) // DATA HIGH or LOW
                                      SPI_SDA = 1;
                              else
                                      SPI_SDA = 0;
              
                              SPIdelay(DELAY);// delay about 1us
              
                              SPI_SCL=1;                      // CLOCK = High
                              SPIdelay(DELAY);// delay about 1us
              
                              if(j != 0)
                              {
C51 COMPILER V7.50   SPI                                                                   04/01/2008 15:02:33 PAGE 5   

                                      SPI_SCL = 0;
                                      SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
                              }
                      }
              
                      SPI_SCL=1;
                      SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
                      
                      SPI_SDA = 1;                                                    // Data Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
                      SPIdelay(DELAY);// delay about 1us
              }
              
              
              WORD ReadSPI(BYTE addr)
              {
                      //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
             -SE);
                      int      j;
                      //unsigned char DELAY=100;
                      unsigned char DELAY=10; // delay about 1us
                      DWORD xAddress;
                      BYTE  xData;
                      WORD  rData ;
                      
                      xAddress =      0x00600000L|(0x000000ffL & addr);
                      xData =         0x63;
                      
                      ///////////////////////address
                      SPI_CS_EN; //SPI_CS     = 1;            //      EN = High                                       CS high
                      SPI_SCL=1;                                                      //      SCL High
                      SPI_SDA = 1;                                                    //      Data High
              
                      SPIdelay(DELAY); // delay about 1us
              
                      SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_SCL = 0;                                                    //      SCL Low
                      SPIdelay(DELAY);// delay about 1us
                      
                      for (j = 23; j >= 0; j--)//17
                      {
              
                              if ((xAddress >> j) & 0x00000001L)      // DATA HIGH or LOW
                                      SPI_SDA = 1;// delay about 1us
                              else
                                      SPI_SDA = 0;// delay about 1us
                
                              SPIdelay(DELAY);// delay about 1us
              
                              SPI_SCL=1;                      // CLOCK = High
                              SPIdelay(DELAY);// delay about 1us
              
                              if(j != 0)
                              {
                                      SPI_SCL = 0;
                                      SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
                              }
                      }
C51 COMPILER V7.50   SPI                                                                   04/01/2008 15:02:33 PAGE 6   

              
                      SPI_SCL=1;
                      SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
                      
                      SPI_SDA = 1;                                                    // Data Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
                      SPIdelay(DELAY);// delay about 1us
              
                      SPIdelay(50);  // delay about 25us
                      
                      SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_SCL = 0;                                                    //      SCL Low
                      SPIdelay(DELAY);// delay about 1us
              
                      
                      for (j=7; j >= 0; j--)
                      {
              
                              if ((xData >> j) & 0x01)        
                                      SPI_SDA = 1;
                              else
                                      SPI_SDA = 0;
              
                              SPIdelay(DELAY);// delay about 1us
              
                              SPI_SCL=1;                      // CLOCK = High
                              SPIdelay(DELAY);// delay about 1us
              
                              SPI_SCL = 0;                                                    //      SCL Low
                              SPIdelay(DELAY);// delay about 1us
                      }
              
                      //SPI_SDA = 1;
                      //SPIdelay(DELAY);// delay about 1us
              
                      SPI_SCL = 0;
                      SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
              
                      for (j=15; j >=0; j--)
                      {
              
                              SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
              
                              SPI_SCL=1;                      // CLOCK = High
                              SPIdelay(DELAY);// delay about 1us
              
                              rData <<= 1;
                              if( SPI_SDA ) rData |= 1;
                              SPIdelay(DELAY);// delay about 1us
              
                              if(j != 0)
                              {
                                      SPI_SCL = 0;
                                      SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
                              }
                      }
              
                      SPI_SCL=1;
C51 COMPILER V7.50   SPI                                                                   04/01/2008 15:02:33 PAGE 7   

                      SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
                      
                      SPI_SDA = 1;                                                    // Data Low
                      SPIdelay(DELAY);// delay about 1us
              
                      SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
                      SPIdelay(DELAY);// delay about 1us
              
                      return rData;
              }
              #endif


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