本帖最后由 bryce256 于 2011-7-13 19:16 编辑
SPI程序:
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define CS RC6
void delay(uchar x)
{
int i;
for(i=0;i<x;i++);
}
void InitPort()
{
TRISB=0x00;
TRISC=0x96;
}
void SpiInit()
{
PIE1=0;
PIR1=0;
SSPSTAT=0x00;
SSPCON=0x03;
}
void WriteEnable()
{
CS=0;
SSPBUF=0x06;
while(!SSPIF);
SSPIF=0;
CS=1;
}
void SpiEeprom()
{
CS=0;
SSPBUF=0x01;
do
{
;
}
while(SSPIF==0);
// while(!SSPIF){}
SSPIF=0;
SSPBUF=0x02;
while(!SSPIF);
SSPIF=0;
CS=1;
}
void WriteData(uchar addr,uchar dat)
{
WriteEnable();
CS=0;
SSPBUF=0x02;
while(!SSPIF);
SSPIF=0;
SSPBUF=addr;
while(!SSPIF);
SSPIF=0;
SSPBUF=dat;
while(!SSPIF);
SSPIF=0;
CS=1;
}
void main()
{
uint p;
InitPort();
SpiInit();
// SpiEeprom();
PORTB=0xfa;
for(p=0x03;p<0xf8;p++)
{
WriteData(p,p);
}
PORTB=0xaa;
}
|