#ifndef __HARDSPI_H
#define __HARDSPI_H

#include "sys.h"

#define   HARDSPI_SPIF    0x80        //SPI传输完成标志。写入1清0。
#define   HARDSPI_WCOL    0x40        //SPI写冲突标志。写入1清0。

#ifndef   HARDSPI_SPI_SCK_PIN
#define   HARDSPI_SPI_SCK_PIN       P25
#endif

#ifndef   HARDSPI_SCK_PIN_MODE
#define   HARDSPI_SCK_PIN_MODE    {P2M1&=~0x20;P2M0&=~0x20;}    //P25双向IO口
#endif

#ifndef   HARDSPI_SPI_MISO_PIN
#define   HARDSPI_SPI_MISO_PIN      P24
#endif

#ifndef   HARDSPI_MISO_PIN_MODE
#define   HARDSPI_MISO_PIN_MODE   {P2M1&=~0x10;P2M0&=~0x10;}    //P24双向IO口
#endif

#ifndef   HARDSPI_SPI_MOSI_PIN
#define   HARDSPI_SPI_MOSI_PIN      P23
#endif 

#ifndef   HARDSPI_MOSI_PIN_MODE
#define   HARDSPI_MOSI_PIN_MODE   {P2M1&=~0x08;P2M0&=~0x08;}    //P23双向IO口
#endif

#define   HARDSPI_CPHA              0      //数据 SS 管脚为低电平驱动第一位数据并在 SCLK 的后时钟沿改变数据
#define   HARDSPI_CPOL              0      //SCLK 空闲时为低电平，SCLK 的前时钟沿为上升沿，后时钟沿为下降沿

void hardspi_init(uint8 speed);         //spi初始化
void hardspi_write_byte(uint8 out);     //spi写一个字节
uint8 hardspi_read_byte();              //spi读取一个字节
uint8 hardspi_wr_data(uint8 dat);      //spi写入一个字节并且返回一个读取的字节

#endif      //spi.h

