?? rwe2prom.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 ; //寫一個無符號整型數(shù)到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讀一頁,并校驗其是否有效數(shù)據(jù)。
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 ; }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -