打印
[AVR单片机]

ATmega8 SPI数据发送问题

[复制链接]
3270|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laslison|  楼主 | 2010-5-21 22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下,我用AVR的ATmega8的SPI口接收从机上一个不是FFFF的16位数据,从机为下降沿送数,再用串口发到电脑上显示数据,可是电脑上的串口调试助手窗口内一直显示数据为FFFF。以下是我单片机的SPI初始设置和取数程序,不知哪里设置有问题,请高手不吝赐教~~~
void SPI_MasterInit(void)
{
// 设置SS,MOSI 和SCK 为输出,设为1,MISO其他为输入
DDRB = (1<<5)|(1<<3)|(1<<2);
// 开SPI中断,使能SPI,主机模式,SPI 0模式,设置时钟速率为fck/64
SPCR = (1<<6)|(1<<4)|(1<<1);
}
unsigned char ReadOp(void)
{
unsigned char dat;
SPDR = 1;   // 启动数据传输
while(!(SPSR & (1<<7))); // 等待传输结束
dat=SPSR;   //读取SPI状态寄存器SPSR,会自动清除SPIF位
dat=SPDR;   //再读取数据寄存器中的数
return dat;
}

//******************************************************************************
// 描述: TMP121读操作
// 输入: 无
// 返回: unsigned long IHT数据
// 说明:没有做负温度值补码修正部分
//******************************************************************************
//unsigned long
void ReadTMP121 (void)
{ unsigned char HT,LT;
  PORTB&=(~(1<<PB2));   //设置SS为低,从传感器中读取数据,1表示一个8位数据
  delay_us(10);
  HT = ReadOp();
  LT = ReadOp();
  PORTB|=(1<<PB2 );   
  
  USATR_Transmit8(HT);
  USATR_Transmit8(LT);
}

相关帖子

沙发
Karlshen| | 2010-5-21 22:43 | 只看该作者
SPI例子不是很多吗

使用特权

评论回复
板凳
qfengbj| | 2010-5-24 13:07 | 只看该作者
我用AVR的ATmega8的SPI口接收从机上一个不是FFFF的16位数据
不知道怎么断句了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

791

帖子

1

粉丝