Пустой массив при печати - PullRequest
1 голос
/ 16 марта 2011

Я пишу некоторую программу на C / asm для AVR MCU.Я все еще учусь, поэтому я надеюсь, что допустил какую-то ошибку в своем коде.

У меня есть буфер volatile unsigned char suart_0_rx_buffer[SUART_0_BUF_SIZE+1]; в моем C-коде, к которому я обращаюсь в своем ASM-коде, как показано ниже.Все, что я хочу сделать, это сохранить байт s0_Rxbyte в буфере и увеличивать указатель s0_index каждый раз.'s0_Rxbyte` всегда является ненулевым значением.


suart_0_wr_buf_2:  ldi     s0_z_low, lo8(suart_0_rx_buffer)
                   ldi     s0_temp1, hi8(suart_0_rx_buffer)
                   add     s0_z_low, s0_index
                   adc     s0_z_high,s0_temp1
suart_0_wr_buf_3:  st      Z+, s0_Rxbyte
                   inc     s0_index
                   clr     s0_temp1
                   st      Z, s0_temp1

Если я пытаюсь распечатать содержимое в цикле в моем C-коде, я получаю абсолютно ничего.

Я не хотел присоединятьвсе здесь, потому что оно будет загромождено.

Так кто-нибудь видит какие-либо проблемы с кодом asm выше?

1 Ответ

0 голосов
/ 23 марта 2011

Удалось разобраться в итоге. Это был случай простой ошибки в коде сборки, из-за которой он записал неправильное местоположение в SRAM.

suart_0_wr_buf_2:  clr     s0_temp1
                   ldi     s0_z_low, lo8(suart_0_rx_buffer)
                   ldi     s0_z_high, hi8(suart_0_rx_buffer)
                   add     s0_z_low, s0_index
                   adc     s0_z_high, s0_temp1
suart_0_wr_buf_3:  st      Z+, s0_Rxbyte
                   inc     s0_index
                   st      Z, s0_temp1
...