#include<iom128v.h>
#include<macros.h>
#include<AVR_PORT_BIT.H>
#include"init.h"
/*void delay_us(uchar n)
{
while(n--)
;
}*/
void delay_us() // 延时程序
{
uchar j;
for(j=1;j<255;j++)
;
}
void delay(uint n)
{
uint i;
for(i=0;i<=n;i++)
delay_us();
}
void Write24(uchar Wr_adress,ulong Wr_data) //向从机的Wr_adress内写入24位数据;
{
uchar m;
_PB0=1;
_PB0=0;
delay(2);
SPDR=Wr_adress;
while(!(SPSR&(1<<SPIF)));
m=(Wr_data>>16)&0xFF;
SPDR=m;
while(!(SPSR&(1<<SPIF)));
m=(Wr_data>>8)&0xFF;
SPDR=m;
while(!(SPSR&(1<<SPIF)));
m=Wr_data&0xFF;
SPDR=m;
while(!(SPSR&(1<<SPIF)));
_PB0=1; //结束
delay(2);
}
ulong Read_data32(uchar Re_adress) //从从机的Re_adress地址内读出32位数;
{
uchar n1,n2,n3,n4;
ulong data;
_PB0=1;
_PB0=0;
delay(2);
SPDR=Re_adress;
while(!(SPSR&(1<<SPIF)));
SPDR=Re_adress;
while(!(SPSR&(1<<SPIF)));
n1=SPDR;
SPDR=Re_adress;
while(!(SPSR&(1<<SPIF)));
n2=SPDR;
SPDR=Re_adress;
while(!(SPSR&(1<<SPIF)));
n3=SPDR;
SPDR=Re_adress;
while(!(SPSR&(1<<SPIF)));
n4=SPDR;
_PB0=1;
data=n1; //数据整合;
data<<=8;
data+=n2;
data<<=8;
data+=n3;
data<<=8;
data+=n4;
return data; //返回32位数
}
char Read8(uchar Re_adress) //从从机的Re_adress地址内读出8位数;
{
char m;
_PB0=1;
_PB0=0;
delay(2);
SPDR=Re_adress;
while(!(SPSR&(1<<SPIF)));
SPDR=Re_adress; //启动传输
while(!(SPSR&(1<<SPIF)));
m=SPDR;
_PB0=1;
delay(2);
return m;
}
void Out8(uchar Command)//发送命令;
{
uchar m;
_PB0=1;
_PB0=0;
delay(2);
SPDR=Command;
while(!(SPSR&(1<<SPIF)));
_PB0=1;
delay(2);
}