19
atmega16(l)
2466e–avr–10/02
便条: 1. 使用 1 mhz 时钟, 独立 的 cksel fuse 设置.
这 下列的 代号 examples 显示 一个 组装 和 一个 c 函数 为 writing 至 这
可擦可编程只读存储器. 这 examples 假设 那 中断 是 控制 (为 例子 用 dis-
abling 中断 globally) 所以 那 非 中断 将 出现 在 执行 的 这些
功能. 这 examples 也 假设 那 非 flash 激励 loader 是 呈现 在 这 软-
ware. 如果 此类 代号 是 呈现, 这 可擦可编程只读存储器 写 函数 必须 也 wait 为 任何
ongoing spm command 至 完成.
组装 代号 例子
可擦可编程只读存储器_写:
; wait 为 completion 的 previous 写
sbic
eecr,eewe
rjmp
可擦可编程只读存储器_写
; 设置 向上 地址 (r18:r17) 在 地址 寄存器
输出
eearh, r18
输出
eearl, r17
; 写 数据 (r16) 至 数据 寄存器
输出
eedr,r16
; 写 logical 一个 至 eemwe
sbi
eecr,eemwe
; 开始 可擦可编程只读存储器 写 用 设置 eewe
sbi
eecr,eewe
ret
c 代号 例子
void
可擦可编程只读存储器_写(
unsigned int
uiaddress,
unsigned char
ucdata)
{
/*
wait 为 completion 的 previous 写
*/
当(eecr &放大; (1<<eewe))
;
/* 设置 向上 地址 和 数据 寄存器 */
eear = uiaddress;
eedr = ucdata;
/*
写 logical 一个 至 eemwe */
eecr |= (1<<eemwe);
/* 开始 可擦可编程只读存储器 写 用 设置 eewe */
eecr |= (1<<eewe);
}