尝试使用PIC 18f4685使用4x4键盘。
我已经开启了弱势上涨。将适当的引脚设置为输入/输出,但是当我发出信号时,我没有将它返回到第6位和第6位。它只是零...
我尝试使用PicKit3进行调试,但似乎它使用RB7并在按下该行的按钮时崩溃。当然,这告诉我信号必须通过一定程度。
我需要在PORT B的配置中设置其他特别的东西吗?
一如既往......非常感谢您的帮助。
答案 0 :(得分:2)
不确定您的原理图(草图可能有帮助),但PIC GPIO中的常见错误是没有将ADC寄存器设置为数字输入。它们作为模拟输入从复位中恢复。
查看PIC18F4685 Datasheet中的注册说明19-2。
ADCON1
重置为0x00。要将所有模拟引脚设置为数字I / O,PCFG3:0
需要设置为1。
ADCON1bits.PCFG = 0x0F;
答案 1 :(得分:2)
由于EE网站在你得到答案之前如此粗暴地拒之门外,我想我会来这里回答你的问题。
检查第135页的表10-3,它列出了端口B引脚的所有功能。请注意,RB6和RB7也是调试引脚,所以我不会使用它们。
另外,您是在写LATx还是从PORTx阅读?在读取和写入同一端口时执行此操作非常重要。如果您读取和写入PORTx,您可能会意外地从尚未有足够时间更改的输出中读取过时值,并且您的下一次写入将消除您的预期值。这对没有LATx寄存器的PIC特别有害;任何操作,甚至像BSF / BCF这样的逐位操作,都会对ENTIRE端口寄存器进行读 - 修改 - 写操作,这会影响到你想要修改的位。请参阅此EE问题的答案:https://electronics.stackexchange.com/questions/28744/interfacing-a-keypad-with-a-microcontroller
答案 2 :(得分:2)
您是否可以使用您的代码设置三态寄存器(TRISB)以及您的阅读方式。在按下按钮之前和期间,您是否使用数字万用表(DMM)检查了输入引脚的电压?它们是10美元,值得。
最后,您是否禁用了模拟引脚?在PIC24芯片上你必须做:
AD1PCFG = 0xFFFF
在数字输入读取之前将起作用。你的筹码可能会一样。
你能给我们你的芯片的确切型号吗?