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

📄 eeprom.lis

📁 meg16 的所有功能实例
💻 LIS
字号:
                        .module EEPROM.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\内部EEPROM实验\EEPROM.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 43
 0000           ; /****************************************Copyright (c)**************************************************
 0000           ; **                               ADEmbed Development Co.,LTD.                                    
 0000           ; **                                 http://www.adembed.com
 0000           ; **--------------File Info-------------------------------------------------------------------------------
 0000           ; ** File name:                 EEPROM.c
 0000           ; ** Last modified Date:  2008-12-13
 0000           ; ** Last Version:              1.0
 0000           ; ** Descriptions:              IC inside EEPROM write and read test.
 0000           ; ** 
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; ** Created by:                        junbolu
 0000           ; ** Created date:              2008-12-13
 0000           ; ** Version:                           1.0
 0000           ; ** Descriptions:              
 0000           ; **
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; ** Modified by:
 0000           ; ** Modified date:
 0000           ; ** Version:
 0000           ; ** Descriptions:
 0000           ; **
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; **ICC-AVR application builder : 2008-12-13
 0000           ; **Target : M16
 0000           ; **Crystal: 7.3728Mhz
 0000           ; **
 0000           ; **
 0000           ; **描述:这是一个读写片内EEPROM的测试程序。
 0000           ; **      没有一点多余的代码,清晰明了。
 0000           ; **
 0000           ; **涉及知识点:
 0000           ; **          EEPROM
 0000           ; **          
 0000           ; **          
 0000           ; *******************************************************************************************************/
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "define.h"
 0000           ; #include "EEPROM.h"
 0000           ; 
 0000           ; 
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 44
 0000           ;  EEPROM_write(0x01,0x66);          //在地址0x01写入0x66
 0000 26E6              ldi R18,102
 0002 01E0              ldi R16,1
 0004 10E0              ldi R17,0
 0006 05D0              xcall _EEPROM_write
 0008                   .dbline 45
 0008           ;  EEPROM_read(0x01);                              //读取地址0x01的数据
 0008 01E0              ldi R16,1
 000A 10E0              ldi R17,0
 000C 0CD0              xcall _EEPROM_read
 000E           L2:
 000E                   .dbline 46
 000E           L3:
 000E                   .dbline 46
 000E FFCF              xjmp L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbend
 0012                   .dbfunc e EEPROM_write _EEPROM_write fV
 0012           ;           data -> R18
 0012           ;        address -> R16,R17
                        .even
 0012           _EEPROM_write::
 0012                   .dbline -1
 0012                   .dbline 51
 0012           ;  while(1);
 0012           ; }
 0012           ; 
 0012           ; //=======================================================================
 0012           ; void EEPROM_write(uint16 address,uint8 data)
 0012           ; {
 0012                   .dbline 52
 0012           ;  SREG&=~0x80;
 0012 F894              bclr 7
 0014           L6:
 0014                   .dbline 54
 0014                   .dbline 55
 0014           L7:
 0014                   .dbline 53
 0014           ;  while(EECR&(1<<EEWE))
 0014 E199              sbic 0x1c,1
 0016 FECF              rjmp L6
 0018                   .dbline 56
 0018           ;   {
 0018           ;   }
 0018           ;  EEAR=address;
 0018 1FBB              out 0x1f,R17
 001A 0EBB              out 0x1e,R16
 001C                   .dbline 57
 001C           ;  EEDR=data;
 001C 2DBB              out 0x1d,R18
 001E                   .dbline 58
 001E           ;  EECR|=(1<<EEMWE);
 001E E29A              sbi 0x1c,2
 0020                   .dbline 59
 0020           ;  EECR|=(1<<EEWE);
 0020 E19A              sbi 0x1c,1
 0022                   .dbline 60
 0022           ;  SREG|=0x80;
 0022 7894              bset 7
 0024                   .dbline -2
 0024           L5:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbsym r data 18 c
 0026                   .dbsym r address 16 i
 0026                   .dbend
 0026                   .dbfunc e EEPROM_read _EEPROM_read fc
 0026           ;        address -> R16,R17
                        .even
 0026           _EEPROM_read::
 0026                   .dbline -1
 0026                   .dbline 65
 0026           ; }
 0026           ; 
 0026           ; //=======================================================================
 0026           ; uint8 EEPROM_read(uint16 address)
 0026           ; {
 0026                   .dbline 66
 0026           ;  SREG&=~0x80;
 0026 F894              bclr 7
 0028           L10:
 0028                   .dbline 68
 0028                   .dbline 69
 0028           L11:
 0028                   .dbline 67
 0028           ;  while(EECR&(1<<EEWE))
 0028 E199              sbic 0x1c,1
 002A FECF              rjmp L10
 002C                   .dbline 70
 002C           ;   {
 002C           ;   }
 002C           ;  EEAR=address;
 002C 1FBB              out 0x1f,R17
 002E 0EBB              out 0x1e,R16
 0030                   .dbline 71
 0030           ;  EECR|=(1<<EERE);
 0030 E09A              sbi 0x1c,0
 0032                   .dbline 72
 0032           ;  SREG|=0x80;
 0032 7894              bset 7
 0034                   .dbline 73
 0034           ;  return EEDR;
 0034 0DB3              in R16,0x1d
 0036                   .dbline -2
 0036           L9:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbsym r address 16 i
 0038                   .dbend

⌨️ 快捷键说明

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