我遇到的问题应该是一段非常简单的代码。我的目标是在按下按钮时打开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可能无法正确初始化,但我并不完全确定。
感谢你能提供给我的任何见解
答案 0 :(得分:0)
第42页的datasheet of 16f684个州:
必须初始化ANSEL和CMCON0寄存器,以将模拟通道配置为数字输入。配置为模拟输入的引脚将读为“0”。
这些寄存器实际上已在您的代码中初始化。 ANSEL初始化为0,因此所有模拟输入均被禁用。但是, CMCON0寄存器应初始化为xxxxx111或07h 。请参见第42页的示例4.3.CMCON0的最后三位对应于比较器的工作模式,选择111将其关闭。见第60页。
如果您希望在释放按钮时指示灯再次亮起,请不要忘记添加goto Testbutton
。这可能是有意的:这取决于你!