AVR 这几条语句什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/08 12:08:38
unsigned char mmcSendByte(unsigned char data)
{
unsigned char tmp;
SPDR = data;
while( !(SPSR & (1 << SPIF)) );
tmp = SPDR;
return tmp;
}
最好逐句说下意思~

这是用AVR的SPI接口进行发送和接收的函数
unsigned char mmcSendByte(unsigned char data)
{
unsigned char tmp;
SPDR = data;//把发送的数据放入SPI发送缓冲寄存器中
while( !(SPSR & (1 << SPIF)) ); //等待发送完成标志SPIF置1,置1表示发送完成
tmp = SPDR;//SPI是双向通讯,发送完成后,从机要发送的数据会存入SPDR中
return tmp;//返回值是接收到的从机发送的数据
}
while( !(SPSR & (1 << SPIF)) ); 这条语句不好理解,在AVR的H文件中有定义,SPIF就是0-7数字中的一个,SPIF是SPSR寄存器中的一位,假设SPIF为2,那么上述语句就while(!(SPSR&0X02))