-5

我是汇编程序的新手,在大学里得到了这个简单的程序,但我不明白为什么它不起作用。我真的无法解释更多,就像我说的,这周我几乎是从这种语言开始的。

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'
4

1 回答 1

2

好吧,我有点同情你:

你的init标签设置了一堆寄存器并进入运行状态,它永远处于一个非常紧密的循环中。美好的。问题是,count应该怎么称呼?没有任何引用它,您的初始goto跳过它。它周围没有中断类型的返回值,因此不能被中断调用。您的代码基本上设置了一些寄存器,并且永远什么都不做。不是很有趣。

我猜你希望它以某种方式计数,但你需要以某种方式实际调用它。您选择如何做。

于 2013-07-29T18:52:50.257 回答