为啥 LED 不亮?
Posted
技术标签:
【中文标题】为啥 LED 不亮?【英文标题】:Why doesn't the LED light up?为什么 LED 不亮? 【发布时间】:2014-05-06 07:14:52 【问题描述】:我有一块带有 PIC18LF26K22 的电路板,而且我是单片机编程的初学者。 PIC 的RC0
(引脚 11)连接到 LED。
作为开始练习,我想点亮 LED。由于这是一件非常简单的事情,我想在汇编中完成。
所以,我执行以下操作:设置TRISC
和ANSELC
以使PORTC
的引脚输入/输出(RC0
设置为输出)然后在无限循环中发送@987654326 @ 到 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 不亮。由于我对图片很陌生,我想我做错了什么或忘记了什么。 (当然,这可能是一个焊接错误,但似乎我只是在上面的代码中遗漏了一个重要的点。)
你能告诉我我做错了什么吗?
编辑
为了记录,我也犯了一个错误,错误地使用了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 不亮?的主要内容,如果未能解决你的问题,请参考以下文章
为啥摄像头不能用了,而且那个灯都不亮,连webcam打开了也不行
正点原子开发板STM32 PWM输出实验 改变LED0为LED1不亮