我是汇编程序的新手,并且在大学里已经获得了这个简单的程序,但我无法理解为什么它不起作用。我无法解释更多,就像我说的那样,我本周开始使用这种语言。
list p=16f690 ; list directive to define processor
#include <P16F690.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _CPD_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _FCMEN_OFF & _IESO_OFF
main
cblock 0x20
num1,.250
endc
org 0x00 ; Set code at program memory address 0x00
goto init
org 0x04 ; Put code at program memory address 0x04
nop
retfie
count:
movf num1,w
addwf .150,w
init:
bcf STATUS, RP0
bcf STATUS, RP1
movlw 0xFF
movwf PORTA
bsf STATUS, RP0
clrf TRISA
run:
nop
goto run
END ; directive 'end of program'
答案 0 :(得分:2)
好的,我对你有点遗憾:
你的init
标签设置了一堆寄存器,然后进入运行状态,它会永远停留在一个非常紧密的循环中。精细。问题是,应该如何调用count
?没有任何内容可以引用它,而您的初始goto
会跳过它。它周围没有中断类型返回值,因此无法调用中断。您的代码基本上设置了一些寄存器,并且永远不会执不是很有趣。
我猜你想要以某种方式计算,但你需要以某种方式实际调用它。您可以选择如何做到这一点。