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

📄 rwe2prom.lis

📁 手操器
💻 LIS
字号:
                        .module rwe2prom.c
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\rwe2prom.c
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\手操器\rwe2prom.c
 0000                   .dbfunc e WriteUnsignedIntToE2PROM _WriteUnsignedIntToE2PROM fV
 0000           ;     E2PROMAddr -> R10,R11
 0000           ; WritedVariable -> R12,R13
                        .even
 0000           _WriteUnsignedIntToE2PROM::
 0000 0E940000          xcall push_xgset003C
 0004 5901              movw R10,R18
 0006 6801              movw R12,R16
 0008 2297              sbiw R28,2
 000A                   .dbline -1
 000A                   .dbline 17
 000A           ; #include <iom16v.h>
 000A           ; #include <macros.h>
 000A           ; #include "eeprom.h"
 000A           ; 
 000A           ; extern union{
 000A           ;       unsigned char   E2PROMBuffer[4];
 000A           ;       struct{
 000A           ;       unsigned int    WritedVariable;
 000A           ;       unsigned char   Xor1;
 000A           ;       unsigned char   Xor2;   
 000A           ;       }SingleVariable;
 000A           ; }BufferForWriteE2PROM;
 000A           ; 
 000A           ; //写一个无符号整型数到E2PROM
 000A           ; //已含有校验。
 000A           ; void  WriteUnsignedIntToE2PROM(unsigned int WritedVariable,unsigned int E2PROMAddr)
 000A           ; {
 000A                   .dbline 18
 000A           ;       BufferForWriteE2PROM.SingleVariable.WritedVariable=WritedVariable;
 000A D0920100          sts _BufferForWriteE2PROM+1,R13
 000E C0920000          sts _BufferForWriteE2PROM,R12
 0012                   .dbline 19
 0012           ;       BufferForWriteE2PROM.E2PROMBuffer[2]=0x55;
 0012 85E5              ldi R24,85
 0014 80930200          sts _BufferForWriteE2PROM+2,R24
 0018                   .dbline 20
 0018           ;       BufferForWriteE2PROM.E2PROMBuffer[3]=BufferForWriteE2PROM.E2PROMBuffer[0]
 0018 3C2C              mov R3,R12
 001A 3D24              eor R3,R13
 001C 30920300          sts _BufferForWriteE2PROM+3,R3
 0020                   .dbline 23
 0020           ;                               ^BufferForWriteE2PROM.E2PROMBuffer[1];
 0020           ; 
 0020           ;       EEPROMWriteBytes(E2PROMAddr,BufferForWriteE2PROM.E2PROMBuffer,4);
 0020 84E0              ldi R24,4
 0022 90E0              ldi R25,0
 0024 9983              std y+1,R25
 0026 8883              std y+0,R24
 0028 20E0              ldi R18,<_BufferForWriteE2PROM
 002A 30E0              ldi R19,>_BufferForWriteE2PROM
 002C 8501              movw R16,R10
 002E 0E940000          xcall _EEPROMWriteBytes
 0032                   .dbline -2
 0032           L3:
 0032                   .dbline 0 ; func end
 0032 2296              adiw R28,2
 0034 0C940000          xjmp pop_xgset003C
 0038                   .dbsym r E2PROMAddr 10 i
 0038                   .dbsym r WritedVariable 12 i
 0038                   .dbend
 0038                   .dbfunc e WriteUnsignedCharToE2PROM _WriteUnsignedCharToE2PROM fV
 0038           ;     E2PROMAddr -> R10,R11
 0038           ; WritedVariable -> R12
                        .even
 0038           _WriteUnsignedCharToE2PROM::
 0038 0E940000          xcall push_xgset003C
 003C 5901              movw R10,R18
 003E C02E              mov R12,R16
 0040 2297              sbiw R28,2
 0042                   .dbline -1
 0042                   .dbline 29
 0042           ; }
 0042           ; 
 0042           ; //写一个无符号字符到E2PROM
 0042           ; //已含有校验。
 0042           ; void  WriteUnsignedCharToE2PROM(unsigned char WritedVariable,unsigned int E2PROMAddr)
 0042           ; {
 0042                   .dbline 30
 0042           ;       BufferForWriteE2PROM.E2PROMBuffer[0]=WritedVariable;
 0042 C0920000          sts _BufferForWriteE2PROM,R12
 0046                   .dbline 31
 0046           ;       BufferForWriteE2PROM.E2PROMBuffer[1]=0x55;
 0046 85E5              ldi R24,85
 0048 80930100          sts _BufferForWriteE2PROM+1,R24
 004C                   .dbline 32
 004C           ;       BufferForWriteE2PROM.E2PROMBuffer[2]=0x55;
 004C 80930200          sts _BufferForWriteE2PROM+2,R24
 0050                   .dbline 33
 0050           ;       BufferForWriteE2PROM.E2PROMBuffer[3]=BufferForWriteE2PROM.E2PROMBuffer[0]
 0050 3C2C              mov R3,R12
 0052 3826              eor R3,R24
 0054 30920300          sts _BufferForWriteE2PROM+3,R3
 0058                   .dbline 36
 0058           ;                               ^BufferForWriteE2PROM.E2PROMBuffer[1];
 0058           ; 
 0058           ;       EEPROMWriteBytes(E2PROMAddr,BufferForWriteE2PROM.E2PROMBuffer,4);
 0058 84E0              ldi R24,4
 005A 90E0              ldi R25,0
 005C 9983              std y+1,R25
 005E 8883              std y+0,R24
 0060 20E0              ldi R18,<_BufferForWriteE2PROM
 0062 30E0              ldi R19,>_BufferForWriteE2PROM
 0064 8501              movw R16,R10
 0066 0E940000          xcall _EEPROMWriteBytes
 006A                   .dbline -2
 006A           L7:
 006A                   .dbline 0 ; func end
 006A 2296              adiw R28,2
 006C 0C940000          xjmp pop_xgset003C
 0070                   .dbsym r E2PROMAddr 10 i
 0070                   .dbsym r WritedVariable 12 c
 0070                   .dbend
 0070                   .dbfunc e ReadAPageFromE2PROMAndCheckIt _ReadAPageFromE2PROMAndCheckIt fc
 0070           ;     E2PROMAddr -> R10,R11
                        .even
 0070           _ReadAPageFromE2PROMAndCheckIt::
 0070 AA92              st -y,R10
 0072 BA92              st -y,R11
 0074 5801              movw R10,R16
 0076 2297              sbiw R28,2
 0078                   .dbline -1
 0078                   .dbline 43
 0078           ; }
 0078           ; 
 0078           ; //从E2PROM读一页,并校验其是否有效数据。
 0078           ; //If The Function Return 0,It Means That The Data In This Page Are Invalid.
 0078           ; //If The Function Return 1,It Means That The Data In This Page Are Valid,And The Data Are In BufferForWriteE2PROM.
 0078           ; unsigned char ReadAPageFromE2PROMAndCheckIt(unsigned int E2PROMAddr)
 0078           ; {
 0078                   .dbline 45
 0078           ;         
 0078           ;       EEPROMReadBytes(E2PROMAddr,BufferForWriteE2PROM.E2PROMBuffer,4);
 0078 84E0              ldi R24,4
 007A 90E0              ldi R25,0
 007C 9983              std y+1,R25
 007E 8883              std y+0,R24
 0080 20E0              ldi R18,<_BufferForWriteE2PROM
 0082 30E0              ldi R19,>_BufferForWriteE2PROM
 0084 8501              movw R16,R10
 0086 0E940000          xcall _EEPROMReadBytes
 008A                   .dbline 46
 008A           ;       if(     BufferForWriteE2PROM.E2PROMBuffer[2]!=0x55)
 008A 80910200          lds R24,_BufferForWriteE2PROM+2
 008E 8535              cpi R24,85
 0090 11F0              breq L13
 0092           X0:
 0092                   .dbline 47
 0092           ;               return 0;
 0092 0027              clr R16
 0094 0EC0              xjmp L12
 0096           L13:
 0096                   .dbline 48
 0096           ;       BufferForWriteE2PROM.E2PROMBuffer[2]=BufferForWriteE2PROM.E2PROMBuffer[0]
 0096 20900100          lds R2,_BufferForWriteE2PROM+1
 009A 30900000          lds R3,_BufferForWriteE2PROM
 009E 3224              eor R3,R2
 00A0 30920200          sts _BufferForWriteE2PROM+2,R3
 00A4                   .dbline 50
 00A4           ;                               ^BufferForWriteE2PROM.E2PROMBuffer[1];
 00A4           ;       if( BufferForWriteE2PROM.E2PROMBuffer[2]==BufferForWriteE2PROM.E2PROMBuffer[3] )
 00A4 20900300          lds R2,_BufferForWriteE2PROM+3
 00A8 3214              cp R3,R2
 00AA 11F4              brne L18
 00AC           X1:
 00AC                   .dbline 51
 00AC           ;               return 1;
 00AC 01E0              ldi R16,1
 00AE 01C0              xjmp L12
 00B0           L18:
 00B0                   .dbline 52
 00B0           ;       else    return 0;
 00B0 0027              clr R16
 00B2                   .dbline -2
 00B2           L12:
 00B2                   .dbline 0 ; func end
 00B2 2296              adiw R28,2
 00B4 B990              ld R11,y+
 00B6 A990              ld R10,y+
 00B8 0895              ret
 00BA                   .dbsym r E2PROMAddr 10 i
 00BA                   .dbend
 00BA           ; }

⌨️ 快捷键说明

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