我一直在尝试将 6116 连接到 Proteus 中的 ATMega128。我有以下示意图:
我可以写信给 6116,但我不认为我正在访问正确的地址。 我使用以下代码来测试是否一切正常:
.include "m128def.inc"
ldi r16, 0x80
out MCUCR, r16
clr r16
sts XMCRA, r16
ldi r16, 0x03
sts XMCRB, r16
ldi r16,1
sts 0x1100, r16
here: jmp here
所以当我运行这段代码时,我希望在 6116 的 $0000 处看到值 1。然而,这就是我所看到的:
值 1 出现在 6116 的 $0100 处。 我在这里错过了什么,出了什么问题? 我对此非常陌生,如果我屠杀了一些东西,我很抱歉。
我想你在“ATmega103兼容模式”下运行芯片,这是由
M103C
熔丝位选择的。这是保险丝的默认值(参见 ATmega128 数据表 第 287 页)。
在此兼容模式下,正在使用“内存配置 B”(来自数据表第 32 页):
内存配置B指ATmega103兼容模式,配置A指非兼容模式
因此,内存地址0x1100指的是外部RAM中的地址0x100。
另外,可能是Proteus仿真并不完全支持所有的外部存储器模式。