📄 para.src
字号:
; .\out_sst89e564\para.SRC generated from: source\para.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE source\para.c LARGE BROWSE ORDER NOAREGS DEBUG OBJECTEXTEND PRINT(.\para.lst) SRC(.\out_sst89e564\para.SRC)
$NOMOD51
NAME PARA
P0 DATA 080H
SP DATA 081H
DPL DATA 082H
DPH DATA 083H
PCON DATA 087H
TCON DATA 088H
TMOD DATA 089H
TL0 DATA 08AH
TL1 DATA 08BH
TH0 DATA 08CH
TH1 DATA 08DH
P1 DATA 090H
SCON DATA 098H
SBUF DATA 099H
P2 DATA 0A0H
IE DATA 0A8H
P3 DATA 0B0H
IP DATA 0B8H
T2CON DATA 0C8H
T2MOD DATA 0C9H
RCAP2L DATA 0CAH
RCAP2H DATA 0CBH
TL2 DATA 0CCH
TH2 DATA 0CDH
PSW DATA 0D0H
ACC DATA 0E0H
B DATA 0F0H
P0_0 BIT 080H.0
P0_1 BIT 080H.1
P0_2 BIT 080H.2
P0_3 BIT 080H.3
P0_4 BIT 080H.4
P0_5 BIT 080H.5
P0_6 BIT 080H.6
P0_7 BIT 080H.7
IT0 BIT 088H.0
IE0 BIT 088H.1
IT1 BIT 088H.2
IE1 BIT 088H.3
TR0 BIT 088H.4
TF0 BIT 088H.5
TR1 BIT 088H.6
TF1 BIT 088H.7
P1_0 BIT 090H.0
P1_1 BIT 090H.1
P1_2 BIT 090H.2
P1_3 BIT 090H.3
P1_4 BIT 090H.4
P1_5 BIT 090H.5
P1_6 BIT 090H.6
P1_7 BIT 090H.7
T2 BIT 090H.0
T2EX BIT 090H.1
RI BIT 098H.0
TI BIT 098H.1
RB8 BIT 098H.2
TB8 BIT 098H.3
REN BIT 098H.4
SM2 BIT 098H.5
SM1 BIT 098H.6
SM0 BIT 098H.7
P2_0 BIT 0A0H.0
P2_1 BIT 0A0H.1
P2_2 BIT 0A0H.2
P2_3 BIT 0A0H.3
P2_4 BIT 0A0H.4
P2_5 BIT 0A0H.5
P2_6 BIT 0A0H.6
P2_7 BIT 0A0H.7
EX0 BIT 0A8H.0
ET0 BIT 0A8H.1
EX1 BIT 0A8H.2
ET1 BIT 0A8H.3
ES BIT 0A8H.4
ET2 BIT 0A8H.5
EA BIT 0A8H.7
P3_0 BIT 0B0H.0
P3_1 BIT 0B0H.1
P3_2 BIT 0B0H.2
P3_3 BIT 0B0H.3
P3_4 BIT 0B0H.4
P3_5 BIT 0B0H.5
P3_6 BIT 0B0H.6
P3_7 BIT 0B0H.7
RXD BIT 0B0H.0
TXD BIT 0B0H.1
INT0 BIT 0B0H.2
INT1 BIT 0B0H.3
T0 BIT 0B0H.4
T1 BIT 0B0H.5
WR BIT 0B0H.6
RD BIT 0B0H.7
PX0 BIT 0B8H.0
PT0 BIT 0B8H.1
PX1 BIT 0B8H.2
PT1 BIT 0B8H.3
PS BIT 0B8H.4
PT2 BIT 0B8H.5
CP_RL2 BIT 0C8H.0
C_T2 BIT 0C8H.1
TR2 BIT 0C8H.2
EXEN2 BIT 0C8H.3
TCLK BIT 0C8H.4
RCLK BIT 0C8H.5
EXF2 BIT 0C8H.6
TF2 BIT 0C8H.7
P BIT 0D0H.0
FL BIT 0D0H.1
OV BIT 0D0H.2
RS0 BIT 0D0H.3
RS1 BIT 0D0H.4
F0 BIT 0D0H.5
AC BIT 0D0H.6
CY BIT 0D0H.7
FST DATA 0B6H
WDTC DATA 0C0H
WDTD DATA 085H
AUXR DATA 08EH
AUXR1 DATA 0A2H
WDTRST DATA 0A6H
WDTPRG DATA 0A7H
SADDR DATA 0A9H
IPH DATA 0B7H
IPH0 DATA 0B7H
SADEN DATA 0B9H
IPL DATA 0B8H
IPL0 DATA 0B8H
CCON DATA 0D8H
CMOD DATA 0D9H
CCAPM0 DATA 0DAH
CCAPM1 DATA 0DBH
CCAPM2 DATA 0DCH
CCAPM3 DATA 0DDH
CCAPM4 DATA 0DEH
P5 DATA 0E8H
CL DATA 0E9H
CCAP0L DATA 0EAH
CCAP1L DATA 0EBH
CCAP2L DATA 0ECH
CCAP3L DATA 0EDH
CCAP4L DATA 0EEH
CH DATA 0F9H
CCAP0H DATA 0FAH
CCAP1H DATA 0FBH
CCAP2H DATA 0FCH
CCAP3H DATA 0FDH
CCAP4H DATA 0FEH
?PR?_ParaWrite?PARA SEGMENT CODE
?XD?_ParaWrite?PARA SEGMENT XDATA OVERLAYABLE
?BI?_ParaWrite?PARA SEGMENT BIT OVERLAYABLE
?PR?_ParaRead?PARA SEGMENT CODE
?XD?_ParaRead?PARA SEGMENT XDATA OVERLAYABLE
?PR?ParaMemInit?PARA SEGMENT CODE
?XD?ParaMemInit?PARA SEGMENT XDATA OVERLAYABLE
?PR?ParaInit?PARA SEGMENT CODE
?PR?ParaCopy?PARA SEGMENT CODE
?XD?ParaCopy?PARA SEGMENT XDATA OVERLAYABLE
?BI?ParaCopy?PARA SEGMENT BIT OVERLAYABLE
?CO?PARA SEGMENT CODE
?C_INITSEG SEGMENT CODE
?XD?PARA SEGMENT XDATA
EXTRN CODE (_ComWrite)
EXTRN CODE (_FlashWrByte)
EXTRN CODE (_FlashErSector)
EXTRN CODE (_FlashRdByte)
PUBLIC FWI
PUBLIC ParaInit
PUBLIC ParaMemInit
PUBLIC _ParaRead
PUBLIC _ParaWrite
RSEG ?XD?_ParaWrite?PARA
?_ParaWrite?BYTE:
para?040: DS 1
ORG 1
value?041: DS 1
ORG 2
i?042: DS 2
ORG 4
StartAddr?045: DS 2
RSEG ?BI?_ParaWrite?PARA
?_ParaWrite?BIT:
fRedo?046: DBIT 1
RSEG ?XD?_ParaRead?PARA
?_ParaRead?BYTE:
para?147: DS 1
ORG 1
i?148: DS 2
ORG 3
StartAddr?149: DS 2
ORG 5
oldpara?150: DS 1
RSEG ?XD?ParaMemInit?PARA
?ParaMemInit?BYTE:
s0head?251: DS 2
ORG 2
s0flag?252: DS 2
ORG 4
s1head?253: DS 2
ORG 6
s1flag?254: DS 2
ORG 8
ch?255: DS 1
RSEG ?XD?ParaCopy?PARA
?ParaCopy?BYTE:
i0?457: DS 2
ORG 2
i01?458: DS 2
ORG 4
i1?459: DS 2
ORG 6
i11?460: DS 2
ORG 8
StartAddr?461: DS 2
RSEG ?BI?ParaCopy?PARA
?ParaCopy?BIT:
dir?456: DBIT 1
RSEG ?XD?PARA
FWI: DS 1
RSEG ?CO?PARA
?SC_0:
DB 'M' ,'e' ,'m' ,' ' ,'i' ,'n' ,'i' ,'t' ,'i' ,'a'
DB 'l' ,'i' ,'z' ,'i' ,'n' ,'g' ,'.' ,'.' ,'.' ,00DH
DB 00AH,000H
?SC_22:
DB 'S' ,'0' ,' ' ,'e' ,'m' ,'p' ,'t' ,'y' ,'.' ,00DH
DB 00AH,000H
?SC_34:
DB 'S' ,'1' ,' ' ,'e' ,'m' ,'p' ,'t' ,'y' ,'.' ,00DH
DB 00AH,000H
?SC_46:
DB 'B' ,'o' ,'t' ,'h' ,' ' ,'e' ,'m' ,'p' ,'t' ,'y'
DB ',' ,' ' ,'u' ,'s' ,'e' ,' ' ,'S' ,'0' ,'.' ,00DH
DB 00AH,000H
?SC_68:
DB 'U' ,'s' ,'e' ,' ' ,'S' ,'1' ,'.' ,00DH,00AH,000H
?SC_78:
DB 'U' ,'s' ,'e' ,' ' ,'S' ,'0' ,'.' ,00DH,00AH,000H
?SC_88:
DB 'E' ,'r' ,'r' ,'o' ,'r' ,',' ,' ' ,'c' ,'h' ,'e'
DB 'c' ,'k' ,' ' ,'a' ,'g' ,'a' ,'i' ,'n' ,' ' ,'a'
DB 'n' ,'d' ,' ' ,'f' ,'o' ,'r' ,'m' ,'a' ,'t' ,'.'
DB 00DH,00AH,000H
?SC_121:
DB 'N' ,'e' ,'w' ,' ' ,'m' ,'e' ,'m' ,' ' ,'o' ,'r'
DB ' ' ,'m' ,'e' ,'m' ,' ' ,'e' ,'r' ,'r' ,'o' ,'r'
DB ',' ,' ' ,'u' ,'s' ,'e' ,' ' ,'d' ,'e' ,'f' ,'a'
DB 'u' ,'l' ,'t' ,' ' ,'v' ,'a' ,'l' ,'u' ,'e' ,'s'
DB '.' ,' ' ,'W' ,'r' ,'i' ,'t' ,'i' ,'n' ,'g' ,'.'
DB '.' ,'.' ,00DH,00AH,000H
?SC_176:
DB 'O' ,'k' ,'.' ,00DH,00AH,000H
ParaStart:
DW 01C00H
ParaSize:
DW 00100H
RSEG ?XD?ParaCopy?PARA
RSEG ?C_INITSEG
DB 041H
DW FWI
DB 005H
; /************************************
; * para.c *
; * save parameters *
; * design by Liulixun *
; * create at 04-13-2007 *
; * update: 04-15-2007 *
; ************************************/
;
; /* **************************************
; Memory organization
; ------------------------
; | SEC0 | 55 f0 ... |
; ------------------------
; | SEC1 | 55 f0 ... |
; ------------------------
;
; 0x55: head
; 0xf0: using
; 0x00: erased
; 0xff: empty
; 0xfc: copying
;
; If a sector is now in use, the 1st 2 byte is 0x55f0, else it should be 0x5500.
; When sector 0 is full, we should copy sector 0 to sector 1, then then write
; 0x5500 to the begining 2 bytes of sector 0.
;
; *****************************************/
;
; #include "includes.h"
;
; /*
; // parameters to save:
; #define PARA_ERASHED 0x00 // parameter erased
; #define PARA_HEAD 0x55 // head of parameter
; #define H_USING 0xf0
; #define H_ERASED 0x00
; #define H_COPYING 0xfc
; #define H_EMPTY 0xff
; #define PARA_EMPTY 0xff // unused
; #define PARA_SWITCHS 0xfe // switch parameters
; #define F_BORFC 0x01 // beep on rf card
; #define F_BOTC 0x02 // beep on touch card
; #define F_CINV 0x04 // invert package
; #define F_NOTICE 0x08 // notice when card status changed
; #define F_SNOA 0x10 // stop notice on ack
; #define F_ASC 0x20 // auto search card
; #define F_LED 0x40 // enable/disable led operation
; #define PARA_LORC 0xfd // led on rf card
; #define PARA_LOTC 0xfc // led on both card
; #define PARA_LOBC 0xfb // led on touch card
; #define PARA_LONC 0xfa // led on none card
; #define PARA_RFCCT 0xf9 // rf card config time, 1 for 10 ms
; #define PARA_RFRXGAIN 0xf8 //////////////////////////////////////////////////////////////////////////////////////////////////////
;
; #define SECTOR_SIZE 0x80
;
; */
;
; static code unsigned int ParaStart = 0x1c00;
; static code unsigned int ParaSize = SECTOR_SIZE * 2;
;
; // copy parameters to next sector when one is full
; // dir: 1: sec 0 --> sect 1; 0: sec 1 --> sec 0
; static void ParaCopy(bit dir);
;
;
; // write a parameter
; // para: parameter type, defined upon
; // value: parameter value
; // return: positive value for new value, -1 for error
; int ParaWrite(unsigned char para, unsigned char value)
RSEG ?PR?_ParaWrite?PARA
_ParaWrite:
USING 0
; SOURCE LINE # 71
MOV DPTR,#para?040
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
; {
; SOURCE LINE # 72
; unsigned int i;
; unsigned char oldvalue;
; unsigned char oldpara;
; unsigned int StartAddr;
; bit fRedo = 0;
; SOURCE LINE # 77
CLR fRedo?046
;
; // find which sector is now in use.
; if(FlashRdByte(ParaStart+1) == H_USING)
; SOURCE LINE # 80
MOV DPTR,#ParaStart
MOV A,#01H
MOVC A,@A+DPTR
ADD A,#01H
MOV R7,A
CLR A
MOVC A,@A+DPTR
ADDC A,#00H
MOV R6,A
LCALL _FlashRdByte
CJNE R7,#0F0H,?C0001
; StartAddr = ParaStart + 2;
; SOURCE LINE # 81
MOV DPTR,#ParaStart
MOV A,#01H
MOVC A,@A+DPTR
ADD A,#02H
SJMP ?C0068
?C0001:
; else if(FlashRdByte(ParaStart + SECTOR_SIZE + 1) == H_USING)
; SOURCE LINE # 82
MOV DPTR,#ParaStart
MOV A,#01H
MOVC A,@A+DPTR
ADD A,#081H
MOV R7,A
CLR A
MOVC A,@A+DPTR
ADDC A,#00H
MOV R6,A
LCALL _FlashRdByte
CJNE R7,#0F0H,?C0003
; StartAddr = ParaStart + SECTOR_SIZE + 2;
; SOURCE LINE # 83
MOV DPTR,#ParaStart
MOV A,#01H
MOVC A,@A+DPTR
ADD A,#082H
?C0068:
MOV R6,A
CLR A
MOVC A,@A+DPTR
ADDC A,#00H
MOV DPTR,#StartAddr?045
MOVX @DPTR,A
INC DPTR
XCH A,R6
MOVX @DPTR,A
SJMP ?_ParaWrite?Redo
?C0003:
; else
; return -1;
; SOURCE LINE # 85
LJMP ?C0069
;
; Redo:
; SOURCE LINE # 87
?_ParaWrite?Redo:
; // search and write
; for(i=StartAddr; i<StartAddr+SECTOR_SIZE-2; i+=2)
; SOURCE LINE # 89
MOV DPTR,#StartAddr?045
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#i?042
XCH A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
?C0007:
MOV DPTR,#StartAddr?045+01H
MOVX A,@DPTR
ADD A,#07EH
MOV R5,A
MOV DPTR,#StartAddr?045
MOVX A,@DPTR
ADDC A,#00H
MOV R4,A
MOV DPTR,#i?042
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,R5
MOV A,R6
SUBB A,R4
JC $ + 5H
LJMP ?C0008
; {
; SOURCE LINE # 90
; oldpara = FlashRdByte(i);
; SOURCE LINE # 91
LCALL _FlashRdByte
;---- Variable 'oldpara?044' assigned to Register 'R7' ----
;
; if(oldpara == PARA_EMPTY) // if empty, write para
; SOURCE LINE # 93
MOV A,R7
CJNE A,#0FFH,?C0010
; {
; SOURCE LINE # 94
; FlashWrByte(i, para);
; SOURCE LINE # 95
MOV DPTR,#i?042
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#para?040
MOVX A,@DPTR
MOV R5,A
LCALL _FlashWrByte
; oldpara = FlashRdByte(i);
; SOURCE LINE # 96
MOV DPTR,#i?042
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL _FlashRdByte
; }
; SOURCE LINE # 97
?C0010:
;
; if(oldpara == para) // same as input para
; SOURCE LINE # 99
MOV DPTR,#para?040
MOVX A,@DPTR
XRL A,R7
JNZ ?C0009
; {
; SOURCE LINE # 100
; oldvalue = FlashRdByte(i+1);
; SOURCE LINE # 101
MOV DPTR,#i?042+01H
MOVX A,@DPTR
ADD A,#01H
MOV R7,A
MOV DPTR,#i?042
MOVX A,@DPTR
ADDC A,#00H
MOV R6,A
LCALL _FlashRdByte
;---- Variable 'oldvalue?043' assigned to Register 'R7' ----
; if(oldvalue == value) // same value, return success
; SOURCE LINE # 102
MOV DPTR,#value?041
MOVX A,@DPTR
MOV R5,A
XRL A,R7
JNZ ?C0012
; {
; SOURCE LINE # 103
; return oldvalue;
; SOURCE LINE # 104
MOV R6,A
RET
; }
; SOURCE LINE # 105
?C0012:
; else if((oldvalue | value) == oldvalue) // can be over write
; SOURCE LINE # 106
MOV A,R5
ORL A,R7
XRL A,R7
JNZ ?C0014
; {
; SOURCE LINE # 107
; FlashWrByte(i+1, value);
; SOURCE LINE # 108
MOV DPTR,#i?042+01H
MOVX A,@DPTR
ADD A,#01H
MOV R7,A
MOV DPTR,#i?042
MOVX A,@DPTR
ADDC A,#00H
MOV R6,A
MOV DPTR,#value?041
MOVX A,@DPTR
MOV R5,A
LCALL _FlashWrByte
; return FlashRdByte(i+1);
; SOURCE LINE # 109
MOV DPTR,#i?042+01H
MOVX A,@DPTR
ADD A,#01H
MOV R7,A
MOV DPTR,#i?042
MOVX A,@DPTR
ADDC A,#00H
MOV R6,A
LCALL _FlashRdByte
MOV R6,#00H
RET
; }
; SOURCE LINE # 110
?C0014:
; else // should be erase 1st
; { // then find a new place
; SOURCE LINE # 112
; FlashWrByte(i, PARA_ERASHED);
; SOURCE LINE # 113
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -