2011-05-11 92 views
2

我正在使用带16f690芯片的PICkit2低引脚数演示板。我已经能够编写简单的代码来打开和关闭LED,但是一旦尝试利用按钮来改变LED的状态,就无法做到这一点。我的代码如下,连同设备原理图的链接。带有按钮的PICkit2闪烁指示灯

#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; 
     } 
    } 
} 

Demo Board User’s Guide

+0

你的开发板上连接了JP5吗? – 2011-05-11 14:19:14

回答

4

RA3也是/ MCLR中,数据表的表3表示,该引脚上的上拉只与外部/ MCLR配置激活。如果没有上拉,你将不会得到改变。引脚读取持续高还是低?

我会避免使用RA3,至少在调试时,如果您必须在释放代码中使用它,则在调试时将引脚交换为另一个引脚。

PORTA的另一个常见问题是它默认为模拟输入端口。 ANSEL位置1,需要清零才能用作数字输入,但RA3未映射到模拟输入。

1

我一直有同样的问题,并发现以下内容。

在MPLAB IDE的编程器设置中,勾选了“从复位释放时的三态状态”。我还将包含的头文件从“htc.h”更改为“pic.h”,该按钮现在可用。