使用 PIC16F877 闪烁 LED - 汇编代码
Blinking LED with a PIC16F877 - Assembly Code
这是我第一次尝试用汇编编程,我无法弄清楚下面这段代码有什么问题,因为它不能正常工作。
include "P16F877.INC"
STATUS equ 03h
TRISB equ 86h
PORTB equ 06h
COUNT1 equ 20h
COUNT2 equ 21h
bsf STATUS,5
bcf TRISB,0
bcf STATUS,5
Start bsf PORTB,0
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT1,1
goto Loop1
bcf PORTB,0
Loop2 decfsz COUNT2,1
goto Loop2
decfsz COUNT2,1
goto Loop2
goto Start
end
问题出在双循环中:
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT1,1
goto Loop1
当 COUNT1 为零时,将跳过第一个转到。但是随后您进入第二个循环,即 "reloads" 循环。你这里有一个无限循环。
不知道COUNT1
是怎么初始化的,不过没关系。我会那样做。
Loop1a decfsz COUNT1,1
goto Loop1a
; possibly reload COUNT1 with some value
Loop1b
decfsz COUNT1,1
goto Loop1b
当然,Loop2 也是如此。我什至建议你做一个你调用两次的子程序而不是 copying/pasting.
非常令人惊讶的汇编程序,其中条件可以跳过下一条指令:
这是我第一次尝试用汇编编程,我无法弄清楚下面这段代码有什么问题,因为它不能正常工作。
include "P16F877.INC"
STATUS equ 03h
TRISB equ 86h
PORTB equ 06h
COUNT1 equ 20h
COUNT2 equ 21h
bsf STATUS,5
bcf TRISB,0
bcf STATUS,5
Start bsf PORTB,0
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT1,1
goto Loop1
bcf PORTB,0
Loop2 decfsz COUNT2,1
goto Loop2
decfsz COUNT2,1
goto Loop2
goto Start
end
问题出在双循环中:
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT1,1
goto Loop1
当 COUNT1 为零时,将跳过第一个转到。但是随后您进入第二个循环,即 "reloads" 循环。你这里有一个无限循环。
不知道COUNT1
是怎么初始化的,不过没关系。我会那样做。
Loop1a decfsz COUNT1,1
goto Loop1a
; possibly reload COUNT1 with some value
Loop1b
decfsz COUNT1,1
goto Loop1b
当然,Loop2 也是如此。我什至建议你做一个你调用两次的子程序而不是 copying/pasting.
非常令人惊讶的汇编程序,其中条件可以跳过下一条指令: