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

📄 eeprom_ex.s

📁 AVRMega16单片机的项目
💻 S
字号:
	.module eeprom_ex.c
	.area text(rom, con, rel)
;           addr -> R1
;          wWord -> R0,R1
	.even
_eep_write_word::
; /****************************************Copyright (c)**************************************************
; **                               技 术 有 限 公 司
; **                                     
; ** 文   件   名	: eeprom_ex.c
; ** 最后修改日期	: 2006-2-24
; ** 描        述	: EEPROM_EX扩展读写函数
; ** 版	     本	: V1.0
; ** 作	     者	:chengs
; ** 主控芯片型号	: ATmega 		
; ** 集成开发环境	: ICCAVR 6.31A
; **********************************************************************************************************/
; #include <macros.h>
; #include <iom16v.h>
; #include "eeprom.h"
; 
; 
; 	
; /**********************************************************************
; functionName:void write_eeprom_word(unsigned int wWord,unsigned char addr)
; description:写EEPROM函数,每个地址存16位数据
; 高位存在高地址,低位存在低地址
; **********************************************************************/
; void eep_write_word(unsigned int wWord,unsigned char addr)
; {
; 	;
L1:
	.dbline 0 ; func end
	ret
;           addr -> R16
	.even
_eep_read_word::
; }
; 
; /**********************************************************************
; functionName:unsigned int read_eeprom_word(unsigned char addr)
; description:读EEPROM函数,返回16位数据
; **********************************************************************/
; unsigned int eep_read_word(unsigned char addr)
; {
; 	return 0;
	clr R16
	clr R17
L2:
	.dbline 0 ; func end
	ret
;              i -> R20
;       byte_num -> R22
;              s -> R18,R19
;      start_add -> R16,R17
	.even
_eep_write_block::
	xcall push_gset2
	ldd R22,y+4
; }
; 
; /**********************************************************************
; functionName:void write_eep_block(unsinged char start_add,unsinged char *s,unsinged char byte_num)
; description:从地址start_add开始连续写byte_num字节,内容为*s指向的内容
; **********************************************************************/
; void eep_write_block(unsigned int start_add,unsigned char *s,unsigned char byte_num)
; {
; 	unsigned char i;
; 	for(i=0;i<byte_num;i++)
	clr R20
	xjmp L7
L4:
	subi R18,255  ; offset = 1
	sbci R19,255
L5:
	inc R20
L7:
	cp R20,R22
	brlo L4
L3:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
;              i -> R20
;       byte_num -> R22
;              s -> R18,R19
;      start_add -> R16,R17
	.even
_eep_read_block::
	xcall push_gset2
	ldd R22,y+4
; 	{
; 		//write_eeprom_byte(*s,start_add+i);
; 		s++;	
; 	}
; }
; 
; /**********************************************************************
; functionName:void read_eep_block(unsinged int start_add,unsigned *s,unsigned char byte_num);
; description:从地址start_add开始连续读byte_num字节,内容在*s指向的内容
; **********************************************************************/
; void eep_read_block(unsigned int start_add,unsigned *s,unsigned char byte_num)
; {
; 	unsigned char i;
; 	for(i=0;i<byte_num;i++)
	clr R20
	xjmp L12
L9:
	subi R18,254  ; offset = 2
	sbci R19,255
L10:
	inc R20
L12:
	cp R20,R22
	brlo L9
L8:
	xcall pop_gset2
	.dbline 0 ; func end
	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -