key_scan_output=scan[col];
rowkey=~(_key_scan_output&0x0f);//这里之后rowkey只能取0xf1,0xf2,0xf4,0xf8这几个值了,
if(rowkey!=0)//所以这里是一直为真的
{
if(rowkey==0x01) row=0;
else if(rowkey==0x02) row=1;
else if(rowkey==0x03) row=2;
else if(rowkey==0x04) row=3;
key_value=4col+row;//而这里的值只会是4col+0,row 始终是0
while(rowkey!=0)//这里是不是松手检测啊,如果是的话,下面这样就好了
//while((_key_scan_output&0x0f)!=0x0f);//等待按键松手
rowkey=~(_key_scan_output&0x0f);
}
希望能给你解答:
1、时钟信号都是主机产生的,从机只有一种情况下才能控制时钟线,即在忙的时候,主机还在发送数据,从机会主动把时钟拉低,表示我正在忙,不能收数据。
2、两个主机的话,在发送的时候一定会有一个从属关系,这个需要自己设置。
3、响应:i2c上每传输一个字节,都必须要有响应,方向是从机到主机。
以上就是关于51单片机模拟PS2键盘 C语言程序全部的内容,包括:51单片机模拟PS2键盘 C语言程序、51单片机如何模拟I2C总线中从机接收ID,发送数据的程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)