spi.lst

来自「显示屏驱动源代码」· LST 代码 · 共 412 行 · 第 1/2 页

LST
412
字号
 189   2                              SPI_SDA = 1;// delay about 1us
 190   2                      else
 191   2                              SPI_SDA = 0;// delay about 1us
 192   2        
 193   2                      SPIdelay(DELAY);// delay about 1us
 194   2      
 195   2                      SPI_SCL=1;                      // CLOCK = High
 196   2                      SPIdelay(DELAY);// delay about 1us
 197   2      
 198   2                      if(j != 0)
 199   2                      {
 200   3                              SPI_SCL = 0;
 201   3                              SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
 202   3                      }
 203   2              }
 204   1      
 205   1              SPI_SCL=1;
 206   1              SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
 207   1              
 208   1              SPI_SDA = 1;                                                    // Data Low
 209   1              SPIdelay(DELAY);// delay about 1us
 210   1      
 211   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
 212   1              SPIdelay(DELAY);// delay about 1us
 213   1      
 214   1              SPIdelay(50);  // delay about 25us
 215   1              
 216   1              SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
 217   1              SPIdelay(DELAY);// delay about 1us
 218   1      
 219   1              SPI_SCL = 0;                                                    //      SCL Low
 220   1              SPIdelay(DELAY);// delay about 1us
 221   1              
 222   1              for (j = 23; j >= 0; j--)//17
 223   1              {
 224   2      
 225   2                      SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
 226   2      
 227   2                      if ((xData >> j) & 0x00000001L) // DATA HIGH or LOW
 228   2                              SPI_SDA = 1;
 229   2                      else
 230   2                              SPI_SDA = 0;
 231   2      
 232   2                      SPIdelay(DELAY);// delay about 1us
 233   2      
 234   2                      SPI_SCL=1;                      // CLOCK = High
 235   2                      SPIdelay(DELAY);// delay about 1us
 236   2      
 237   2                      if(j != 0)
 238   2                      {
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 5   

 239   3                              SPI_SCL = 0;
 240   3                              SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
 241   3                      }
 242   2              }
 243   1      
 244   1              SPI_SCL=1;
 245   1              SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
 246   1              
 247   1              SPI_SDA = 1;                                                    // Data Low
 248   1              SPIdelay(DELAY);// delay about 1us
 249   1      
 250   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
 251   1              SPIdelay(DELAY);// delay about 1us
 252   1      }
 253          
 254          
 255          WORD ReadSPI(BYTE addr)
 256          {
 257   1              //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
             -SE);
 258   1              int      j;
 259   1              //unsigned char DELAY=100;
 260   1              unsigned char DELAY=10; // delay about 1us
 261   1              DWORD xAddress;
 262   1              BYTE  xData;
 263   1              WORD  rData ;
 264   1              
 265   1              xAddress =      0x00600000L|(0x000000ffL & addr);
 266   1              xData =         0x63;
 267   1              
 268   1              ///////////////////////address
 269   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High                                       CS high
 270   1              SPI_SCL=1;                                                      //      SCL High
 271   1              SPI_SDA = 1;                                                    //      Data High
 272   1      
 273   1              SPIdelay(DELAY); // delay about 1us
 274   1      
 275   1              SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
 276   1              SPIdelay(DELAY);// delay about 1us
 277   1      
 278   1              SPI_SCL = 0;                                                    //      SCL Low
 279   1              SPIdelay(DELAY);// delay about 1us
 280   1              
 281   1              for (j = 23; j >= 0; j--)//17
 282   1              {
 283   2      
 284   2                      if ((xAddress >> j) & 0x00000001L)      // DATA HIGH or LOW
 285   2                              SPI_SDA = 1;// delay about 1us
 286   2                      else
 287   2                              SPI_SDA = 0;// delay about 1us
 288   2        
 289   2                      SPIdelay(DELAY);// delay about 1us
 290   2      
 291   2                      SPI_SCL=1;                      // CLOCK = High
 292   2                      SPIdelay(DELAY);// delay about 1us
 293   2      
 294   2                      if(j != 0)
 295   2                      {
 296   3                              SPI_SCL = 0;
 297   3                              SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
 298   3                      }
 299   2              }
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 6   

 300   1      
 301   1              SPI_SCL=1;
 302   1              SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
 303   1              
 304   1              SPI_SDA = 1;                                                    // Data Low
 305   1              SPIdelay(DELAY);// delay about 1us
 306   1      
 307   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
 308   1              SPIdelay(DELAY);// delay about 1us
 309   1      
 310   1              SPIdelay(50);  // delay about 25us
 311   1              
 312   1              SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
 313   1              SPIdelay(DELAY);// delay about 1us
 314   1      
 315   1              SPI_SCL = 0;                                                    //      SCL Low
 316   1              SPIdelay(DELAY);// delay about 1us
 317   1      
 318   1              
 319   1              for (j=7; j >= 0; j--)
 320   1              {
 321   2      
 322   2                      if ((xData >> j) & 0x01)        
 323   2                              SPI_SDA = 1;
 324   2                      else
 325   2                              SPI_SDA = 0;
 326   2      
 327   2                      SPIdelay(DELAY);// delay about 1us
 328   2      
 329   2                      SPI_SCL=1;                      // CLOCK = High
 330   2                      SPIdelay(DELAY);// delay about 1us
 331   2      
 332   2                      SPI_SCL = 0;                                                    //      SCL Low
 333   2                      SPIdelay(DELAY);// delay about 1us
 334   2              }
 335   1      
 336   1              //SPI_SDA = 1;
 337   1              //SPIdelay(DELAY);// delay about 1us
 338   1      
 339   1              SPI_SCL = 0;
 340   1              SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
 341   1      
 342   1              for (j=15; j >=0; j--)
 343   1              {
 344   2      
 345   2                      SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
 346   2      
 347   2                      SPI_SCL=1;                      // CLOCK = High
 348   2                      SPIdelay(DELAY);// delay about 1us
 349   2      
 350   2                      rData <<= 1;
 351   2                      if( SPI_SDA ) rData |= 1;
 352   2                      SPIdelay(DELAY);// delay about 1us
 353   2      
 354   2                      if(j != 0)
 355   2                      {
 356   3                              SPI_SCL = 0;
 357   3                              SPIdelay(DELAY);// delay about 1us                      // CLOCK = Low
 358   3                      }
 359   2              }
 360   1      
 361   1              SPI_SCL=1;
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 7   

 362   1              SPIdelay(DELAY);        // delay about 1us              // CLOCK = Low
 363   1              
 364   1              SPI_SDA = 1;                                                    // Data Low
 365   1              SPIdelay(DELAY);// delay about 1us
 366   1      
 367   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High
 368   1              SPIdelay(DELAY);// delay about 1us
 369   1      
 370   1              return rData;
 371   1      }
 372          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    929    ----
   CONSTANT SIZE    =     62    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      17
   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 + =
减小字号Ctrl + -
显示快捷键?