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

📄 eeprom.lis

📁 前两年在一家模型公司开发的
💻 LIS
字号:
                        .module eeprom.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\TWINTI~1\eeprom.c
 0000                   .dbfunc e init_eeprom _init_eeprom fV
                        .even
 0000           _init_eeprom::
 0000                   .dbline -1
 0000                   .dbline 11
 0000           ; 
 0000           ; //#include <avr/io.h>
 0000           ; //#include <avr/delay.h>
 0000           ; //#include <avr/signal.h>
 0000           ; //#include <avr/interrupt.h>
 0000           ; 
 0000           ; #include      <iom48v.h>
 0000           ; #include      <macros.h>
 0000           ; 
 0000           ; void init_eeprom(void)
 0000           ; {
 0000                   .dbline 12
 0000           ;        EECR = 0x07;
 0000 87E0              ldi R24,7
 0002 8FBB              out 0x1f,R24
 0004                   .dbline -2
 0004           L1:
 0004                   .dbline 0 ; func end
 0004 0895              ret
 0006                   .dbend
 0006                   .dbfunc e EEPROM_write _EEPROM_write fV
 0006           ;          Datas -> R18
 0006           ;        Address -> R16
                        .even
 0006           _EEPROM_write::
 0006                   .dbline -1
 0006                   .dbline 16
 0006           ; }
 0006           ; 
 0006           ; void EEPROM_write(unsigned char Address, unsigned char Datas)
 0006           ; {
 0006           L3:
 0006                   .dbline 17
 0006           L4:
 0006                   .dbline 17
 0006           ;       while(EECR & (1<<EEWE));// 等待上一次写操作结束 
 0006 F999              sbic 0x1f,1
 0008 FECF              rjmp L3
 000A                   .dbline 19
 000A           ;       
 000A           ;       EEARL= Address;                 // 设置地址和数据寄存器 
 000A 01BD              out 0x21,R16
 000C                   .dbline 20
 000C           ;       EEDR = Datas;
 000C 20BD              out 0x20,R18
 000E                   .dbline 21
 000E           ;       EECR |= (1<<EEMWE);             // 置位EEMWE
 000E FA9A              sbi 0x1f,2
 0010                   .dbline 22
 0010           ;       EECR |= (1<<EEWE);              // 置位EEWE 以启动写操作E
 0010 F99A              sbi 0x1f,1
 0012                   .dbline -2
 0012           L2:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r Datas 18 c
 0014                   .dbsym r Address 16 c
 0014                   .dbend
 0014                   .dbfunc e EEPROM_read _EEPROM_read fc
 0014           ;      uiAddress -> R16
                        .even
 0014           _EEPROM_read::
 0014                   .dbline -1
 0014                   .dbline 28
 0014           ; }
 0014           ; 
 0014           ; 
 0014           ; 
 0014           ; unsigned char EEPROM_read(unsigned char uiAddress)
 0014           ; {
 0014           L7:
 0014                   .dbline 29
 0014           L8:
 0014                   .dbline 29
 0014           ;       while(EECR&(1<<EEWE));  //等待上一次写操作结束
 0014 F999              sbic 0x1f,1
 0016 FECF              rjmp L7
 0018                   .dbline 30
 0018           ;       EEARL = uiAddress;              // 设置地址寄存器
 0018 01BD              out 0x21,R16
 001A                   .dbline 31
 001A           ;       EECR |= (1<<EERE);              // 设置EERE 以启动读操作
 001A F89A              sbi 0x1f,0
 001C                   .dbline 32
 001C           ;       return EEDR;                    // 自数据寄存器返回数据
 001C 00B5              in R16,0x20
 001E                   .dbline -2
 001E           L6:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r uiAddress 16 c
 0020                   .dbend

⌨️ 快捷键说明

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