我最近开始使用18 PIC 4500,我第一次尝试对它进行编程就是让它在一个循环上闪烁一个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,导致延迟过短。
任何帮助非常感谢!
答案 0 :(得分:0)
1。尝试设置要切换的引脚的三态。你必须指出它是输入还是输出,在这种情况下它是输出。
像
#define D0_1Tris B'11001111'
movlw D0_1Tris ; set direction so LEDs D0 & D1 are outputs
movwf TRISA ; all others are inputs (high-z)
2。确保将A / D配置为I / O数字
clrf ANSEL ; configure A/D I/O as digital
(也可能需要清除比较器,无论哪个外设与选择的I / O复用)
3。另外不要忘记使用重置向量
ORG 0x000 ; processor reset vector
nop ; required by in circuit debugger
goto Init ; go to beginning of program
4。尝试以较慢的时钟速率确定是否因为短暂的延迟。如果是延迟问题,则实施定时器以使切换信号50-50占空比 (注意可能必须将其更改为p18f4550,它取自pic16示例)