#include<p18f452.h>
#define spi_scl PORTCbits.RC3
#define spi_sdi PORTCbits.RC4
#define spi_sdo PORTCbits.RC5
#define spi_ss PORTAbits.RA5
void spi_send_init(void);
void spi_receive_init(void);
void spi_send(unsigned char spi_data);
void main(void){
spi_send_init();
while(1){
spi_send(0xaa);
}
}
void spi_send_init(void){
TRISCbits.TRISC5=0;//SDO
TRISCbits.TRISC4=1;//SDA/SDI
TRISCbits.TRISC3=0;//SCK,SCL
TRISAbits.TRISA5=0;///ss=0;
spi_ss=0;
SSPSTATbits.SMP=1;//末端采样
SSPSTATbits.CKE=0;//状态由空闲到有效,发送
SSPCON1bits.SSPEN=1;//enable serial port
SSPCON1bits.CKP=0;// sck==0 when begin
SSPCON1bits.SSPM3=0;
SSPCON1bits.SSPM2=0;
SSPCON1bits.SSPM1=0;
SSPCON1bits.SSPM0=0;//CLK=Fosc/4
}
/*void spi_receive_init(void){
TRISCbits.TRISC5=0;//SDO
TRISCbits.TRISC4=1;//SDA/SDI
TRISCbits.TRISC3=1;//SCK,SCL
SSPSTATbits.SMP=0;
SSPCON1bits.SSPEN=1;//enable serial port
SSPCON1bits.CKP=0;// sck==0 when begin
SSPCON1bits.SSPM3=0;
SSPCON1bits.SSPM2=1;
SSPCON1bits.SSPM1=0;
SSPCON1bits.SSPM0=1;//forbid /ss
}*/
void spi_send(unsigned char spi_data){
unsigned char spi_temp;
while(0==SSPSTATbits.BF){}
spi_temp=SSPBUF;
SSPBUF=spi_data;
}