为啥 LED 不亮?

Posted

技术标签:

【中文标题】为啥 LED 不亮?【英文标题】:Why doesn't the LED light up?为什么 LED 不亮? 【发布时间】:2014-05-06 07:14:52 【问题描述】:

我有一块带有 PIC18LF26K22 的电路板,而且我是单片机编程的初学者。 PIC 的RC0(引脚 11)连接到 LED。

作为开始练习,我想点亮 LED。由于这是一件非常简单的事情,我想在汇编中完成。

所以,我执行以下操作:设置TRISCANSELC 以使PORTC 的引脚输入/输出(RC0 设置为输出)然后在无限循环中发送@987654326 @ 到 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 不亮。由于我对图片很陌生,我想我做错了什么或忘记了什么。 (当然,这可能是一个焊接错误,但似乎我只是在上面的代码中遗漏了一个重要的点。)

你能告诉我我做错了什么吗?

编辑

为了记录,我也犯了一个错误,错误地使用了pk2cmd。 (我错过了-M 标志。) 以下是如何部署到 PIC:

gpasm yourcode.asm
./pk2cmd -X -PPIC18LF26K22 -R -M -Fyourcode.hex -T

【问题讨论】:

【参考方案1】:

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

同样对于此类问题,您应该检查您的硬件。您可以轻松消除“焊接问题”。你在正确的地方有连续性吗?当您认为驱动输出时,您是否看到电压表的电压变化?你的 LED 好用吗? LED 是否正确?这些测试非常快速,可以避免走上更耗时的道路。

【讨论】:

感谢您的回答!似乎我搞砸了位顺序。应该是11100110 而不是01100111,对吧? 不,很遗憾,这不是问题所在。然而,用 C 语言编写并使用 MPLAB 部署的相同东西可以工作,所以我将检查反汇编程序,看看我可能做错了什么。 对不起,这只是我的错误,我错误地使用了pk2cmd。您的解决方案是正确的 :) 谢谢!

以上是关于为啥 LED 不亮?的主要内容,如果未能解决你的问题,请参考以下文章

unitu为啥hdr版添加灯光不亮

为啥摄像头不能用了,而且那个灯都不亮,连webcam打开了也不行

LED不亮怎么解决

正点原子开发板STM32 PWM输出实验 改变LED0为LED1不亮

请教981213大神及各位大神,关于openwrt编译LED网口灯不亮问题

stm32用gpio点亮一个led,程序编译过了,但是灯不亮