assembly 使用汇编代码使PIC18F4550的LED Flink

ctehm74n  于 2023-08-06  发布在  Flink
关注(0)|答案(1)|浏览(131)

我最近开始使用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,导致延迟太短。
任何帮助非常感谢!

wh6knrhe

wh6knrhe1#

1 .尝试设置您要切换的引脚的三态。你必须指出它是输入还是输出,在这个例子中是输出。
喜欢
第一个月

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(注意,可能需要将其更改为p18 f4550,它取自pic 16示例)

相关问题