我最近开始使用PIC 18F 4550,我在汇编中编程的第一次尝试是让它在一个循环上 Flink 一个LED。然而,我在用这种语言编程方面没有太多的经验,所以不得不依靠其他代码片段来开始。我的代码如下:
#include<p18f4550.inc>
CONFIG WDT = OFF
CONFIG MCLRE = ON
CONFIG DEBUG = ON
CONFIG LVP = OFF
CONFIG FOSC = INTOSCIO_EC
ORG 0
Delay1 res 2
Delay2 res 2
Start:
CLRF PORTB
CLRF TRISB
CLRF Delay1
CLRF Delay2
MainLoop:
BSF PORTB,1
GOTO DelayA
DelayA:
DECFSZ Delay1,1
GOTO DelayA
BCF PORTB,1
GOTO DelayB
DelayB:
DECFSZ Delay2,1
GOTO DelayB
GOTO MainLoop
end
字符串
我不明白为什么它不工作,但认为这可能与指令周期速度有关,我相信是1 MHz,导致延迟太短。
任何帮助非常感谢!
1条答案
按热度按时间wh6knrhe1#
1 .尝试设置您要切换的引脚的三态。你必须指出它是输入还是输出,在这个例子中是输出。
喜欢
第一个月
字符串
2 .确保A/D配置为I/O数字
clrf ANSEL ; configure A/D I/O as digital
(可能还需要清除比较器,无论哪个外设与所选I/O多路复用)3 .也不要忘记使用重置向量
ORG 0x000 ; processor reset vector
个型
4 .尝试以较慢的时钟频率来确定是否是由于短暂的延迟。如果是延迟问题,则实现一个定时器,使切换信号的占空比为50-50(注意,可能需要将其更改为p18 f4550,它取自pic 16示例)