
下面的代码分别用汇编和C函数写
EEPROM 。在此假设中断控制(例如,通过禁用中断
全球范围内),这样会出现执行这些函数的过程中没有中断。该实施例还
假设没有引导程序存在于该软件。如果这样的代码,则该
EEPROM写函数还需要等待正在运行的SPM命令来完成。
汇编代码例程
EEPROM_write :
;等待上一次写操作结束
SBIC
EECR , EEWE
RJMP
EEPROM_write
;设置地址( R18 : R17 )的地址寄存器
OUT
EEARH , R18
OUT
EEARL , R17
;写数据( R16)到数据寄存器
OUT
EEDR,r16
;写逻辑1 EEMWE
SBI
EECR , EEMWE
;启动写操作EEWE
SBI
EECR , EEWE
RET
C代码示例
空间
EEPROM_write (无符号
INT
uiAddress ,
无符号字符型
ucData )
{
/*
等待上一次写操作结束
*/
而( EECR & ( 1<<EEWE ) )
;
/ *设置地址和数据寄存器* /
EEAR = uiAddress ;
EEDR = ucData ;
/*
写逻辑1 EEMWE * /
EECR | = ( 1<<EEMWE ) ;
/ *启动写操作EEWE * /
EECR | = ( 1<<EEWE ) ;
}
24
ATmega128
2467S–AVR–07/09