spi.c

来自「This is example of using Atmel at89c5131」· C语言 代码 · 共 61 行

C
61
字号
#include "spi.h"
#include <Atmel/at89c5131.h>



unsigned char serial_data;
bit transmit_completed = 0;
bit overrun = 0;
bit fault_tasking = 0;
char SpiErrorCode = 0;
/**
 * FUNCTION_PURPOSE: This file set up spi in master mode with
 * Fclk Periph/128 as baud rate  and without slave select pin
 * FUNCTION_INPUTS: P1.5(MISO) serial input
 * FUNCTION_OUTPUTS: P1.7(MOSI) serial output
 *                   P1.1
 */
//----------------------------------------------------------------------------
void InitSpi()
{
	//CS_SPI = 1;
	EA = 0;
	SPCON |= 0x10;                /* Master mode */
	SPCON |= 0x80;                /* Fclk Periph/128 */
	SPCON |= 0x20;                /* P1.1 is available as standard I/O pin */
	SPCON |= 0x08;               /* CPOL=0; transmit mode example */
	SPCON |= 0x04;                /* CPHA=0; transmit mode example */
	IEN1 |= 0x04;                 /* enable spi interrupt */
	SPCON |= 0x40;                /* run spi */
	EA = 1; 						/* enable interrupts */
}


//----------------------------------------------------------------------------
void it_SPI(void) interrupt 9 /* interrupt address is 0x004B */
{
	switch(SPSTA)         /* read and clear spi status register */
	{
		case 0x80:
        	serial_data = SPDAT;   /* read receive data */
		 	SpiErrorCode = 0;
         	transmit_completed = 1;/* set software flag */
 			break;

		case 0x10:
         	/* put here for mode fault tasking */
		 	SpiErrorCode = SPI_ERROR_MODF;
		 	transmit_completed = 1;
			break;

		case 0x40:
        	/* put here for overrun tasking */
		 	SpiErrorCode = SPI_ERROR_OVERRUN;
		 	transmit_completed = 1;
			break;
	}
}
//----------------------------------------------------------------------------

/*******************************************************
*	玎镨覃忄弪 徉轵 潆

⌨️ 快捷键说明

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