📄 eeprom_l.lis
字号:
.module eeprom_l.c
.area text(rom, con, rel)
0000 .dbfile C:\BJQD\eeprom_l.c
0000 .dbfunc e EEPROMReadWord _EEPROMReadWord fV
0000 ; eeprom_data -> y+2
0000 ; ptr -> R20,R21
0000 ; word -> R10,R11
0000 ; addr -> R22,R23
.even
0000 _EEPROMReadWord::
0000 0E940000 xcall push_gset3
0004 5901 movw R10,R18
0006 B801 movw R22,R16
0008 2497 sbiw R28,4
000A .dbline -1
000A .dbline 19
000A ; #include <eeprom.h>
000A ; #include "main.h"
000A ;
000A ; extern struct cal cal0;
000A ;
000A ; /*
000A ; eeprom操作模块
000A ; */
000A ;
000A ; /*
000A ; 从eeprom中读整型变量的值
000A ; */
000A ;
000A ; #include <eeprom.h>
000A ; /*
000A ; 从eeprom中读整型变量的值
000A ; */
000A ; void EEPROMReadWord(unsigned int addr,unsigned int *word)
000A ; {
000A .dbline 21
000A ; unsigned char eeprom_data[2];
000A ; unsigned char *ptr = (unsigned char *)word;
000A A501 movw R20,R10
000C .dbline 22
000C ; EEPROMReadBytes(addr,eeprom_data,2);
000C 82E0 ldi R24,2
000E 90E0 ldi R25,0
0010 9983 std y+1,R25
0012 8883 std y+0,R24
0014 9E01 movw R18,R28
0016 2E5F subi R18,254 ; offset = 2
0018 3F4F sbci R19,255
001A 8B01 movw R16,R22
001C 0E940000 xcall _EEPROMReadBytes
0020 .dbline 23
0020 ; *ptr = eeprom_data[0];
0020 2A80 ldd R2,y+2
0022 FA01 movw R30,R20
0024 2082 std z+0,R2
0026 .dbline 24
0026 ; ptr++;
0026 4F5F subi R20,255 ; offset = 1
0028 5F4F sbci R21,255
002A .dbline 25
002A ; *ptr = eeprom_data[1];
002A 2B80 ldd R2,y+3
002C FA01 movw R30,R20
002E 2082 std z+0,R2
0030 .dbline -2
0030 L1:
0030 2496 adiw R28,4
0032 0E940000 xcall pop_gset3
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym l eeprom_data 2 A[2:2]c
0038 .dbsym r ptr 20 pc
0038 .dbsym r word 10 pi
0038 .dbsym r addr 22 i
0038 .dbend
0038 .dbfunc e EEPROMWriteWord _EEPROMWriteWord fV
0038 ; eeprom_data -> y+2
0038 ; ptr -> R22,R23
0038 ; word -> R10,R11
0038 ; addr -> R20,R21
.even
0038 _EEPROMWriteWord::
0038 0E940000 xcall push_gset3
003C 5901 movw R10,R18
003E A801 movw R20,R16
0040 2497 sbiw R28,4
0042 .dbline -1
0042 .dbline 32
0042 ; }
0042 ;
0042 ; /*
0042 ; 向eeprom中写整型变量的值
0042 ; */
0042 ; void EEPROMWriteWord(unsigned int addr,unsigned int *word)
0042 ; {
0042 .dbline 34
0042 ; unsigned char eeprom_data[2];
0042 ; unsigned char *ptr = (unsigned char *)word;
0042 B501 movw R22,R10
0044 .dbline 35
0044 ; eeprom_data[0] = *ptr;
0044 FB01 movw R30,R22
0046 2080 ldd R2,z+0
0048 2A82 std y+2,R2
004A .dbline 36
004A ; ptr++;
004A 6F5F subi R22,255 ; offset = 1
004C 7F4F sbci R23,255
004E .dbline 37
004E ; eeprom_data[1] = *ptr;
004E FB01 movw R30,R22
0050 2080 ldd R2,z+0
0052 2B82 std y+3,R2
0054 .dbline 38
0054 ; EEPROMWriteBytes(addr,eeprom_data,2);
0054 82E0 ldi R24,2
0056 90E0 ldi R25,0
0058 9983 std y+1,R25
005A 8883 std y+0,R24
005C 9E01 movw R18,R28
005E 2E5F subi R18,254 ; offset = 2
0060 3F4F sbci R19,255
0062 8A01 movw R16,R20
0064 0E940000 xcall _EEPROMWriteBytes
0068 .dbline -2
0068 L3:
0068 2496 adiw R28,4
006A 0E940000 xcall pop_gset3
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbsym l eeprom_data 2 A[2:2]c
0070 .dbsym r ptr 22 pc
0070 .dbsym r word 10 pi
0070 .dbsym r addr 20 i
0070 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -