了解 AVR 编程的 Subi 语法

Posted

技术标签:

【中文标题】了解 AVR 编程的 Subi 语法【英文标题】:Understanding Subi Syntax for AVR Programming 【发布时间】:2016-10-27 03:41:34 【问题描述】:

我遇到了一段我不太理解的代码,并且无法找到有关它的任何信息。这是一个宏,它接受一个寄存器,然后应该在 LCD 上显示结果。

传入的寄存器内容应该是个位数。

.macro do_lcd_rdata
    mov lcd, @0
    subi lcd, -'0'
    rcall lcd_data
    rcall lcd_wait
.endmacro

我感到困惑的部分是subi lcd, -'0' 这意味着什么。 SUBI 是立即减法,但我对 -'0' 是什么感到困惑。

【问题讨论】:

【参考方案1】:

-'0' 是字符 '0' 的 ascii 值的负数。该操作实际上是将 0x30 或 48 添加到寄存器中的值,以将其转换为数字的等效 ascii 字符值。

例如,6 - -'0' = 6 + 48 = 54 = '6'

【讨论】:

以上是关于了解 AVR 编程的 Subi 语法的主要内容,如果未能解决你的问题,请参考以下文章

为啥要在 AVR 编程中校准振荡器

AVR芯片编程时如何定义内存指针?

AVR--IO设置编程

arduino编程时候如何利用winavr的库文件??如:#include <avr/EEPROM.h>

使用预分频器确定微控制器 (AVR) 中时钟周期的周期

单片机焊好之后,用AVR_fighter烧写程序提示“进入编程模式失败,请检查芯片及usbasp是不是连接正常!”