执行程序如下:
TWBR=0x12;//TWI比特率寄存器的值设为18
TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//发送开始信号
while(!(TWCR & (1<<TWINT))); //等待TWINT置位,置位表示START信号发出
if((TWSR & 0xF8)!= START) //检查状态寄存器,不是START转出错处理
ERROR();
TWDR=SLA_W ; //装入SLA_W
TWCR=(1<<TWINT)|(1<<TWEN); //TWINT清零,启动发送数据
while(!(TWCR & (1<<TWINT)));//等待数据发送发出
if((TWSR & 0xF8)!= MT_SLA_ACK ) //检查状态寄存器,不是MT_SLA_ACK转出错处理
ERROR();
按照ATMega16用户手册上的步骤,在主机发送模式下,先发送开始信号,然后装载SLA_W。
但是在装入SLA_W(根据从机的用户手册,为25H)后,状态寄存器TWSR总是0x48,而不是手册上的0x18,
从而程序转入了出错处理而不能继续执行,请问这个问题高如何解决?
硬件连接以用万用表检查无误。
此帖出自
小平头技术问答
一周热门 更多>