📄 eeprom128.s.bak.bak
字号:
.module Eeprom128.c
.area text(rom, con, rel)
.dbfile F:\AVR_Modem\Boot_TEST\BOOTLoadICC\Eeprom128.c
.dbfunc e eeprom_read_byte _eeprom_read_byte fc
; addr -> R16,R17
.even
_eeprom_read_byte::
.dbline -1
.dbline 15
; #include <iom128v.h>
; #include "Eeprom128.h"
;
; //============================================================
; //函 数:unsigned char eeprom_read_byte(unsigned long *addr)
; //功 能:读取EE一个字节
; //入口参数:读取地址
; //返 回 值:读取的字节数据
; //设 计 者:陈祖安
; //创作时间:2006-03-28
; //修改时间:
; //修改目的:
; //============================================================
; unsigned char eeprom_read_byte(unsigned int *addr)
; {
L2:
.dbline 17
L3:
.dbline 17
; /* Wait for completion of previous write */
; while(EECR & (1<<EEWE));
sbic 0x1c,1
rjmp L2
.dbline 19
; /* Set up address register */
; EEAR = *addr;
movw R30,R16
ldd R2,z+0
ldd R3,z+1
out 0x1f,R3
out 0x1e,R2
.dbline 21
; /* Start eeprom read by writing EERE */
; EECR |= (1<<EERE);
sbi 0x1c,0
.dbline 23
; /* Return data from Data Register */
; return EEDR;
in R16,0x1d
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r addr 16 pi
.dbend
.dbfunc e eeprom_write_byte _eeprom_write_byte fV
; val -> R18
; addr -> R16,R17
.even
_eeprom_write_byte::
.dbline -1
.dbline 36
; }
; //============================================================
; //函 数:void eeprom_write_byte(unsigned long *addr, unsigned char val)
; //功 能:写入EE一个字节
; //入口参数:写入地址,写入数据
; //返 回 值:无
; //设 计 者:陈祖安
; //创作时间:2006-03-28
; //修改时间:
; //修改目的:
; //============================================================
; void eeprom_write_byte(unsigned int *addr, unsigned char val)
; {
L6:
.dbline 38
L7:
.dbline 38
; /* Wait for completion of previous write */
; while(EECR & (1<<EEWE));
sbic 0x1c,1
rjmp L6
.dbline 40
; /* Set up address and Data Registers */
; EEAR = *addr;
movw R30,R16
ldd R2,z+0
ldd R3,z+1
out 0x1f,R3
out 0x1e,R2
.dbline 41
; EEDR = val;
out 0x1d,R18
.dbline 43
; /* Write logical one to EEMWE */
; EECR |= (1<<EEMWE);
sbi 0x1c,2
.dbline 45
; /* Start eeprom write by setting EEWE */
; EECR |= (1<<EEWE);
sbi 0x1c,1
L9:
.dbline 46
L10:
.dbline 46
; while(EECR & (1<<EEWE));
sbic 0x1c,1
rjmp L9
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbsym r val 18 c
.dbsym r addr 16 pi
.dbend
.dbfunc e Write_EEPROM _Write_EEPROM fV
; i -> R20
; EE_START_ADR -> y+6
; num_bytes -> R22
; pBuffer -> R10,R11
.even
_Write_EEPROM::
xcall push_gset3
mov R22,R18
movw R10,R16
.dbline -1
.dbline 60
; }
; /*****************************************************************************
; *
; * Function name : StoreEEPROM
; *
; * Returns : None
; *
; * Parameters : Pointer to string, number of bytes to write, adress in EEPROM
; *
; * Purpose : Write byte(s) to the EEPROM
; *
; *****************************************************************************/
; void Write_EEPROM(unsigned char *pBuffer, unsigned char num_bytes, unsigned int EE_START_ADR)
; {
.dbline 62
; unsigned char i;
; for (i=0;i<num_bytes;i++)
clr R20
xjmp L16
L13:
.dbline 63
.dbline 64
mov R30,R20
clr R31
add R30,R10
adc R31,R11
ldd R18,z+0
movw R16,R28
subi R16,250 ; offset = 6
sbci R17,255
xcall _eeprom_write_byte
.dbline 65
ldd R24,y+6
ldd R25,y+7
adiw R24,1
std y+7,R25
std y+6,R24
.dbline 66
L14:
.dbline 62
inc R20
L16:
.dbline 62
cp R20,R22
brlo L13
.dbline -2
L12:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym l EE_START_ADR 6 i
.dbsym r num_bytes 22 c
.dbsym r pBuffer 10 pc
.dbend
.dbfunc e Read_EEPROM _Read_EEPROM fV
; i -> R20
; EE_START_ADR -> y+6
; num_bytes -> R22
; pBuffer -> R10,R11
.even
_Read_EEPROM::
xcall push_gset3
mov R22,R18
movw R10,R16
.dbline -1
.dbline 83
; {
; eeprom_write_byte(&EE_START_ADR, pBuffer[i]);
; EE_START_ADR++;
; }
; }
;
;
; /*****************************************************************************
; *
; * Function name : ReadEEPROM
; *
; * Returns : None
; *
; * Parameters : Pointer to string, number of bytes to read, adress in EEPROM
; *
; * Purpose : Write byte(s) to the EEPROM
; *
; *****************************************************************************/
;
; void Read_EEPROM(unsigned char *pBuffer, unsigned char num_bytes, unsigned int EE_START_ADR)
; {
.dbline 86
; unsigned char i;
;
; for (i=0;i<num_bytes;i++)
clr R20
xjmp L21
L18:
.dbline 87
.dbline 88
movw R16,R28
subi R16,250 ; offset = 6
sbci R17,255
xcall _eeprom_read_byte
mov R30,R20
clr R31
add R30,R10
adc R31,R11
std z+0,R16
.dbline 89
ldd R24,y+6
ldd R25,y+7
adiw R24,1
std y+7,R25
std y+6,R24
.dbline 90
L19:
.dbline 86
inc R20
L21:
.dbline 86
cp R20,R22
brlo L18
.dbline -2
L17:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym l EE_START_ADR 6 i
.dbsym r num_bytes 22 c
.dbsym r pBuffer 10 pc
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -