我有一块带PIC18LF26K22的电路板,我是微控制器编程的初学者。 PIC的RC0
(引脚11)连接到LED。
作为一个开始练习,我想点亮LED。由于这是一件非常简单的事情,我想在集会中这样做。
因此,我执行以下操作:设置TRISC
和ANSELC
以使PORTC
输入/输出的引脚(RC0
设置为输出)然后在无限循环中,只需将B'11111111'
发送到PORTC
和LATC
。
我不确定PORTC
和LATC
之间有什么区别,但似乎他们都没有做到这一点。
INCLUDE "p18lf26k22.inc"
; Initialize
init
; Initialize port C
CLRF PORTC
CLRF LATC
MOVLW B'01100111'
MOVWF TRISC
MOVLW B'00000000'
MOVWF ANSELC
mainloop
; light up led on RC0
MOVLW B'11111111'
MOVWF PORTC
MOVWF LATC
GOTO mainloop
END
LED没有亮起。由于我对PIC很新,我想我做错了什么或忘记了什么。 (当然,这可能是一个焊接错误,但我似乎更有可能忽略了上述代码中的一个重点。)
你能告诉我我做错了什么吗?
修改
为了记录,我在使用pk2cmd
时也犯了错误。 (我错过了-M
旗帜。)
以下是如何部署到PIC:
gpasm yourcode.asm
./pk2cmd -X -PPIC18LF26K22 -R -M -Fyourcode.hex -T
答案 0 :(得分:3)
TRISC的最低有效位表示RC0是输入还是输出。在您的代码中,您将其设置为1,这是一个输入。助记符1看起来像I(输入),0看起来像O(输出)。
还有这种类型的问题,你应该检查你的硬件。您可以轻松消除“焊接问题”。你在正确的地方有连续性吗?当您认为驱动输出时,您是否看到电压表发生电压变化?你的LED工作吗? LED是否正确?这些测试非常快,可以避免耗费更多时间。