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

📄 eeprom_ex.lis

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

⌨️ 快捷键说明

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