C中的PIC-使用RC0-3创建自己的键盘扫描例程

C中的PIC-使用RC0-3创建自己的键盘扫描例程,c,pic,mikroc,C,Pic,Mikroc,我被要求创建自己的例行程序来扫描键盘,但仅使用PORTC和RC0-3,我只需要返回4个值,即1,2,4,5,如果im正确,则在4x4键盘上以2x2排列。我使用的键盘是一个连接到PORTC的4x4键盘,我只是想知道你会怎么做?因为我还没有被教过这一点,但这是一项工作的重要组成部分,如果我没有得到解决方案,那就太好了,但更多的是一个解释将我推向正确的方向,这样我就可以自己去做。 基本上就是这个问题,但是上面的答案并没有真正的帮助,所以我想我应该自己去问这个问题: 任何帮助都将不胜感激 在您链接的上一

我被要求创建自己的例行程序来扫描键盘,但仅使用PORTC和RC0-3,我只需要返回4个值,即1,2,4,5,如果im正确,则在4x4键盘上以2x2排列。我使用的键盘是一个连接到PORTC的4x4键盘,我只是想知道你会怎么做?因为我还没有被教过这一点,但这是一项工作的重要组成部分,如果我没有得到解决方案,那就太好了,但更多的是一个解释将我推向正确的方向,这样我就可以自己去做。 基本上就是这个问题,但是上面的答案并没有真正的帮助,所以我想我应该自己去问这个问题:
任何帮助都将不胜感激

在您链接的上一个问题中,1,2,4,5表示键盘图例,这些图例可能是任何内容,通常与您收到的位值无关。您依次将1位写入每个输出行,或将0写入反转逻辑,并在列输入上查找高或低if反转逻辑位。通过使用查找表,您会担心以后会在键盘上写些什么。除非您想要的是内嵌式解决方案,而不是循环式解决方案,否则您是否拥有2x2密钥矩阵或4x4密钥矩阵都是无关紧要的

如果小键盘真的是2x2,它就不需要是矩阵,布线和编码都会更简单,使用4位作为输入,而不是2输出和2输入来驱动和读取矩阵


除非重新连接4x4键盘,否则它的2x2子集可能会使用RC0,1和RC4,5。

这正是我所想的,因为它已经连接好了,但说明书上说我们需要使用RC0-3,我将在真实的PIC模拟器上显示成品,这是我大学最后一年的一门功课。因此,如果它是在真实的pic模拟器上,我可以将行和列更改为我想要的吗?编辑:刚刚在Real PIC模拟器上玩了一个游戏,我可以按照我想要的方式连接键,所以我的下一个问题是,如何设置RC0-1作为输出,RC2-3作为输入?谢谢:@user2988392如果整个设备和代码都是模拟的,那么我会根据问题设置端口分配。RC0,1作为输出,RC2,3作为输入。在不真实的情况下似乎是个奇怪的问题。如上所述,为什么要将矩阵用于2x2,另一方面,对于最后一年的项目来说,4x4矩阵肯定不会太费力?@user2988392端口C和TRISC寄存器端口C是一个8位宽的双向端口。TRISC寄存器的位决定其引脚的功能。与其他端口类似,TRISC寄存器中的逻辑1将适当的端口引脚配置为输入。因此,如果我希望RC0和RC1成为输出,我将TRISC设置为0b00001100?读数:设置RC0高,RC1低,读取RC2。如果高,则按下1读取RC3。如果为高,则按下2,将RC0设置为低,将RC1设置为高,读取RC2。如果高,则按下4读取RC3。如果高,5现在被按下,答案的这一部分显然会有所不同,因为我已经翻转了它,我如何检查它们是否高?在我看来,大学是很奇怪的,他们总是要求你做一些他们实际上没有教我们的事情……甚至连如何孤立一点都没有?读取第3位:如果端口C&0x08!=0打印F高;这就是你将得到的所有代码!