探索版与ZLG7290采用IIC协议进行通信,以控制矩阵键盘,在代码中,读取键值寄存器中的值时不太理解0x71指令是什么意思.另外,ZLG7290的数据手册上说它的从机地址是0x70.部分代码如下。望大神指点!
[mw_shl_code=c,true]u8 key_read(void)//读取键值函数
{
u8 num=10;
IIC_Start();
//delay_us(30);
IIC_Send_Byte(0x70);//从机寻址
//delay_us(30);
d=IIC_Wait_Ack();
IIC_Send_Byte(0x01);//操作键值寄存器
e=IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0x71);//????????问题在这里
f=IIC_Wait_Ack();
//delay_us(30);
num=IIC_Read_Byte(0);//不向zlg7290发送应答,读取键值寄存器的值
//delay_us(30);
IIC_Stop();
return num;
}[/mw_shl_code]
u8 key_read(void)//读取键值函数
{
u8 num=10;
IIC_Start();
//delay_us(30);
IIC_Send_Byte(0x70);//从机寻址
//delay_us(30);
d=IIC_Wait_Ack();
IIC_Send_Byte(0x01);//操作键值寄存器 此处相当于先锁定了目标寄存器,因为一旦进入读模式就没有办法再给从机发送寄存器的地址了
e=IIC_Wait_Ack();
IIC_Start();//重新来一次起始信号以便之后进行读操作
IIC_Send_Byte(0x71);//7位从机地址,最后一位为1表明要读,若为0则是写。
f=IIC_Wait_Ack();
//delay_us(30);
num=IIC_Read_Byte(0);//不向zlg7290发送应答,读取键值寄存器的值
//delay_us(30);
IIC_Stop();
return num;
}
一周热门 更多>