目前我正在一个项目中,我必须将程序集AVR代码迁移到C代码。当然,我是亲自动手做的,因为这是最有效的方法。问题是我遇到了一个我无法弄清楚的问题。。包括在AVR汇编指令
我不知道哪个是我的程序执行的正确顺序。我认为这是主要的文件开始是这样的:
.INCLUDE "m8def.inc" ; NO SE QUE SIGNIFICA ESTO
.INCLUDE "macro.asm" ;
.INCLUDE "options.asm"
.LISTMAC
;***************************************************************************
.INCLUDE "define.asm" ; port bits, constants
.INCLUDE "ram.asm" ; ram definitions
;***************************************************************************
;***************************************************************************
;*
;* Start of code
;*
;***************************************************************************
;***************************************************************************
.cseg ;Indicates that the next segment refers to program memory;
.org 0 ; The ORG directive is used to specify a location in program memory where the program following directive is to be placed.
; Interrupt vectors
rjmp RESET ; Reset
rjmp EXT_INT0 ; INT0 (not used)
rjmp EXT_INT1 ; INT1 (not used)
rjmp TIM2_COMP ; Timer2 compare (not used)
rjmp TIM2_OVF ; Timer2 overflow (not used)
rjmp TIM1_CAPT ; Timer1 capture (zero crossing input)
rjmp TIM1_COMPA ; Timer1 compareA (ZX detector timing)
rjmp TIM1_COMPB ; Timer1 compareB (not used)
rjmp TIM1_OVF ; Timer1 overflow (not used)
rjmp TIM0_OVF ; Timer0 overflow
rjmp SPI_INT ; SPI interrupt (not used)
rjmp UART_RX ; UART Rx complete
rjmp UART_TX ; UART UDR empty
rjmp UART_TX ; UART Tx complete (not used)
rjmp ADC_INT ; ADC interupt (not used)
rjmp EERDY_INT ; EEPROM ready interrupt (not used)
rjmp ANA_COMP ; Analog Comparator (not used)
rjmp TWI ; TWI (not used)
rjmp SPM_RDY ; SPM_RDY (not used)
;---------------------------------------------------------------------------
.INCLUDE "int.asm" ; interrupt service routines
RESET:
.INCLUDE "init.asm" ; initialisation
;***************************************************************************
;***************************************************************************
;*
;* Main loop
;*
;***************************************************************************
;***************************************************************************
; .IF $ != ENDINIT
; error "main.asm must follow init.asm"
; .ENDIF
sbi PORTD, PD_LED ; 1 = LED on
nop
cbi PORTD, PD_LED
; ldi uart_char, 'Z' ; 0x5A for test only
; rcall snd_echo
; Main loop
main_lp:
羯羊的JMP指令时,或者不是我不明白......你能帮助我吗?谢谢!
这看起来比ARM更像AVR组件。 – Michael
['m8def.inc'](https://github.com/bitdump/BLHeli/blob/master/Atmel/m8def.inc)适用于AVR微处理器ATmega8。 –
哦,谢谢。然后,执行的第一条指令是sbi PORTD,PD_LED ?? – Aldridge1991