【发布时间】:2015-04-09 21:40:54
【问题描述】:
我正在编写一个程序,它会闪烁红色、黄色和绿色 LED 以匹配交通信号灯的功能。但是,当我在调试器中运行它并单步执行时(我使用的是 MPLAB X IDE),它似乎在调用函数“LOOP1”后停止了。 PORTD 中反映的值是它在 LOOP1 完成后应该保持的值,而不是在 LOOP6 完成之后。有什么想法吗?
list p=18f4550, r=DEC
#include <p18f4550.inc>
CONFIG LVP=OFF
CONFIG WDT=OFF
CONFIG MCLRE=OFF
CONFIG FOSC = INTOSCIO_EC
ORG 0x00
CBLOCK 0
DELAY1:1
DELAY2:1
COUNTER:1
ENDC
START:
CLRF TRISD
CLRF PORTD
CLRF COUNTER
CLRF DELAY1
CLRF DELAY2
MOVLW 0x00
PRIMARYLOOP:
CALL LOOP1
CALL LOOP2
CALL LOOP3
CALL LOOP4
CALL LOOP5
CALL LOOP6
GOTO PRIMARYLOOP
LOOP1:
MOVLW b'00010010'
MOVWF PORTD
MOVLW 0x01
MOVWF COUNTER
CALL DELAYMAIN
RETURN
LOOP2:
MOVLW b'01000010'
MOVWF PORTD
MOVLW 0x05
MOVWF COUNTER
CALL DELAYMAIN
RETURN
LOOP3:
MOVLW b'00100010'
MOVWF PORTD
MOVLW 0x03
MOVWF COUNTER
CALL DELAYMAIN
RETURN
LOOP4:
MOVLW b'00010010'
MOVWF PORTD
MOVLW 0x01
MOVWF COUNTER
CALL DELAYMAIN
RETURN
LOOP5:
MOVLW b'01000010'
MOVWF PORTD
MOVLW 0x05
MOVWF COUNTER
CALL DELAYMAIN
RETURN
LOOP6:
MOVLW b'00100010'
MOVWF PORTD
MOVLW 0x03
MOVWF COUNTER
CALL DELAYMAIN
RETURN
DELAYMAIN:
DECFSZ DELAY1,1
GOTO DELAYMAIN
DECFSZ DELAY2,1
GOTO DELAYMAIN
DECFSZ COUNTER,0,0
RETURN
END
【问题讨论】:
标签: microcontroller mplab microprocessors pic18