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

📄 spi.c

📁 AVR单片机实现SPI通信完整源码,可直接拿过来用了
💻 C
📖 第 1 页 / 共 2 页
字号:
// Compiler : IAR EWAVR
// Target : M8
// Crystal: 8Mhz
//#include "main.h"
extern uchar   uart_ping_data[4];
void eep_program_disable();

#define SS      2
#define MOSI    3
#define MISO    4
#define SCK     5
#define DDR_SPI   DDRB                          //
#define PORT_SPI  PORTB
//********************define of AT25128*******************************
#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,0xaa,0xaa,0x00,0x00,0xaa,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] = {0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x00,0x00,0x00};                                                    //SPI receive buffer
uchar   SPI_tx_counter 	= 	0x00;					//data number counter
//uchar	SPI_array_num	=	0x00;					//save the array data number
uchar	SPI_op_code		=	0x00;					//the spi op_code transmit control(counter)
uchar   __flash		*P_SPI_tx;						//data pionter
uchar   SPI_start_flag 	=	0x00;                	//the flag of if the transmit start or not
uchar	SPI_end_flag	=	0x00;					//the flag of if the transmit end or not
uchar	SPI_once_end_flag = 0x00;					//one row data transmit over flag
uchar 	SPI_all_end_flag =  0x00;					//all data transfer
uchar   SS_SET_TIME    	=	0x00;
uchar	SPI_rx_counter	=	0x00;					//
uchar	SPI_pro_flag	=	0x00;					//which row to transmit now
uchar	SPI_status		=   0x00;
uchar	SPI_Rstatus_flag =	0x00;
uchar	SPI_rx_flag		= 0x00;						//read eeprom
__regvar __no_init uchar SPI_tx_addl @ 14;  		//global variable in register,save the low address byte in eeprom
__regvar __no_init uchar SPI_tx_addh @ 13;  		//global variable in register,save the high address byte in eeprom
uchar	SPI_address_count	= 0x00;					//write data number counter,max 64 bytes
//************************************************************************************************
//#define PRE_OPCODE_NUM		14
//__flash uchar pre_opcode[17] = {0x10,0x00,0x00,0x10,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};				//14 effect bytes
__flash uchar dspcode[] = {
0x20,0x00,0x00,0x08,0xAA,0x00,0x18,0x00,0x03,0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x03,0x24,0x00,0x00,0x04,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,0xEE,0xFE,0xF4,0x95,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x20,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x01,
0x20,0x00,0xA0,0x76,0x00,0x00,0x03,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x0E,0x76,0x00,0x01,0xA0,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x02,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x0D,
0x20,0x00,0xC0,0xF4,0x95,0xE8,0x03,0x76,0x00,0x01,0xA0,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x04,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x05,0xF2,0x74,0x06,0x2F,
0x20,0x00,0xE0,0xF4,0x95,0xE8,0x0A,0xF2,0x74,0x06,0x2F,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x23,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x22,0x76,0x81,0x00,0x00,0x76,0x00,0x00,0x01,
0x20,0x01,0x00,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x01,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x01,0xF2,0x74,0x06,0x2F,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x00,
0x20,0x01,0x20,0x69,0x81,0x00,0x10,0xEE,0x02,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFE,0xF4,0x95,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x01,0x76,0x00,0x00,0x00,
0x20,0x01,0x40,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x00,0x76,0x00,0x18,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x0D,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x0E,
0x20,0x01,0x60,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x02,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x04,0x76,0x00,0x20,0x00,0xF2,0x74,0x04,0x28,
0x20,0x01,0x80,0xF4,0x95,0xE8,0x07,0x76,0x00,0x00,0x01,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x06,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x05,0xF2,0x74,0x06,0x2F,
0x20,0x01,0xA0,0xF4,0x95,0xE8,0x0A,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x03,0x76,0x00,0x00,0x40,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x01,0xF2,0x74,0x06,0x2F,
0x20,0x01,0xC0,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x43,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x42,0x76,0x81,0x00,0x00,0x76,0x00,0x00,0x41,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x01,
0x20,0x01,0xE0,0x76,0x00,0x18,0x01,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x00,0xF2,0x74,0x06,0x2F,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x00,0x69,0x81,0x0C,0x00,0xEE,0x02,0x8A,0x11,
0x20,0x02,0x00,0xFC,0x00,0xF4,0x95,0x4A,0x08,0x4A,0x09,0x4A,0x0A,0x4A,0x0B,0x4A,0x0C,0x4A,0x0D,0x4A,0x10,0x4A,0x11,0x4A,0x12,0x4A,0x13,0x4A,0x14,0x4A,0x15,0x4A,0x16,0x4A,0x17,
0x20,0x02,0x20,0x4A,0x17,0x4A,0x19,0x4A,0x0E,0x4A,0x06,0x4A,0x07,0x4A,0x1A,0x4A,0x1D,0x4A,0x1B,0x4A,0x1C,0x68,0xF8,0x00,0x07,0x7D,0x3F,0x69,0xF8,0x00,0x07,0x40,0x00,0x68,0xF8,
0x20,0x02,0x40,0x00,0x1D,0xFF,0xFC,0x48,0x18,0x68,0xF8,0x00,0x18,0xFF,0xFE,0xF4,0x95,0xF4,0x95,0x4A,0x08,0xEE,0xFD,0x77,0x11,0x00,0x21,0x71,0x81,0x30,0xA7,0x77,0x11,0x00,0x20,
0x20,0x02,0x60,0x71,0x81,0x30,0xA6,0xF7,0xB8,0x72,0x11,0x30,0xA5,0x6F,0xF8,0x30,0xA6,0x0C,0x5F,0x80,0xE1,0x02,0x00,0x10,0xF8,0x30,0xA6,0x4E,0xF8,0x30,0xAA,0x12,0xF8,0x30,0x7F,
0x20,0x02,0x80,0x4E,0x00,0x56,0xF8,0x30,0xAA,0xF0,0x74,0x07,0x09,0x4E,0xF8,0x30,0xAA,0xF7,0xB8,0x56,0xF8,0x30,0xAA,0xF4,0x79,0x4E,0xF8,0x30,0xAA,0x71,0xF8,0x30,0xAB,0x30,0xA6,
0x20,0x02,0xA0,0x77,0x11,0x00,0x23,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x22,0x70,0x81,0x30,0xA6,0x6B,0xF8,0x30,0xA5,0x00,0x01,0x72,0x11,0x30,0xA5,0x77,0x10,0x00,0x80,0xF5,0xA9,
0x20,0x02,0xC0,0xF8,0x30,0x05,0x70,0x10,0xF8,0x30,0x4B,0xF8,0x44,0x05,0x70,0x76,0xF8,0x30,0xA5,0x00,0x00,0x4A,0x1A,0x77,0x13,0x03,0x80,0x77,0x14,0x03,0x00,0xEC,0x7F,0xE5,0x9A,
0x20,0x02,0xE0,0x77,0x13,0x02,0x00,0x77,0x14,0x03,0x80,0xEC,0x7F,0xE5,0x9A,0x8A,0x1A,0x76,0xF8,0x30,0x4B,0x00,0x01,0x60,0xF8,0x30,0x4B,0x00,0x01,0xF8,0x20,0x05,0x78,0x76,0xF8,
0x20,0x03,0x00,0x30,0x4B,0x00,0x00,0xEE,0x03,0x8A,0x18,0xF4,0x95,0x8A,0x1C,0x8A,0x1B,0x8A,0x1D,0x8A,0x1A,0x8A,0x07,0x8A,0x06,0x8A,0x0E,0x8A,0x19,0x8A,0x17,0x8A,0x17,0x8A,0x16,
0x20,0x03,0x20,0x8A,0x15,0x8A,0x14,0x8A,0x13,0x8A,0x12,0x8A,0x11,0x8A,0x10,0x8A,0x0D,0x8A,0x0C,0x8A,0x0B,0x8A,0x0A,0x8A,0x09,0x8A,0x08,0xF4,0xEB,0x4A,0x07,0x4A,0x1D,0x68,0xF8,
0x20,0x03,0x40,0x00,0x07,0x7D,0x3F,0x69,0xF8,0x00,0x07,0x40,0x00,0x68,0xF8,0x00,0x1D,0xFF,0xFC,0xF4,0x95,0x8A,0x1D,0x8A,0x07,0xF4,0xEB,0xF4,0x95,0x4A,0x08,0x4A,0x09,0x4A,0x0A,
0x20,0x03,0x60,0x4A,0x10,0x4A,0x11,0x4A,0x06,0x4A,0x07,0x4A,0x1D,0x68,0xF8,0x00,0x07,0x7D,0x3F,0x69,0xF8,0x00,0x07,0x40,0x00,0x68,0xF8,0x00,0x1D,0xFF,0xFC,0xF4,0x95,0x77,0x11,
0x20,0x03,0x80,0x00,0x41,0x71,0x81,0x30,0xAC,0x77,0x11,0x00,0x40,0x71,0x81,0x30,0xAD,0x60,0xF8,0x30,0xA4,0x00,0x01,0xF8,0x20,0x05,0xD7,0x72,0x11,0x30,0x7E,0xF4,0x95,0x70,0xE1,
0x20,0x03,0xA0,0x30,0x7F,0x30,0xAC,0x6B,0xF8,0x30,0x7E,0x00,0x01,0x72,0x11,0x30,0x7E,0x77,0x10,0x00,0x05,0xF5,0xA9,0xF8,0x30,0x05,0xE6,0x76,0xF8,0x30,0xA4,0x00,0x00,0xF0,0x73,
0x20,0x03,0xC0,0x05,0xE6,0x60,0xF8,0x30,0xAC,0x00,0x05,0xF8,0x20,0x05,0xE6,0x10,0xF8,0x30,0xA4,0xF8,0x44,0x05,0xE6,0x76,0xF8,0x30,0xA4,0x00,0x01,0x76,0xF8,0x30,0x7E,0x00,0x00,
0x20,0x03,0xE0,0x60,0xF8,0x30,0xA4,0x00,0x02,0xF8,0x20,0x06,0x00,0x72,0x11,0x30,0x7E,0xF4,0x95,0x70,0xE1,0x30,0x84,0x30,0xAC,0x6B,0xF8,0x30,0x7E,0x00,0x01,0x72,0x11,0x30,0x7E,
0x20,0x04,0x00,0x77,0x10,0x00,0x20,0xF5,0xA9,0xF8,0x30,0x06,0x0F,0x76,0xF8,0x30,0xA4,0x00,0x00,0xF0,0x73,0x06,0x0F,0x60,0xF8,0x30,0xAC,0x00,0x20,0xF8,0x20,0x06,0x0F,0x10,0xF8,
0x20,0x04,0x20,0x30,0xA4,0xF8,0x44,0x06,0x0F,0x76,0xF8,0x30,0xA4,0x00,0x02,0x76,0xF8,0x30,0x7E,0x00,0x00,0x77,0x11,0x00,0x43,0x70,0x81,0x30,0xAC,0x77,0x11,0x00,0x42,0x70,0x81,
0x20,0x04,0x40,0x30,0xAD,0x8A,0x1D,0x8A,0x07,0x8A,0x06,0x8A,0x11,0x8A,0x10,0x8A,0x0A,0x8A,0x09,0x8A,0x08,0xF4,0xEB,0x4A,0x07,0x4A,0x1D,0x68,0xF8,0x00,0x07,0x7D,0x3F,0x69,0xF8,
0x20,0x04,0x60,0x00,0x07,0x40,0x00,0x68,0xF8,0x00,0x1D,0xFF,0xFC,0xF4,0x95,0x8A,0x1D,0x8A,0x07,0xF4,0xEB,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0xF1,0x10,0x00,0x01,0x48,0x08,
0x20,0x04,0x80,0xFA,0x45,0x06,0x43,0xF4,0x95,0x81,0x00,0x71,0x00,0x00,0x11,0x48,0x11,0xF0,0x10,0x00,0x01,0x6E,0x81,0x06,0x3A,0xF4,0x95,0x80,0x00,0xEE,0x01,0x8A,0x11,0xFC,0x00,
0x20,0x04,0xA0,0x4A,0x11,0x77,0x58,0x00,0x00,0x77,0x12,0x00,0x58,0x96,0x0F,0xF8,0x20,0x06,0x51,0x96,0x0F,0xF8,0x30,0x06,0x4E,0x77,0x58,0x81,0x07,0x77,0x11,0x00,0x2B,0x76,0x81,
0x20,0x04,0xC0,0x00,0x01,0x77,0x28,0x42,0x40,0x77,0x1D,0x00,0xA0,0x77,0x29,0x08,0x02,0x77,0x00,0x00,0x00,0xF0,0x74,0x04,0x37,0xF0,0x74,0x04,0x8B,0xF6,0xBB,0xF7,0xB8,0x10,0xF8,
0x20,0x04,0xE0,0x2A,0x7F,0xF8,0x47,0x06,0x64,0xF0,0x73,0x06,0x64,0xFC,0x00,0xFC,0x00,0x77,0x18,0x2C,0x00,0x6B,0xF8,0x00,0x18,0x03,0xFF,0x68,0xF8,0x00,0x18,0xFF,0xFE,0xF7,0xB8,
0x20,0x05,0x00,0xF7,0xBE,0xF6,0xB9,0xF4,0xA0,0xF6,0xB7,0xF6,0xB5,0xF6,0xB6,0xF0,0x20,0x07,0x24,0xF1,0x00,0x00,0x01,0xF8,0x4D,0x06,0x99,0xF6,0xB8,0xF4,0x95,0xF0,0x20,0x07,0x24,
0x20,0x05,0x20,0xF0,0x73,0x06,0x93,0x7E,0xF8,0x00,0x12,0xF0,0x00,0x00,0x01,0x47,0xF8,0x00,0x11,0x7E,0x92,0x00,0xF8,0x00,0x11,0xF0,0x00,0x00,0x01,0x7E,0xF8,0x00,0x11,0xF0,0x00,
0x20,0x05,0x40,0x00,0x01,0x6C,0x89,0x06,0x88,0xF7,0xB8,0xEE,0xFC,0xF0,0x20,0xFF,0xFF,0xF1,0x00,0x00,0x01,0xF8,0x4D,0x06,0xB1,0xF6,0xB8,0xF4,0x95,0xF0,0x20,0xFF,0xFF,0xF2,0x73,
0x20,0x05,0x60,0x06,0xAB,0x4E,0x02,0xF4,0x95,0xF5,0xE3,0x56,0x02,0x7E,0x00,0x11,0x00,0xFA,0x4C,0x06,0xA9,0x6B,0x03,0x00,0x01,0xF6,0xB8,0xEE,0x04,0xF0,0x74,0x06,0x46,0xF0,0x74,
0x20,0x05,0x80,0x06,0xB7,0x4A,0x11,0x4A,0x16,0xEE,0xFF,0x10,0xF8,0x30,0xD1,0xF4,0xE3,0x72,0x11,0x30,0xAE,0x10,0xF8,0x00,0x11,0xF8,0x45,0x06,0xCF,0x48,0x11,0xF0,0x00,0x30,0xAF,
0x20,0x05,0xA0,0x88,0x16,0xF4,0x95,0xF4,0x95,0x10,0xEE,0xFF,0xFF,0xF4,0xE3,0x6C,0xE9,0xFF,0xFF,0x06,0xC9,0x10,0xF8,0x30,0xD0,0xF8,0x45,0x06,0xD6,0x10,0xF8,0x30,0xD0,0xF4,0xE3,
0x20,0x05,0xC0,0x10,0xF8,0x30,0xCF,0xF8,0x45,0x06,0xDD,0x10,0xF8,0x30,0xCF,0xF4,0xE3,0x10,0xF8,0x30,0xD2,0xF4,0xE3,0xF0,0x74,0x07,0x06,0xF0,0x73,0x06,0xE2,0x4A,0x11,0x88,0x11,
0x20,0x05,0xE0,0x10,0xF8,0x30,0xD1,0xF4,0xE3,0xF7,0xB8,0xE8,0x20,0x08,0xF8,0x30,0xAE,0xF8,0x46,0x06,0xF6,0x10,0xF8,0x30,0xD2,0xF4,0xE3,0xF2,0x73,0x07,0x04,0xF4,0x95,0xE8,0x01,
0x20,0x06,0x00,0x72,0x12,0x30,0xAE,0x48,0x12,0xF0,0x00,0x00,0x01,0x80,0xF8,0x30,0xAE,0x70,0xE2,0x30,0xAF,0x00,0x11,0x10,0xF8,0x30,0xD2,0xF4,0xE3,0xE8,0x00,0x8A,0x11,0xFC,0x00,
0x20,0x06,0x20,0xF4,0x95,0xF0,0x73,0x07,0x07,0xF4,0x95,0x4A,0x0B,0x4A,0x0C,0x4A,0x0D,0x4A,0x0E,0xEE,0xFD,0xF4,0x95,0x4E,0x00,0x31,0x09,0x44,0x08,0x35,0x01,0x24,0x09,0xF7,0x6F,
0x1C,0x06,0x40,0xF6,0x01,0xEE,0x03,0x8A,0x0E,0x8A,0x0D,0x8A,0x0C,0x8A,0x0B,0xFC,0x00,0xFC,0x00,0x80,0xF8,0x30,0xD1,0xFC,0x00,0x80,0xF8,0x30,0xD2,0xFC,0x00,
0x20,0x06,0x5C,0x01,0x4F,0x00,0x00,0x07,0x24,0x00,0x01,0x30,0x7E,0x00,0x00,0x00,0x05,0x30,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x84,0x00,0x00,
0x20,0x06,0x7C,0x00,0x00,0x00,0x00,0x00,0x01,0x30,0xA4,0x00,0x00,0x00,0x01,0x30,0xA5,0x00,0x00,0x00,0x01,0x30,0xA6,0x00,0x00,0x00,0x01,0x30,0xA7,0x00,0x00,0x00,0x01,0x30,0xA8,
0x20,0x06,0x9C,0x00,0x00,0x00,0x01,0x30,0xA9,0x00,0x00,0x00,0x02,0x30,0xAA,0x00,0x00,0x00,0x00,0x00,0x80,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x06,0xBC,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,
0x20,0x06,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x06,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x32,0x00,0x1E,0x00,0x32,0x00,0x00,0x00,0x00,
0x20,0x07,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0x3C,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,
0x20,0x07,0x5C,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,
0x20,0x07,0x7C,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,
0x20,0x07,0x9C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x25,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0xBC,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,
0x20,0x07,0xDC,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,
0x20,0x07,0xFC,0x00,0x00,0x00,0x25,0x30,0x25,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,
0x20,0x08,0x1C,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,
0x20,0x08,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x30,0x4A,0x00,0x00,0x00,0x01,0x30,0x4B,0x00,0x00,0x00,0x0F,0x30,0x4C,
0x20,0x08,0x5C,0x1C,0x99,0xE4,0xDF,0x00,0x00,0xF4,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0x20,0x08,0x7C,0x30,0x5B,0x7F,0x8B,0x80,0x75,0x00,0x00,0xC0,0x75,0x00,0x00,0x00,0x04,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x30,0x64,0x00,0x00,0x00,0x00,
0x20,0x08,0x9C,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x08,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x30,0x78,0x3C,0x8C,0x0F,0x38,0x00,0x02,0x30,0x7A,0x3F,0x24,0x21,0xD6,0x00,0x01,0x30,0x7C,0x00,0x01,0x00,0x01,
0x20,0x08,0xDC,0x30,0x7D,0x00,0x00,0x00,0x01,0x30,0xAE,0x00,0x00,0x00,0x01,0x30,0xCF,0x00,0x00,0x00,0x01,0x30,0xD0,0x00,0x00,0x00,0x01,0x30,0xD1,0x07,0x1D,0x00,0x01,0x30,0xD2,
0x04,0x08,0xFC,0x07,0x1D,0x00,0x00,
0x20,0x09,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0xF2,0x73,0x06,0x6D,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x20,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x40,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x60,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x80,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0xA0,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF2,0x73,0x04,0xF7,0xF4,0x95,0xF4,0x95,0xF2,0x73,0x05,0x93,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0xC0,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF2,0x73,0x05,0xA2,0xF4,0x95,0xF4,0x95,0xF2,0x73,
0x20,0x09,0xE0,0x06,0x20,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x06,0x0A,0x00,0xF4,0x95,0xF4,0x95,0xF4,0x95,
0x20,0x0A,0x06,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x32,0x00,0x00,0x00,0x01,0x00,0x32,0x00,0x06,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,
0x20,0x0A,0x26,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,
0x20,0x0A,0x46,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x01,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,
0x20,0x0A,0x66,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,
0x08,0x0A,0x86,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
0x00
};

