?? eeprom.src
字號:
; .\eeprom.SRC generated from: eeprom.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE eeprom.c LARGE BROWSE DEBUG OBJECTEXTEND SRC(.\eeprom.SRC)
$NOMOD51
NAME EEPROM
CCF2 BIT 0D8H.2
TB80 BIT 098H.3
SPI0CKR DATA 0A2H
CCF3 BIT 0D8H.3
P0 DATA 080H
SPIEN BIT 0F8H.0
CCF4 BIT 0D8H.4
P1 DATA 090H
P2 DATA 0A0H
ADC0CF DATA 0BCH
P3 DATA 0B0H
AC BIT 0D0H.6
PCA0 DATA 0F9H
EIE1 DATA 0E6H
EA BIT 0A8H.7
MCE0 BIT 098H.5
PSCTL DATA 08FH
CF BIT 0D8H.7
IT01CF DATA 0E4H
ADC0CN DATA 0E8H
D0IN BIT 090H.4
P0MDOUT DATA 0A4H
DI BIT 0A0H.4
D1IN BIT 090H.5
P1MDOUT DATA 0A5H
TMR2RLH DATA 0CBH
IE DATA 0A8H
P2MDOUT DATA 0A6H
P3MDOUT DATA 0A7H
TMR3RLH DATA 093H
EIP1 DATA 0F6H
TRIG_OUT BIT 0B0H.4
W_FLG BIT 0A0H.3
TXBMT BIT 0F8H.1
PCA0CPH0 DATA 0FCH
TMR2RLL DATA 0CAH
PCA0CPH1 DATA 0EAH
TMR3RLL DATA 092H
DP DATA 082H
PCA0CPH2 DATA 0ECH
ADC0GT DATA 0C3H
CR BIT 0D8H.6
TF2H BIT 0C8H.7
T2SPLIT BIT 0C8H.3
PCA0CPH3 DATA 0EEH
REN0 BIT 098H.4
PCA0CPH4 DATA 0FEH
PCA0CPL0 DATA 0FBH
RE BIT 0A0H.5
PCA0CPL1 DATA 0E9H
PCA0CPM0 DATA 0DAH
PCA0MD DATA 0D9H
PCA0CN DATA 0D8H
PCA0CPL2 DATA 0EBH
PCA0CPM1 DATA 0DBH
TF2L BIT 0C8H.6
PCA0CPL3 DATA 0EDH
PCA0CPM2 DATA 0DCH
IP DATA 0B8H
ADC0LT DATA 0C5H
X_SCK BIT 080H.0
ARBLOST BIT 0C0H.2
PCA0CPL4 DATA 0FDH
PCA0CPM3 DATA 0DDH
PCA0CPM4 DATA 0DEH
INT0 BIT 080H.7
TXBSY BIT 0F8H.3
CY BIT 0D0H.7
SI BIT 0C0H.0
LEDG BIT 080H.3
XBR0 DATA 0E1H
SMB0CF DATA 0C1H
XBR1 DATA 0E2H
EMI0CN DATA 0AAH
BELL BIT 0A0H.7
REF0CN DATA 0D1H
AD0INT BIT 0E8H.5
SP DATA 081H
OV BIT 0D0H.2
SMB0CN DATA 0C0H
TMR2 DATA 0CCH
TMR3 DATA 094H
MODF BIT 0F8H.5
LEDR BIT 080H.2
RX BIT 080H.5
S0MODE BIT 098H.7
VDM0CN DATA 0FFH
P0MDIN DATA 0F1H
CPT0MD DATA 09DH
CPT0CN DATA 09BH
P1MDIN DATA 0F2H
CPT1MD DATA 09CH
CPT1CN DATA 09AH
TX BIT 080H.4
P2MDIN DATA 0F3H
TF2LEN BIT 0C8H.5
P3MDIN DATA 0F4H
TRIG_IN BIT 0B0H.3
SPI0CN DATA 0F8H
W_RST BIT 0A0H.6
PCON DATA 087H
SPIF BIT 0F8H.7
nsel BIT 090H.0
TMOD DATA 089H
TCON DATA 088H
WCOL BIT 0F8H.6
TRIG BIT 0A0H.1
TMR2CN DATA 0C8H
P0SKIP DATA 0D4H
TMR3CN DATA 091H
nres BIT 080H.7
T2XCLK BIT 0C8H.0
P1SKIP DATA 0D5H
P2SKIP DATA 0D6H
IE0 BIT 088H.1
CPT0MX DATA 09FH
IE1 BIT 088H.3
OSCICL DATA 0B3H
CPT1MX DATA 09EH
CLKSEL DATA 0A9H
sdi BIT 080H.6
B DATA 0F0H
ADC0H DATA 0BEH
OSCICN DATA 0B2H
sck BIT 080H.0
TMR2RL DATA 0CAH
ADC0L DATA 0BDH
TMR3RL DATA 092H
sdo BIT 080H.1
ACC DATA 0E0H
ES0 BIT 0A8H.4
PCA0CP0 DATA 0FBH
AD0EN BIT 0E8H.7
ET0 BIT 0A8H.1
PCA0CP1 DATA 0E9H
ET1 BIT 0A8H.3
TF0 BIT 088H.5
PCA0CP2 DATA 0EBH
D0W BIT 090H.2
ET2 BIT 0A8H.5
RI0 BIT 098H.0
TF1 BIT 088H.7
PCA0CP3 DATA 0EDH
D1W BIT 090H.3
TH0 DATA 08CH
PCA0CP4 DATA 0FDH
EX0 BIT 0A8H.0
TI0 BIT 098H.1
IT0 BIT 088H.0
PCA0H DATA 0FAH
TH1 DATA 08DH
X_CS BIT 090H.1
MASTER BIT 0C0H.7
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
ACK BIT 0C0H.1
OSCXCN DATA 0B1H
TL0 DATA 08AH
PCA0L DATA 0F9H
TL1 DATA 08BH
TXMODE BIT 0C0H.6
PS0 BIT 0B8H.4
WIE_CK BIT 0A0H.0
X_SI BIT 080H.6
PT0 BIT 0B8H.1
RS0 BIT 0D0H.3
PT1 BIT 0B8H.3
RS1 BIT 0D0H.4
PT2 BIT 0B8H.5
TR0 BIT 088H.4
AD0TM BIT 0E8H.6
TR1 BIT 088H.6
RELAY_OUT BIT 0B0H.2
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
X_SO BIT 080H.1
SLVSEL BIT 0F8H.2
DPH DATA 083H
ADC0GTH DATA 0C4H
DPL DATA 082H
ADC0GTL DATA 0C3H
SBUF0 DATA 099H
ADC0LTH DATA 0C6H
RSTSRC DATA 0EFH
FLACL DATA 0B5H
SCON0 DATA 098H
AMX0N DATA 0BAH
ADC0LTL DATA 0C5H
AMX0P DATA 0BBH
STA BIT 0C0H.5
D0OUT BIT 090H.6
SMB0DAT DATA 0C2H
D1OUT BIT 090H.7
TMR2H DATA 0CDH
SPI0CFG DATA 0A1H
TMR3H DATA 095H
CKCON DATA 08EH
IN_OUT BIT 0A0H.2
RXOVRN BIT 0F8H.4
TMR2L DATA 0CCH
ACKRQ BIT 0C0H.3
TMR3L DATA 094H
F0 BIT 0D0H.5
FLSCL DATA 0B6H
RELAY_IN BIT 0B0H.1
AD0CM0 BIT 0E8H.0
F1 BIT 0D0H.1
STO BIT 0C0H.4
AD0CM1 BIT 0E8H.1
SPI0DAT DATA 0A3H
ADC0 DATA 0BDH
AD0CM2 BIT 0E8H.2
AD0WINT BIT 0E8H.3
AD0BUSY BIT 0E8H.4
PSW DATA 0D0H
CCF0 BIT 0D8H.0
RB80 BIT 098H.2
FLKEY DATA 0B7H
CCF1 BIT 0D8H.1
?PR?_SPI_WriteByte?EEPROM SEGMENT CODE
?PR?SPI_ReadByte?EEPROM SEGMENT CODE
?BI?SPI_ReadByte?EEPROM SEGMENT BIT OVERLAYABLE
?PR?AT25_GetStatusReg?EEPROM SEGMENT CODE
?PR?AT25_IsReady?EEPROM SEGMENT CODE
?PR?_AT25_SetStatusReg?EEPROM SEGMENT CODE
?XD?_AT25_SetStatusReg?EEPROM SEGMENT XDATA OVERLAYABLE
?PR?_AT25_ReadArray?EEPROM SEGMENT CODE
?XD?_AT25_ReadArray?EEPROM SEGMENT XDATA OVERLAYABLE
?PR?_AT25_WritePage?EEPROM SEGMENT CODE
?XD?_AT25_WritePage?EEPROM SEGMENT XDATA OVERLAYABLE
?PR?_Init_AT25XXX?EEPROM SEGMENT CODE
?PR?_FLASH_PageErase?EEPROM SEGMENT CODE
?BI?_FLASH_PageErase?EEPROM SEGMENT BIT OVERLAYABLE
?PR?_FLASH_ByteWrite?EEPROM SEGMENT CODE
?BI?_FLASH_ByteWrite?EEPROM SEGMENT BIT OVERLAYABLE
?PR?_FLASH_PageRead?EEPROM SEGMENT CODE
?BI?_FLASH_PageRead?EEPROM SEGMENT BIT OVERLAYABLE
?PR?_flash_save?EEPROM SEGMENT CODE
?XD?_flash_save?EEPROM SEGMENT XDATA OVERLAYABLE
?PR?flash_boot?EEPROM SEGMENT CODE
?XD?flash_boot?EEPROM SEGMENT XDATA OVERLAYABLE
?PR?set_cs?EEPROM SEGMENT CODE
?CO?EEPROM SEGMENT CODE
?DT?_FLASH_PageErase?EEPROM SEGMENT DATA OVERLAYABLE
?DT?_FLASH_ByteWrite?EEPROM SEGMENT DATA OVERLAYABLE
?DT?_FLASH_PageRead?EEPROM SEGMENT DATA OVERLAYABLE
EXTRN XDATA (combuf)
EXTRN IDATA (RELAY_TIME_IN)
EXTRN IDATA (wiefmt)
EXTRN IDATA (INACTIVITY_TIME)
EXTRN CODE (cardouttime)
EXTRN IDATA (power)
EXTRN CODE (relay_time)
EXTRN CODE (wie)
EXTRN CODE (_cal_crc)
EXTRN XDATA (MyID)
EXTRN CODE (pow)
EXTRN IDATA (RELAY_TIME_OUT)
EXTRN CODE (?C?SLCMP)
EXTRN CODE (?C?CSTPTR)
EXTRN CODE (?C?IILDX)
EXTRN CODE (?C?CLDPTR)
EXTRN CODE (?C?CLDOPTR)
EXTRN CODE (?C?COPY)
PUBLIC defdata
PUBLIC set_cs
PUBLIC flash_boot
PUBLIC ?_flash_save?BYTE
PUBLIC _flash_save
PUBLIC _FLASH_PageRead
PUBLIC _FLASH_ByteWrite
PUBLIC _FLASH_PageErase
PUBLIC _Init_AT25XXX
PUBLIC _AT25_WritePage
PUBLIC _AT25_ReadArray
PUBLIC _AT25_SetStatusReg
PUBLIC AT25_IsReady
PUBLIC AT25_GetStatusReg
PUBLIC SPI_ReadByte
PUBLIC _SPI_WriteByte
RSEG ?XD?_flash_save?EEPROM
?_flash_save?BYTE:
source_buf?1171: DS 3
ORG 3
desk_addr?1172: DS 2
ORG 5
s_len?1173: DS 1
ORG 6
i?1174: DS 1
ORG 7
j?1175: DS 1
RSEG ?XD?flash_boot?EEPROM
?flash_boot?BYTE:
j?1277: DS 1
ORG 1
pt?1278: DS 2
ORG 3
nf_addr?1279: DS 2
RSEG ?XD?_AT25_SetStatusReg?EEPROM
?_AT25_SetStatusReg?BYTE:
status_data?447: DS 1
ORG 1
j?448: DS 2
RSEG ?BI?_FLASH_PageErase?EEPROM
?_FLASH_PageErase?BIT:
EA_SAVE?861: DBIT 1
RSEG ?BI?_FLASH_PageRead?EEPROM
?_FLASH_PageRead?BIT:
EA_SAVE?1068: DBIT 1
RSEG ?XD?_AT25_ReadArray?EEPROM
?_AT25_ReadArray?BYTE:
address?549: DS 2
ORG 2
num_of_byte?550: DS 2
ORG 4
destination?551: DS 3
ORG 7
i?552: DS 2
ORG 9
j?553: DS 2
RSEG ?BI?SPI_ReadByte?EEPROM
?SPI_ReadByte?BIT:
bit_in?145: DBIT 1
RSEG ?XD?_AT25_WritePage?EEPROM
?_AT25_WritePage?BYTE:
address?654: DS 2
ORG 2
num_of_byte?655: DS 1
ORG 3
source?656: DS 3
ORG 6
i?657: DS 1
ORG 7
j?658: DS 2
RSEG ?BI?_FLASH_ByteWrite?EEPROM
?_FLASH_ByteWrite?BIT:
EA_SAVE?965: DBIT 1
RSEG ?DT?_FLASH_PageErase?EEPROM
pwrite?862: DS 2
RSEG ?DT?_FLASH_ByteWrite?EEPROM
pwrite?966: DS 2
RSEG ?DT?_FLASH_PageRead?EEPROM
pread?1070: DS 2
RSEG ?CO?EEPROM
defdata:
DB 01AH
DB 002H
DB 000H
DB 000H
DB 000H
DB 001H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 001H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H
; #include "global.h"
;
; #define WREN 6 // 0000 x110,write enable
; #define WRDI 4 // 0000 x100,write disable
; #define RDSR 5 // 0000 x101,read status register
; #define WRSR 1 // 0000 x001,write status register
; #define READ 3 // 0000 x011,read sequence
; #define WRITE 2 // 0000 x010,write sequence
;
;
;
; //extern unsigned char xdata combuf[32];
; unsigned char code defdata[32]={0x1a,
; 0x02,
; 0x00,0x00,0x00,0x01,
; 0x00,0x00,0x00,0x00,0x00,0x01,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; }; //默認參數表
;
; /***************************************************************************************
; **函數功能:AT25128
; **入參: 無
; **返回值: 無
; **作者: jerkoh
; **日期: 2009-07-02
; **說明: SPI eeprom
;
; ***************************************************************************************/
;
; /*-------------------------------------------------------
; SPI_WriteByte()
;
; Function: Send a byte of data to the device using
; SPI interface.
; Input: the data(one byte) want to send.
; Output: None.
; NOTE: Using SPI Mode 3/0
; --------------------------------------------------------*/
; void SPI_WriteByte(uchar spi_write_data)
RSEG ?PR?_SPI_WriteByte?EEPROM
_SPI_WriteByte:
USING 0
; SOURCE LINE # 39
;---- Variable 'spi_write_data?040' assigned to Register 'R7' ----
; {
; SOURCE LINE # 40
; uchar temp=0;
; SOURCE LINE # 41
;---- Variable 'temp?041' assigned to Register 'R6' ----
CLR A
; uchar i=0;
; SOURCE LINE # 42
;---- Variable 'i?042' assigned to Register 'R5' ----
MOV R5,A
; temp=spi_write_data;
; SOURCE LINE # 43
MOV R6,AR7
;
; for(i=0;i<8;i++) //send 8 bits
; SOURCE LINE # 45
?C0001:
; {
; SOURCE LINE # 46
; X_SCK=0;
; SOURCE LINE # 47
CLR X_SCK
;
; if(temp & 0x80)//MSB first
; SOURCE LINE # 49
MOV A,R6
JNB ACC.7,?C0004
; X_SI=1;
; SOURCE LINE # 50
SETB X_SI
SJMP ?C0005
?C0004:
; else
; X_SI=0;
; SOURCE LINE # 52
CLR X_SI
?C0005:
;
; temp=temp<<1;
; SOURCE LINE # 54
MOV A,R6
ADD A,ACC
MOV R6,A
;
; X_SCK=1;
; SOURCE LINE # 56
SETB X_SCK
; }
; SOURCE LINE # 57
INC R5
MOV A,R5
CJNE A,#08H,?C0001
;
;
; }
; SOURCE LINE # 60
?C0006:
RET
; END OF _SPI_WriteByte
;
;
;
; /*-------------------------------------------------------
; SPI_ReadByte()
;
; Function: Read a byte of data from the device using
; SPI interface.
; Input: None.
; Output: The data(one byte) been read,as a return value.
; NOTE: Using SPI Mode 3/0
; --------------------------------------------------------*/
; uchar SPI_ReadByte(void)
RSEG ?PR?SPI_ReadByte?EEPROM
SPI_ReadByte:
USING 0
; SOURCE LINE # 73
; {
; SOURCE LINE # 74
; uchar temp=0;
; SOURCE LINE # 75
;---- Variable 'temp?143' assigned to Register 'R7' ----
CLR A
MOV R7,A
; uchar i=0;
; SOURCE LINE # 76
;---- Variable 'i?144' assigned to Register 'R6' ----
MOV R6,A
; bit bit_in;
;
; temp=0x00;//initialize the data output
; SOURCE LINE # 79
;
; for(i=0;i<8;i++)
; SOURCE LINE # 81
?C0007:
; {
; SOURCE LINE # 82
; X_SCK=1;//Data is output on the SO line by the falling edge of SCK.
; SOURCE LINE # 83
SETB X_SCK
; temp=temp << 1;
; SOURCE LINE # 84
MOV A,R7
ADD A,ACC
MOV R7,A
; X_SCK=0;
; SOURCE LINE # 85
CLR X_SCK
; bit_in=X_SO;
; SOURCE LINE # 86
MOV C,X_SO
MOV bit_in?145,C
; if(bit_in) temp=temp | 0x01;
; SOURCE LINE # 87
JNB bit_in?145,?C0009
ORL A,#01H
MOV R7,A
; }
; SOURCE LINE # 88
?C0009:
INC R6
MOV A,R6
CJNE A,#08H,?C0007
?C0008:
; return (temp);
; SOURCE LINE # 89
; }
; SOURCE LINE # 90
?C0011:
RET
; END OF SPI_ReadByte
;
;
;
; /*---------------------------------------------------------
; AT25_GetStatusReg()
;
; Function: Read the Status Register of the AT25XXXA
; Input: None.
; Output: Content of the status register,as a return value.
; -----------------------------------------------------------*/
; uchar AT25_GetStatusReg(void)
RSEG ?PR?AT25_GetStatusReg?EEPROM
AT25_GetStatusReg:
USING 0
; SOURCE LINE # 101
; {
; SOURCE LINE # 102
; uchar temp;
;
; X_CS=0;
; SOURCE LINE # 105
CLR X_CS
;
; SPI_WriteByte(RDSR);
; SOURCE LINE # 107
MOV R7,#05H
LCALL _SPI_WriteByte
; temp=SPI_ReadByte();
; SOURCE LINE # 108
LCALL SPI_ReadByte
;---- Variable 'temp?246' assigned to Register 'R7' ----
;
; X_CS=1;
; SOURCE LINE # 110
SETB X_CS
; return temp;
; SOURCE LINE # 111
; }
; SOURCE LINE # 112
?C0012:
RET
; END OF AT25_GetStatusReg
;
;
; /*---------------------------------------------------------
; AT25_IsReady()
;
; Function: Return 0 if AT25XXXA is busy and 1 if ready.
; -----------------------------------------------------------*/
; bit AT25_IsReady(void)
RSEG ?PR?AT25_IsReady?EEPROM
AT25_IsReady:
USING 0
; SOURCE LINE # 120
; {
; SOURCE LINE # 121
;
; if(0x01 & AT25_GetStatusReg()) return 0;
; SOURCE LINE # 123
LCALL AT25_GetStatusReg
MOV A,R7
JNB ACC.0,?C0013
CLR C
RET
?C0013:
; else return 1;
; SOURCE LINE # 124
SETB C
; }
; SOURCE LINE # 125
?C0014:
RET
; END OF AT25_IsReady
;
;
;
; /*---------------------------------------------------------
; AT25_SetStatusReg()
;
; Function: Set the Status Register of the AT25XXXA
; Input: The Byte of the status register. NOTE: Only
; bit7(WPEN),bit3(BP1) and bit2(BP0) can be changed,
; so this byte should in the form of: x000 xx00
; Output: None.
; -----------------------------------------------------------*/
; void AT25_SetStatusReg(uchar status_data)
RSEG ?PR?_AT25_SetStatusReg?EEPROM
_AT25_SetStatusReg:
USING 0
; SOURCE LINE # 138
MOV DPTR,#status_data?447
MOV A,R7
MOVX @DPTR,A
; {
; SOURCE LINE # 139
; uint j;
; /* wait when device is busy */
; //while(!AT25_IsReady()); //jerkoh
;
; for(j=0;j<60000;j++)
; SOURCE LINE # 144
CLR A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0016:
MOV DPTR,#j?448
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -