spi.c.bak

来自「一个基于XMODEM协议的下载字库的程序」· BAK 代码 · 共 106 行

BAK
106
字号

#define SPI_GLOBAL
#include "config.h"

unsigned char bdata gg;
sbit ggbit0 = gg^0;
sbit ggbit1 = gg^1;
sbit ggbit2 = gg^2;
sbit ggbit3 = gg^3;
sbit ggbit4 = gg^4;
sbit ggbit5 = gg^5;
sbit ggbit6 = gg^6;
sbit ggbit7 = gg^7;

void SPI_SendChar(INT8U ch)
{
	INT8U data i=8;
	
	while(i--)
	{
		SCK = 0;
		if((ch & 0x80) == 0x80)	SI = 1;
		else					SI = 0;
		SCK = 1;
		ch <<= 1;
	}
}

INT8U SPI_ReadChar(void)
{
	INT8U data i=8, ch=0;
	
	while(i--)
	{
		ch <<= 1;
		SCK = 1;
		SCK = 0;
		
		if(SO == 1)	ch |= 0x01;
		else		ch &= 0xFE;
	}
	SCK = 1;
	
	return ch;
}

INT8U SPI_ReadStatus(void)
{
	INT8U data ch;
	
	CS = 0;
	SPI_SendChar(RDSR_INST);
JREAD_STATUS0:
	ch = SPI_ReadChar();
	if((ch & 0x01) == 1)	goto JREAD_STATUS0;
	CS = 1;
	
	return ch;
}

void SPI_EnPro(void)
{
	CS = 0;
	SPI_SendChar(PREN_INST);
	CS = 1;
	SPI_ReadStatus();
}

void SPI_DisPro(void)
{
	CS = 0;
	SPI_SendChar(PRDI_INST);
	CS = 1;
	SPI_ReadStatus();
}

void SPI_WriteStatus(INT8U st)
{
	SPI_EnPro();
	CS = 0;
	SPI_SendChar(PRSR_INST);
	SPI_SendChar(st);
	CS = 1;
	SPI_ReadStatus();
}

void SPI_EraseBulk(void)
{
	SPI_WriteStatus(0x00);	//关闭NX25P40写保护
	SPI_EnPro();
	CS = 0;
	SPI_SendChar(BULK_ERASE);
	CS = 1;
	SPI_ReadStatus();
}







void vProgramSPI(void)
{

}

⌨️ 快捷键说明

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