spi.lst

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

LST
412
字号
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN .\Output\spi.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE spi.c COMPACT OPTIMIZE(9,SIZE) BROWSE INCDIR(.\Include\) DEBUG OBJECTEXTEND
                    - PRINT(.\Source\spi.lst) OBJECT(.\Output\spi.obj)

stmt level    source

   1          //-------------------------------------------------------------
   2          //-------------------------------------------------------------
   3          
   4          #include "Config.h"
   5          
   6          #ifdef SUPPORT_DELTA_RGB
   7          
   8          #include "reg.h"
   9          #include "typedefs.h"
  10          #include "spi.h"
  11          //#include "main.h"
  12          #include "printf.h"
  13          #include "main.h"
  14          
  15          #define SPI_SCL         P1_0
  16          #define SPI_SDA         P1_1
  17          #define SPI_CS_EN               (P4 = P4 | 0x02)  //P4_1=1
  18          #define SPI_CS_DS               (P4 = P4 & 0xfd)  //P4_1=0
  19          
  20          extern  BYTE    DebugLevel;
  21          
  22          /*****************************************************************************/
  23          /* SPI                                                                       */
  24          /*****************************************************************************/
  25          
  26          void DeltaRGBPanelInit(void)
  27          {
  28   1              //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
             -SE);
  29   1      
  30   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High                                       CS high
  31   1              SPI_SCL=1;                                                      //      SCL High
  32   1              SPI_SDA = 1;                                                    //      Data High
  33   1              
  34   1              dPrintf(">> 2.8inch lcd test...ready!\r\n");
  35   1      
  36   1              dPrintf(">> 2.8inch lcd test...start!\r\n");            
  37   1              delay(7);               // DonGo
  38   1              
  39   1              ///////////////////////////////////////////////////////////////////
  40   1              // Power on Reset and Display off
  41   1              //////////////////////////////////////////////////////////////////
  42   1              WriteSPI(0x07, 0x0000);  //R07 <--0000h 
  43   1              SPIdelay(5*10);  //delay about 25us
  44   1              WriteSPI(0x12, 0x0000);  //R07 <--0000h
  45   1      
  46   1              // delay about 10ms --18ms
  47   1              delay(1);
  48   1              
  49   1              ///////////////////////////////////////////////////////////////////
  50   1              // Power Setting Function 1
  51   1              ///////////////////////////////////////////////////////////////////     
  52   1              WriteSPI(0x11, 0x0510);  //R07 <--0000h
  53   1              SPIdelay(50);  //delay about 25us
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 2   

  54   1              WriteSPI(0x12, 0x0020);  //R07 <--0000h 
  55   1              SPIdelay(50);  //delay about 25us
  56   1              WriteSPI(0x13, 0x1f2d);  //R07 <--0000h
  57   1              SPIdelay(50);  //delay about 25us
  58   1              WriteSPI(0x14, 0x0000);  //R07 <--0000h 
  59   1              SPIdelay(50);  //delay about 25us
  60   1              WriteSPI(0x15, 0x03ed);  //R07 <--0000h
  61   1              SPIdelay(50);  //delay about 25us
  62   1              WriteSPI(0x16, 0x0000);  //R07 <--0000h
  63   1              SPIdelay(50);  //delay about 25us
  64   1              WriteSPI(0x18, 0x7705);  //R07 <--0000h
  65   1              SPIdelay(50);  //delay about 25us
  66   1              
  67   1              ///////////////////////////////////////////////////////////////////
  68   1              // Power Setting Function 2
  69   1              ///////////////////////////////////////////////////////////////////
  70   1              WriteSPI(0x10, 0x0004);  //R07 <--0000h
  71   1                      
  72   1              // delay about 150ms --180ms
  73   1              delay(15);
  74   1              
  75   1              ///////////////////////////////////////////////////////////////////
  76   1              // Display Setting Function 
  77   1              ///////////////////////////////////////////////////////////////////
  78   1              WriteSPI(0x01, 0x0000);  //R07 <--0000h
  79   1              SPIdelay(50);  //delay about 25us
  80   1              WriteSPI(0x02, 0x0300);  //R07 <--0000h
  81   1              SPIdelay(50);  //delay about 25us
  82   1              WriteSPI(0x03, 0x0001);  //R07 <--0000h
  83   1              SPIdelay(50);  //delay about 25us
  84   1              WriteSPI(0x04, 0x0001);  //R07 <--0000h
  85   1              SPIdelay(50);  //delay about 25us
  86   1              WriteSPI(0x05, 0x000a);  //R07 <--0000h
  87   1              SPIdelay(50);  //delay about 25us
  88   1              WriteSPI(0x06, 0x0014);  //R07 <--0000h
  89   1              SPIdelay(50);  //delay about 25us
  90   1              WriteSPI(0x0b, 0x0200);  //R07 <--0000h
  91   1              SPIdelay(50);  //delay about 25us
  92   1              WriteSPI(0x0c, 0x0200);  //R07 <--0000h
  93   1              SPIdelay(50);  //delay about 25us
  94   1              WriteSPI(0x0e, 0x0000);  //R07 <--0000h
  95   1              SPIdelay(50);  //delay about 25us
  96   1              WriteSPI(0x0f, 0x0000);  //R07 <--0000h
  97   1              SPIdelay(50);  //delay about 25us
  98   1              WriteSPI(0x20, 0x0000);  //R07 <--0000h
  99   1              SPIdelay(50);  //delay about 25us
 100   1              WriteSPI(0x21, 0x0700);  //R07 <--0000h
 101   1              SPIdelay(50);  //delay about 25us
 102   1              WriteSPI(0x2a, 0x0000);  //R07 <--0000h
 103   1              SPIdelay(50);  //delay about 25us
 104   1              WriteSPI(0x2b, 0x0000);  //R07 <--0000h
 105   1              SPIdelay(50);  //delay about 25us
 106   1              WriteSPI(0x30, 0x0000);  //R07 <--0000h
 107   1              SPIdelay(50);  //delay about 25us
 108   1              WriteSPI(0x31, 0x0000);  //R07 <--0000h
 109   1              SPIdelay(50);  //delay about 25us
 110   1              WriteSPI(0x32, 0x0907);  //R07 <--0000h
 111   1              SPIdelay(50);  //delay about 25us
 112   1              WriteSPI(0x33, 0x0907);  //R07 <--0000h
 113   1              SPIdelay(50);  //delay about 25us
 114   1              WriteSPI(0x34, 0x0001);  //R07 <--0000h
 115   1              SPIdelay(50);  //delay about 25us
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 3   

 116   1              WriteSPI(0x35, 0x0001);  //R07 <--0000h
 117   1              SPIdelay(50);  //delay about 25us
 118   1              WriteSPI(0x36, 0x0c06);  //R07 <--0000h
 119   1              SPIdelay(50);  //delay about 25us
 120   1              WriteSPI(0x37, 0x0c06);  //R07 <--0000h
 121   1              SPIdelay(50);  //delay about 25us
 122   1              WriteSPI(0x38, 0x1f00);  //R07 <--0000h
 123   1              SPIdelay(50);  //delay about 25us
 124   1              WriteSPI(0x39, 0x1f00);  //R07 <--0000h
 125   1              SPIdelay(50);  //delay about 25us
 126   1      
 127   1              // delay about 40ms     -- 48ms         
 128   1              delay(4);               
 129   1      
 130   1              ///////////////////////////////////////////////////////////////////
 131   1              // Power On Status---Display On Function 1
 132   1              ///////////////////////////////////////////////////////////////////
 133   1              WriteSPI(0x07, 0x0001);  //R07 <--0000h
 134   1              
 135   1              // delay about 40ms     -- 48ms         
 136   1              delay(4);               
 137   1              
 138   1              ///////////////////////////////////////////////////////////////////
 139   1              // Power On Status---Display On Function 1
 140   1              ///////////////////////////////////////////////////////////////////
 141   1              WriteSPI(0x07, 0x0101);  //R07 <--0000h
 142   1                      
 143   1              // delay about 40ms     -- 48ms         
 144   1              delay(4);               
 145   1              
 146   1              ///////////////////////////////////////////////////////////////////
 147   1              // Power On Status---Display On Function 2
 148   1              ///////////////////////////////////////////////////////////////////
 149   1              WriteSPI(0x07, 0x0103);  //R07 <--0000h
 150   1      
 151   1      }
 152          
 153          
 154          void SPIdelay(BYTE d)
 155          {
 156   1               BYTE i;
 157   1               for(i=0; i<d; i++){
 158   2               }
 159   1      }
 160          
 161          void WriteSPI(BYTE addr, WORD dat)
 162          {
 163   1              //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
             -SE);
 164   1              int      j;
 165   1              //unsigned char DELAY=100;
 166   1              unsigned char DELAY=1; // delay about 1us
 167   1              DWORD xAddress, xData;
 168   1              
 169   1              xAddress =      0x00600000L|(0x000000ffL & addr);
 170   1              xData =         0x00620000L|(0x0000ffffL & dat);
 171   1              
 172   1              ///////////////////////address
 173   1              SPI_CS_EN; //SPI_CS     = 1;            //      EN = High                                       CS high
 174   1              SPI_SCL=1;                                                      //      SCL High
 175   1              SPI_SDA = 1;                                                    //      Data High
 176   1      
C51 COMPILER V7.06   SPI                                                                   02/21/2008 14:00:31 PAGE 4   

 177   1              SPIdelay(DELAY); // delay about 1us
 178   1      
 179   1              SPI_CS_DS; //SPI_CS     = 0;            //      EN = Low                                CS Low
 180   1              SPIdelay(DELAY);// delay about 1us
 181   1      
 182   1              SPI_SCL = 0;                                                    //      SCL Low
 183   1              SPIdelay(DELAY);// delay about 1us
 184   1              
 185   1              for (j = 23; j >= 0; j--)//17
 186   1              {
 187   2      
 188   2                      if ((xAddress >> j) & 0x00000001L)      // DATA HIGH or LOW

⌨️ 快捷键说明

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