📄 eeprom.s
字号:
.module EEPROM.c
.area text(rom, con, rel)
.dbfile D:\YM200\内部EEPROM\EEPROM.c
.dbfunc e EEPROM_write _EEPROM_write fV
; dd -> R18
; addr -> R16,R17
.even
_EEPROM_write::
.dbline -1
.dbline 9
; #include <iom16v.h>
; /*-----------------------------------------------------------
; EEPROM_write :EEPROM单字节写入
; 输入参数 addr :地址
; dd :数据
; 输出参数 :无
; ------------------------------------------------------------*/
; void EEPROM_write(unsigned int addr, unsigned char dd)
; {
L2:
.dbline 10
L3:
.dbline 10
; while(EECR & (1<<EEWE)); //等待上一次写操作结束
sbic 0x1c,1
rjmp L2
.dbline 11
; EEAR = addr; //设置地址和数据寄存器
out 0x1f,R17
out 0x1e,R16
.dbline 12
; EEDR = dd;
out 0x1d,R18
.dbline 13
; EECR |= (1<<EEMWE); //置位EEMWE
sbi 0x1c,2
.dbline 14
; EECR |= (1<<EEWE); //置位EEWE 以启动写操作
sbi 0x1c,1
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r dd 18 c
.dbsym r addr 16 i
.dbend
.dbfunc e EEPROM_read _EEPROM_read fV
; ucData -> R18,R19
; uiAddress -> R16,R17
.even
_EEPROM_read::
.dbline -1
.dbline 23
; }
; /*-----------------------------------------------------------
; EEPROM_read :EEPROM单字节读取
; 输入参数 addr :地址
; dd :数据保存指针
; 输出参数 :无
; ------------------------------------------------------------*/
; void EEPROM_read(unsigned int uiAddress,unsigned char *ucData)
; {
L6:
.dbline 24
L7:
.dbline 24
; while(EECR & (1<<EEWE)); //等待上一次写操作结束
sbic 0x1c,1
rjmp L6
.dbline 25
; EEAR = uiAddress; //设置地址寄存器
out 0x1f,R17
out 0x1e,R16
.dbline 26
; EECR |= (1<<EERE); //设置EERE 以启动读操作
sbi 0x1c,0
.dbline 27
; *ucData=EEDR; //自数据寄存器返回数据
in R2,0x1d
movw R30,R18
std z+0,R2
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbsym r ucData 18 pc
.dbsym r uiAddress 16 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -