📄 eeprom读写.lis
字号:
.module EEPROM读写.c
.area text(rom, con, rel)
0000 .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_EEPROM读写\EEPROM读写.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2009-3-12 17:39:42
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0x00;
0000 2224 clr R2
0002 28BA out 0x18,R2
0004 .dbline 11
0004 ; DDRB = 0x00;
0004 27BA out 0x17,R2
0006 .dbline 12
0006 ; PORTC = 0x00; //m103 output only
0006 25BA out 0x15,R2
0008 .dbline 13
0008 ; DDRC = 0x00;
0008 24BA out 0x14,R2
000A .dbline 14
000A ; PORTD = 0x00;
000A 22BA out 0x12,R2
000C .dbline 15
000C ; DDRD = 0x00;
000C 21BA out 0x11,R2
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e init_devices _init_devices fV
.even
0010 _init_devices::
0010 .dbline -1
0010 .dbline 20
0010 ; }
0010 ;
0010 ; //call this routine to initialize all peripherals
0010 ; void init_devices(void)
0010 ; {
0010 .dbline 22
0010 ; //stop errant interrupts until set up
0010 ; CLI(); //disable all interrupts
0010 F894 cli
0012 .dbline 23
0012 ; port_init();
0012 F6DF rcall _port_init
0014 .dbline 25
0014 ;
0014 ; MCUCR = 0x00;
0014 2224 clr R2
0016 25BE out 0x35,R2
0018 .dbline 26
0018 ; GICR = 0x00;
0018 2BBE out 0x3b,R2
001A .dbline 27
001A ; TIMSK = 0x00; //timer interrupt sources
001A 29BE out 0x39,R2
001C .dbline 28
001C ; SEI(); //re-enable interrupts
001C 7894 sei
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e eeprom_write _eeprom_write fV
0020 ; data -> R18
0020 ; address -> R16,R17
.even
0020 _eeprom_write::
0020 .dbline -1
0020 .dbline 40
0020 ; //all peripherals are now initialized
0020 ; }
0020 ;
0020 ; /*****************************************************************************
0020 ; 用 途:EEPROM读写程序
0020 ; Taget :mega8
0020 ; crystal :8M
0020 ; 介 绍:
0020 ; *****************************************************************************/
0020 ; //eeprom写操作
0020 ; void eeprom_write(unsigned int address,unsigned char data)
0020 ; {
0020 L4:
0020 .dbline 42
0020 ; while(EECR&(1<<EEWE))
0020 ; {;}
0020 .dbline 42
0020 .dbline 42
0020 L5:
0020 .dbline 41
0020 E199 sbic 0x1c,1
0022 FECF rjmp L4
0024 X0:
0024 .dbline 43
0024 ; EEAR=address;
0024 1FBB out 0x1f,R17
0026 0EBB out 0x1e,R16
0028 .dbline 44
0028 ; EEDR=data;
0028 2DBB out 0x1d,R18
002A .dbline 45
002A ; EECR|=(1<<EEMWE);
002A E29A sbi 0x1c,2
002C .dbline 46
002C ; EECR|=(1<<EEWE);
002C E19A sbi 0x1c,1
002E .dbline -2
002E L3:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r data 18 c
0030 .dbsym r address 16 i
0030 .dbend
0030 .dbfunc e eeprom_read _eeprom_read fc
0030 ; address -> R16,R17
.even
0030 _eeprom_read::
0030 .dbline -1
0030 .dbline 50
0030 ; }
0030 ; //eeprom读操作
0030 ; unsigned char eeprom_read(unsigned int address)
0030 ; {
0030 L8:
0030 .dbline 52
0030 ; while(EECR&(1<<EEWE))
0030 ; {;}
0030 .dbline 52
0030 .dbline 52
0030 L9:
0030 .dbline 51
0030 E199 sbic 0x1c,1
0032 FECF rjmp L8
0034 X1:
0034 .dbline 53
0034 ; EEAR=address;
0034 1FBB out 0x1f,R17
0036 0EBB out 0x1e,R16
0038 .dbline 54
0038 ; EECR|=(1<<EERE);
0038 E09A sbi 0x1c,0
003A .dbline 55
003A ; return EEDR;
003A 0DB3 in R16,0x1d
003C .dbline -2
003C L7:
003C .dbline 0 ; func end
003C 0895 ret
003E .dbsym r address 16 i
003E .dbend
003E .dbfunc e main _main fV
003E ; i -> R10
.even
003E _main::
003E .dbline -1
003E .dbline 59
003E ; }
003E ; //****************************************************************************
003E ; void main()
003E ; {
003E .dbline 61
003E ; unsigned char i;
003E ; port_init();
003E E0DF rcall _port_init
0040 .dbline 62
0040 ; init_devices();
0040 E7DF rcall _init_devices
0042 .dbline 64
0042 ;
0042 ; eeprom_write(1,0x55);
0042 25E5 ldi R18,85
0044 01E0 ldi R16,1
0046 10E0 ldi R17,0
0048 EBDF rcall _eeprom_write
004A .dbline 65
004A ; eeprom_write(2,0xAA);
004A 2AEA ldi R18,170
004C 02E0 ldi R16,2
004E 10E0 ldi R17,0
0050 E7DF rcall _eeprom_write
0052 .dbline 66
0052 ; i=eeprom_read(1);
0052 01E0 ldi R16,1
0054 10E0 ldi R17,0
0056 ECDF rcall _eeprom_read
0058 .dbline 67
0058 ; PORTB=i;
0058 08BB out 0x18,R16
005A .dbline 68
005A ; i=eeprom_read(2);
005A 02E0 ldi R16,2
005C 10E0 ldi R17,0
005E E8DF rcall _eeprom_read
0060 A02E mov R10,R16
0062 .dbline 69
0062 ; PORTD=i;
0062 02BB out 0x12,R16
0064 L12:
0064 .dbline 71
0064 ; while(1)
0064 ; {
0064 .dbline 72
0064 ; ;
0064 .dbline 73
0064 ; }
0064 L13:
0064 .dbline 70
0064 FFCF rjmp L12
0066 X2:
0066 .dbline -2
0066 L11:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r i 10 c
0068 .dbend
0068 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -