简单的PIC16F684输入/输出

时间:2015-03-20 20:00:12

标签: button pic basic led

我遇到的问题应该是一段非常简单的代码。我的目标是在按下按钮时打开LED。在这种情况下,当我按下按钮时输入逻辑将变低。 LED连接到PORTC.2,按钮连接到PORTC.0。这是代码:

dim test as bit

main:
TRISC = %00000001 
ANSEL = %00000000
PORTC= 0
cmcon0=0

Testbutton:

 test = PORTC.0
 if test = 0 then
    PORTC = %00000100
    goto Testbutton
    end if
    PORTC = %00000000

  end.

问题是无论输入是什么,PIC总是输出高电平。到目前为止,我已经使用万用表来验证当按下按钮时输入确实从5V变为0V,我尝试使用不同的输入引脚,并且我尝试使用不同的PIC。我怀疑由于输入始终被读取为低,PIC可能无法正确初始化,但我并不完全确定。

感谢你能提供给我的任何见解

1 个答案:

答案 0 :(得分:0)

第42页的datasheet of 16f684个州:

  

必须初始化ANSEL和CMCON0寄存器,以将模拟通道配置为数字输入。配置为模拟输入的引脚将读为“0”。

这些寄存器实际上已在您的代码中初始化。 ANSEL初始化为0,因此所有模拟输入均被禁用。但是, CMCON0寄存器应初始化为xxxxx111或07h 。请参见第42页的示例4.3.CMCON0的最后三位对应于比较器的工作模式,选择111将其关闭。见第60页。

如果您希望在释放按钮时指示灯再次亮起,请不要忘记添加goto Testbutton。这可能是有意的:这取决于你!