我正在使用带有16f690芯片的PICkit2低引脚数演示板。我已经能够编写简单的代码来打开和关闭LED,但在尝试利用按钮来改变LED的状态时,却无法这样做。我的代码如下,以及设备原理图的链接。
#include <htc.h>
__CONFIG(MCLRE_OFF & BOREN_OFF & PWRTE_OFF & IESO_OFF & CP_OFF & FCMEN_ON);
void main()
{
//initialization
TRISAbits.RA3 = 1; //make button (RA3) input
TRISCbits.RC0 = 0; //make LED (RC0) output
for(;;) // loop forever
{
//set RC0 if RA3 is low (button pressed), else clear RC0
if(PORTAbits.RA3)
{
RC0 = 1;
}
else
{
RC0 = 0;
}
}
}
答案 0 :(得分:4)
RA3也是/ MCLR,数据表的表3表示此引脚上的上拉仅在外部/ MCLR配置下激活。如果没有上拉,您将无法进行更改。引脚是连续读高还是低?
至少在调试时我会避免使用RA3,如果必须在发布代码中使用它,请在调试时将引脚换成另一个引脚。
PORTA的另一个常见问题是它默认为模拟输入端口。 ANSEL位置1,需要清零才能用作数字输入,但RA3不会映射到模拟输入。
答案 1 :(得分:1)
我遇到了同样的问题并找到了以下内容。
在MPLAB IDE的编程器设置中,勾选“从复位释放的3态”。我还将包含的头文件从“htc.h”更改为“pic.h”,按钮现在可以正常工作。