最近帮师姐做毕业设计,先把SPI部分的程序放上来,等师姐顺利毕业再把论文发上来。
unsignedchar code redate[30];
int valbit(unsignedchar cmd,unsignedchar i)
{
unsignedchar val;
cmd=cmd<<i; //将cmd的第i位左移至最高位
val=cmd&0x80; //判断左移后的最高位是否为1;
return val;
}
void SLEEP()
{
_asm
SLEEP /*进入休眠状态*/
_endasm
}
void BL_write(unsignedchar cmd,unsignedchar *DATE)
{
unsigned n,m,j;
cmd=cmd|0x40; //强制使写入数据最高两位为01
RD1=0; //拉低DIR
RB1=1; // /CS置1
delay(1);
RB4=1; //置SCLK为0;
delay(1);
RB1=0; //CS置0,是BL6523A进入通信模式
delay(1);
for(n=0;n<8;n++) //向BL6523A中写入一个8字节的数据)
{
RB4=0; //置SCLK为0,开始准备要写入的数据
delay(1);
if(valbit(cmd,n)==0) //cmd第n位是否为0
RB2=0; //DIN置0
else //cmd第n位不为0