从X指针读取数据并将其保存在数组中 - AVR Asm

发布于 2025-01-17 02:30:36 字数 800 浏览 1 评论 0原文

我正在学习 Avr 组装。我正在编写一个读取 uart 字符串的项目,然后该字符串必须保存在数组中。然后必须将字符串发送回 uart TX 引脚。我正在对 ATMEGA8 微控制器进行编程。我不确定一切是否正确,并且可能有些代码不正确,因为我是 ASM avr 的初学者。

首先,我调用“gets”子例程来从 uart 引脚获取数据。 (我有来自 http://www.rjhcoding.com/avr-asm- 的代码uart.php

gets:
    in      r17, UCSRA      
    sbrs    r17, RXC
    rjmp    gets

    in      r16, UDR        ; gets received character 

    cpi     r16, $0D        ; check if rcv'd char is CR (enter)
    breq    gets_end        ; branch if CR 

    st      X+,r16          ; store char in buffer 
    rjmp    gets            ; get another char 

gets_end: 
    ldi     r16, $00
    st      X+,r16
    ret     

但是我不明白这段代码,如何读取X缓冲区中的数据并将其放入新的数组中?我该如何制作和使用该数组?

I'm learning Avr Assembly. I'm writing a project that reads a uart string, then the string has to be saved in an array. Then the string has to be send back on the uart TX pin. I'm programming a ATMEGA8 microcontroller. I'm not sure everything is correct and probably some code will not be correct since I'm a starter in ASM avr.

first, I call the 'gets' subroutine to get the data from the uart pins.
(I have the code from http://www.rjhcoding.com/avr-asm-uart.php)

gets:
    in      r17, UCSRA      
    sbrs    r17, RXC
    rjmp    gets

    in      r16, UDR        ; gets received character 

    cpi     r16, $0D        ; check if rcv'd char is CR (enter)
    breq    gets_end        ; branch if CR 

    st      X+,r16          ; store char in buffer 
    rjmp    gets            ; get another char 

gets_end: 
    ldi     r16, $00
    st      X+,r16
    ret     

But what I don't get about this code, how do I read the data in the X buffer and put it in a new Array? And how do I make and use that array?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文