📄 eeprom.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 + -