📄 eeprom_l.s
字号:
.module eeprom_l.c
.area text(rom, con, rel)
.dbfile C:\BJQD\eeprom_l.c
.dbfunc e EEPROMReadWord _EEPROMReadWord fV
; eeprom_data -> y+2
; ptr -> R20,R21
; word -> R10,R11
; addr -> R22,R23
.even
_EEPROMReadWord::
xcall push_gset3
movw R10,R18
movw R22,R16
sbiw R28,4
.dbline -1
.dbline 19
; #include <eeprom.h>
; #include "main.h"
;
; extern struct cal cal0;
;
; /*
; eeprom操作模块
; */
;
; /*
; 从eeprom中读整型变量的值
; */
;
; #include <eeprom.h>
; /*
; 从eeprom中读整型变量的值
; */
; void EEPROMReadWord(unsigned int addr,unsigned int *word)
; {
.dbline 21
; unsigned char eeprom_data[2];
; unsigned char *ptr = (unsigned char *)word;
movw R20,R10
.dbline 22
; EEPROMReadBytes(addr,eeprom_data,2);
ldi R24,2
ldi R25,0
std y+1,R25
std y+0,R24
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
movw R16,R22
xcall _EEPROMReadBytes
.dbline 23
; *ptr = eeprom_data[0];
ldd R2,y+2
movw R30,R20
std z+0,R2
.dbline 24
; ptr++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 25
; *ptr = eeprom_data[1];
ldd R2,y+3
movw R30,R20
std z+0,R2
.dbline -2
L1:
adiw R28,4
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l eeprom_data 2 A[2:2]c
.dbsym r ptr 20 pc
.dbsym r word 10 pi
.dbsym r addr 22 i
.dbend
.dbfunc e EEPROMWriteWord _EEPROMWriteWord fV
; eeprom_data -> y+2
; ptr -> R22,R23
; word -> R10,R11
; addr -> R20,R21
.even
_EEPROMWriteWord::
xcall push_gset3
movw R10,R18
movw R20,R16
sbiw R28,4
.dbline -1
.dbline 32
; }
;
; /*
; 向eeprom中写整型变量的值
; */
; void EEPROMWriteWord(unsigned int addr,unsigned int *word)
; {
.dbline 34
; unsigned char eeprom_data[2];
; unsigned char *ptr = (unsigned char *)word;
movw R22,R10
.dbline 35
; eeprom_data[0] = *ptr;
movw R30,R22
ldd R2,z+0
std y+2,R2
.dbline 36
; ptr++;
subi R22,255 ; offset = 1
sbci R23,255
.dbline 37
; eeprom_data[1] = *ptr;
movw R30,R22
ldd R2,z+0
std y+3,R2
.dbline 38
; EEPROMWriteBytes(addr,eeprom_data,2);
ldi R24,2
ldi R25,0
std y+1,R25
std y+0,R24
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
movw R16,R20
xcall _EEPROMWriteBytes
.dbline -2
L3:
adiw R28,4
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l eeprom_data 2 A[2:2]c
.dbsym r ptr 22 pc
.dbsym r word 10 pi
.dbsym r addr 20 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -