为什么LED不亮?

时间:2014-05-06 07:14:52

标签: assembly microcontroller pic microchip led

我有一块带PIC18LF26K22的电路板,我是微控制器编程的初学者。 PIC的RC0(引脚11)连接到LED。

作为一个开始练习,我想点亮LED。由于这是一件非常简单的事情,我想在集会中这样做。

因此,我执行以下操作:设置TRISCANSELC以使PORTC输入/输出的引脚(RC0设置为输出)然后在无限循环中,只需将B'11111111'发送到PORTCLATC

我不确定PORTCLATC之间有什么区别,但似乎他们都没有做到这一点。

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

1 个答案:

答案 0 :(得分:3)

TRISC的最低有效位表示RC0是输入还是输出。在您的代码中,您将其设置为1,这是一个输入。助记符1看起来像I(输入),0看起来像O(输出)。

还有这种类型的问题,你应该检查你的硬件。您可以轻松消除“焊接问题”。你在正确的地方有连续性吗?当您认为驱动输出时,您是否看到电压表发生电压变化?你的LED工作吗? LED是否正确?这些测试非常快,可以避免耗费更多时间。