//************************************************************************************************
void  delay_ss()
{
  while(SS_SET_TIME--)
    ;
}
//***************************************
//DSP bootload wait initialize
//***************************************
void  dsp_boot_wait()
{
	//SFIOR = 0x04;										//PUD set 1
    DDR_SPI &= 0xC3;									//SPI port are all intput
    PORT_SPI &= 0xC3;									//SPI port are all Hi-Z
    DDRD 	&= 0xDF;									//PIND.5 is input
    PORTD 	&= 0xDF;									//PIND.5 Hi-Z
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//SPI comm,MCU is master
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
void  SPI_init()
{
  	uchar temp_reg;
  	SPCR = 0x00;
    SFIOR &= 0xFB;										//PUD clear 0
  	DDR_SPI = (1 << SS)|(1 << MOSI)|(1 << SCK);   		//SS,MOSI,SCK is output,MISO is input
  	PORT_SPI |= 0x10;                             		//pull high resistance enable
  	SPSR = 0x00;                                  		//
  	SPCR = 0xD3;                                  		//SPI enable, MSB first,MASTER mode,fosc/4,interrupt enable
  	temp_reg = SPSR;
  	temp_reg = SPDR;                              		//clear SPIF flag
    temp_reg |= temp_reg;
}

//*****************************************
#pragma vector = SPI_STC_vect                   		//SPI transmit interrupt
__interrupt void SPI_isr(void)                  		//clear the  SPIF flag
{
  	if(SPI_rx_flag == 0x00)
  	{
 		if(SPI_Rstatus_flag == 1)							//read eeprom status
    	{
      		SPDR = 0xFF;
        	SPI_Rstatus_flag++;
    	}
    	else if(SPI_Rstatus_flag == 2)
    	{
      		SPI_status = SPDR;
        	SPI_Rstatus_flag++;
        	SET_BIT(PORT_SPI,SS);										//pull up the SS,end the transmit
    	}
		else if((SPI_end_flag == 0x00) && (SPI_Rstatus_flag == 3))		//all data transmit not end and not in read status register state
    	{
        	if(SPI_address_count == 64)									//have constant write 64 bytes(1 page)
        	{
            	SPI_op_code = 0x00;										//ready for send write enable op_code
            	SET_BIT(PORT_SPI,SS);									//pull up the SS,end the transmit
            	SPI_Rstatus_flag = 0x00;								//clear the read status flag ***
            	//CLR_BIT(SPCR,7);										//disable SPI interrupt
        	}
       		else
        	{
      			if(SPI_tx_counter < (*P_SPI_tx))						//this array transmition not end
        		{
          			if(SPI_op_code <= 3)
              			SPI_op_code++;
      				if(SPI_op_code == 0x01)								//at the beginning of this array data transmit
        			{
          				SET_BIT(PORT_SPI,SS);							//pull up the SS
      					CLR_BIT(PORT_SPI,SS);							//pull down the SS
      					SPDR = WRITE;                  					//send the write op_code
        			}
        			else if(SPI_op_code == 0x02)
          				SPDR = SPI_tx_addh;								//send the address high byte
            		else if(SPI_op_code == 0x03)
                		SPDR = SPI_tx_addl;								//send the address low byte
            		else if(SPI_op_code == 0x04)						//send this buffer data
            		{
              			SPDR = SPI_tx_buffer[SPI_tx_counter];	
              			SPI_tx_counter++;
              			SPI_address_count++;

⌨️ 快捷键说明

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