⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom128.s.bak.bak

📁 AVR16源代码 ICC编译器
💻 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 + -