📄 spi.lst
字号:
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 + -