rw_eeprom.lis
来自「详细介绍M8两版间通讯」· LIS 代码 · 共 74 行
LIS
74 行
.module RW_eeprom.c
.area text(rom, con, rel)
0000 .dbfile G:\Mega8程序\测试MegaOSCCAL\RW_eeprom.c
0000 .dbfunc e rom_write _rom_write fV
0000 ; Data -> R18
0000 ; Address -> R16,R17
.even
0000 _rom_write::
0000 .dbline -1
0000 .dbline 3
0000 ; #include <iom8v.h>
0000 ; void rom_write(unsigned int Address,unsigned char Data)
0000 ; {
0000 L2:
0000 .dbline 4
0000 L3:
0000 .dbline 4
0000 ; while(EECR&(1<<EEWE));
0000 E199 sbic 0x1c,1
0002 FECF rjmp L2
0004 .dbline 5
0004 ; EEAR=Address;
0004 1FBB out 0x1f,R17
0006 0EBB out 0x1e,R16
0008 .dbline 6
0008 ; EEDR=Data;
0008 2DBB out 0x1d,R18
000A .dbline 7
000A ; EECR|=(1<<EEMWE);
000A E29A sbi 0x1c,2
000C .dbline 8
000C ; EECR|=(1<<EEWE);
000C E19A sbi 0x1c,1
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r Data 18 c
0010 .dbsym r Address 16 i
0010 .dbend
0010 .dbfunc e rom_read _rom_read fi
0010 ; Address -> R16,R17
.even
0010 _rom_read::
0010 .dbline -1
0010 .dbline 11
0010 ; }
0010 ; unsigned rom_read(unsigned int Address)
0010 ; {
0010 L6:
0010 .dbline 12
0010 L7:
0010 .dbline 12
0010 ; while(EECR&(1<<EEWE));
0010 E199 sbic 0x1c,1
0012 FECF rjmp L6
0014 .dbline 13
0014 ; EEAR=Address;
0014 1FBB out 0x1f,R17
0016 0EBB out 0x1e,R16
0018 .dbline 14
0018 ; EECR|=(1<<EERE);
0018 E09A sbi 0x1c,0
001A .dbline 15
001A ; return EEDR;
001A 0DB3 in R16,0x1d
001C 1127 clr R17
001E .dbline -2
001E L5:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r Address 16 i
0020 .dbend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?