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

📄 main.h

📁 用STC89系列单片机的通用IO模拟SPI通信源码
💻 H
📖 第 1 页 / 共 5 页
字号:
// Compiler : Keil uVision2
// Target : STC89LE516AD
// Crystal: 12Mhz
//*********************************************************
#define uchar unsigned char
#define uint  unsigned int
//*********************************************************
//sbit	CS			=	P1^0;
sbit 	CS			=   P3^0;
sbit	SCK			=	P1^1;
//sbit	SO			=	P3^0;
sbit 	SO			= 	P1^0;
sbit	SI			=	P3^1;
//********************define of AT25128*******************************
#define	NULL_DATA		0xFF					//no use data
#define WREN    		0x06                    //set write enable latch
#define WRDI    		0x04                    //reset write enable latch
#define RDSR    		0x05                    //read status register
#define WRSR    		0x01                    //write status register
#define READ    		0x03                    //read data from memory array
#define WRITE   		0x02                    //write data to memory array
#define	ALL_NOT_PRO		0x02					//all not protected,to status register
#define	ALL_PROTECTED	0x8C					//all protected ,to status register
#define SIZE    		32           			//max data number write to eeprom everytime
//*********************************************************
uchar   SPI_tx_buffer[SIZE] = {	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                               	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//SPI transmit buffer
uchar   SPI_rx_buffer[SIZE + 1] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};  
uchar   SPI_tx_counter 	= 	0x00;					//data number counter
//uchar	SPI_op_code		=	0x00;					//the spi op_code transmit control(counter)
//uchar	code *P_SPI_tx;								//data pionter
uint	P_SPI_tx;
uint	P_SPI_rx;									//read data pointer
uchar   SPI_rx_counter	=	0x00;					//

uchar	SPI_pro_flag	=	0x00;					//which row to transmit now
uchar	SPI_status		=   0x00;					
uchar	SPI_rx_flag		= 0x00;						//read eeprom
uchar 	SPI_tx_addl 	= 0x00;  					//global variable in register,save the low address byte in eeprom
uchar 	SPI_tx_addh 	= 0x00;  	
uchar	SPI_rx_addl     = 0x00;						//read data use
uchar	SPI_rx_addh     = 0x00;			
//uchar	SPI_address_count	= 0x00;					//write data number counter,max 64 bytes
uchar	row_data_num	= 0x00;
//
uchar	led_pp_data     = 0x00;
uchar	led_pp_data1    = 0x00;
uchar   led2_flash_time_count = 0x00;
//*****************BIT flag********************************
bit		SPI_Rstatus_flag =  0;					//read status register
bit   	SPI_start_flag 	=	0;                	//the flag of if the transmit start or not
bit		SPI_wrt_end_flag =	0;					//the flag of if the transmit end or not
bit		SPI_once_end_flag = 0;					//one row data transmit over flag
bit 	SPI_all_end_flag =  0;					//all data transfer
bit		b64_enable_flag = 	0;					//1;enable write .  0; disable write.
bit		SPI_read_flag   =   0;					//begin to verify  the data flag
bit		verify_on_flag	=   0;					//
bit		verify_error_flag	= 0;				//
//*********************************************************
sbit	LED1		=	P2^0;
sbit	LED2		=	P2^1;
sbit	LED3		=	P2^2;
//
void 	delay(uchar temp_data);
void   	write_byte(uchar wrt_data);
void	write_address_ajust();
uchar 	read_byte();
void 	SPI_write();
void 	put_spi_char();
void 	eep_program_enable();

/*
//old version data that can well run in old PCB data,
uchar code dspcode[] = {
0x20,0x00,0x00,0x08,0xAA,0x00,0x18,0x00,0x03,0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x07,0x2F,0x00,0x00,0x05,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x38,
0x20,0x00,0x20,0x80,0x81,0x77,0x11,0x00,0x39,0x10,0x81,0xEE,0x01,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x38,0x80,0x81,0x77,0x11,0x00,0x39,
0x20,0x00,0x40,0x10,0x03,0x80,0x81,0xEE,0x01,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x48,0x80,0x81,0x77,0x11,0x00,0x49,0x10,0x81,0xEE,0x01,
0x20,0x00,0x60,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x48,0x80,0x81,0x77,0x11,0x00,0x49,0x10,0x03,0x80,0x81,0xEE,0x01,0x8A,0x11,0xFC,0x00,
0x20,0x00,0x80,0xFC,0x00,0x4A,0x11,0x77,0x11,0x00,0x3C,0x76,0x81,0x00,0xE0,0x77,0x11,0x00,0x3D,0x76,0x81,0x00,0x00,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFE,0xF4,0x95,0x76,0x00,
0x20,0x00,0xA0,0x00,0x00,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x20,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x01,0x76,0x00,0x00,0x03,0xF2,0x74,0x05,0x0D,0xF4,0x95,
0x20,0x00,0xC0,0xE8,0x0E,0x76,0x00,0x00,0xA0,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x02,0x76,0x00,0x00,0x00,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x03,0x76,0x00,0x01,0xA0,0xF2,0x74,
0x20,0x00,0xE0,0x05,0x0D,0xF4,0x95,0xE8,0x04,0x76,0x00,0x00,0x00,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x05,0xF2,0x74,0x07,0x73,0xF4,0x95,0xE8,0x0A,0xF2,0x74,0x07,0x73,0xF4,0x95,
0x20,0x01,0x00,0xE8,0x0A,0x77,0x11,0x00,0x23,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x22,0x76,0x81,0x00,0x00,0x76,0x00,0x00,0x01,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x00,0x76,0x00,
0x20,0x01,0x20,0x00,0x01,0xF2,0x74,0x05,0x0D,0xF4,0x95,0xE8,0x01,0xF2,0x74,0x07,0x73,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x00,0x69,0x81,0x00,0x10,0x69,0x81,0x00,0x30,0xEE,0x02,
0x20,0x01,0x40,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFE,0xF4,0x95,0x76,0x00,0x00,0x00,0xF2,0x74,0x05,0x28,0xF4,0x95,0xE8,0x01,0x76,0x00,0x00,0x00,0xF2,0x74,0x05,0x28,0xF4,0x95,
0x20,0x01,0x60,0xE8,0x00,0x76,0x00,0x18,0x00,0xF2,0x74,0x05,0x28,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x0D,0xF2,0x74,0x05,0x28,0xF4,0x95,0xE8,0x0E,0x76,0x00,0x00,0x00,0xF2,0x74,
0x20,0x01,0x80,0x05,0x28,0xF4,0x95,0xE8,0x02,0x76,0x00,0x00,0x00,0xF2,0x74,0x05,0x28,0xF4,0x95,0xE8,0x04,0x76,0x00,0x20,0x00,0xF2,0x74,0x05,0x28,0xF4,0x95,0xE8,0x07,0x76,0x00,

⌨️ 快捷键说明

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