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

📄 eeprom_l.lis

📁 一个正在应用的步进电机控制程序,包括电机的调速,正反,细分,通讯控制
💻 LIS
字号:
                        .module eeprom_l.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\BJQD\eeprom_l.c
 0000                   .dbfunc e EEPROMReadWord _EEPROMReadWord fV
 0000           ;    eeprom_data -> y+2
 0000           ;            ptr -> R20,R21
 0000           ;           word -> R10,R11
 0000           ;           addr -> R22,R23
                        .even
 0000           _EEPROMReadWord::
 0000 0E940000          xcall push_gset3
 0004 5901              movw R10,R18
 0006 B801              movw R22,R16
 0008 2497              sbiw R28,4
 000A                   .dbline -1
 000A                   .dbline 19
 000A           ; #include <eeprom.h>
 000A           ; #include "main.h"
 000A           ; 
 000A           ; extern struct cal cal0;
 000A           ; 
 000A           ; /*
 000A           ; eeprom操作模块
 000A           ; */
 000A           ; 
 000A           ; /*
 000A           ; 从eeprom中读整型变量的值
 000A           ; */
 000A           ; 
 000A           ; #include <eeprom.h>
 000A           ; /*
 000A           ; 从eeprom中读整型变量的值
 000A           ; */
 000A           ; void EEPROMReadWord(unsigned int addr,unsigned int *word)
 000A           ; {  
 000A                   .dbline 21
 000A           ;     unsigned char eeprom_data[2];
 000A           ;       unsigned char *ptr = (unsigned char *)word;
 000A A501              movw R20,R10
 000C                   .dbline 22
 000C           ;       EEPROMReadBytes(addr,eeprom_data,2);
 000C 82E0              ldi R24,2
 000E 90E0              ldi R25,0
 0010 9983              std y+1,R25
 0012 8883              std y+0,R24
 0014 9E01              movw R18,R28
 0016 2E5F              subi R18,254  ; offset = 2
 0018 3F4F              sbci R19,255
 001A 8B01              movw R16,R22
 001C 0E940000          xcall _EEPROMReadBytes
 0020                   .dbline 23
 0020           ;       *ptr = eeprom_data[0];
 0020 2A80              ldd R2,y+2
 0022 FA01              movw R30,R20
 0024 2082              std z+0,R2
 0026                   .dbline 24
 0026           ;       ptr++;
 0026 4F5F              subi R20,255  ; offset = 1
 0028 5F4F              sbci R21,255
 002A                   .dbline 25
 002A           ;       *ptr = eeprom_data[1];
 002A 2B80              ldd R2,y+3
 002C FA01              movw R30,R20
 002E 2082              std z+0,R2
 0030                   .dbline -2
 0030           L1:
 0030 2496              adiw R28,4
 0032 0E940000          xcall pop_gset3
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbsym l eeprom_data 2 A[2:2]c
 0038                   .dbsym r ptr 20 pc
 0038                   .dbsym r word 10 pi
 0038                   .dbsym r addr 22 i
 0038                   .dbend
 0038                   .dbfunc e EEPROMWriteWord _EEPROMWriteWord fV
 0038           ;    eeprom_data -> y+2
 0038           ;            ptr -> R22,R23
 0038           ;           word -> R10,R11
 0038           ;           addr -> R20,R21
                        .even
 0038           _EEPROMWriteWord::
 0038 0E940000          xcall push_gset3
 003C 5901              movw R10,R18
 003E A801              movw R20,R16
 0040 2497              sbiw R28,4
 0042                   .dbline -1
 0042                   .dbline 32
 0042           ; }
 0042           ; 
 0042           ; /*
 0042           ; 向eeprom中写整型变量的值
 0042           ; */
 0042           ; void EEPROMWriteWord(unsigned int addr,unsigned int *word)
 0042           ; {  
 0042                   .dbline 34
 0042           ;     unsigned char eeprom_data[2];
 0042           ;       unsigned char *ptr = (unsigned char *)word;     
 0042 B501              movw R22,R10
 0044                   .dbline 35
 0044           ;       eeprom_data[0] = *ptr;
 0044 FB01              movw R30,R22
 0046 2080              ldd R2,z+0
 0048 2A82              std y+2,R2
 004A                   .dbline 36
 004A           ;       ptr++;
 004A 6F5F              subi R22,255  ; offset = 1
 004C 7F4F              sbci R23,255
 004E                   .dbline 37
 004E           ;       eeprom_data[1] = *ptr;
 004E FB01              movw R30,R22
 0050 2080              ldd R2,z+0
 0052 2B82              std y+3,R2
 0054                   .dbline 38
 0054           ;       EEPROMWriteBytes(addr,eeprom_data,2);
 0054 82E0              ldi R24,2
 0056 90E0              ldi R25,0
 0058 9983              std y+1,R25
 005A 8883              std y+0,R24
 005C 9E01              movw R18,R28
 005E 2E5F              subi R18,254  ; offset = 2
 0060 3F4F              sbci R19,255
 0062 8A01              movw R16,R20
 0064 0E940000          xcall _EEPROMWriteBytes
 0068                   .dbline -2
 0068           L3:
 0068 2496              adiw R28,4
 006A 0E940000          xcall pop_gset3
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbsym l eeprom_data 2 A[2:2]c
 0070                   .dbsym r ptr 22 pc
 0070                   .dbsym r word 10 pi
 0070                   .dbsym r addr 20 i
 0070                   .dbend

⌨️ 快捷键说明

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