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

📄 param_save_restore.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
  32          
  33          void save_user_param(void)        //存用户参数到fs4中
  34          {
  35   1         uint xdata i;
  36   1         uchar xdata *s=0x1000;
  37   1         uint xdata count=sizeof(L_Data)+sizeof(E_InputData)+sizeof(E_OutputData)+sizeof(TIMER);
  38   1         if(m_save_flg==1){       		//用户参数存储标志
  39   2             mE_InputData.mDianTi[0].TongXun.bZhiShi=1;
  40   2      	   EA=0;
  41   2      	   erase(0xa000);
  42   2      	   for(i=0;i<count;i++)
  43   2      	   	writef((0xa000+i),*(s+i));     
  44   2      	   m_save_flg=0;          		//用户参数存储标志
  45   2      		m_save_over_flg=1;	  		//用户参数存储过标志
  46   2      		SetUserParamSaveOverFlg();
  47   2      	   EA=1;      
  48   2        }
  49   1      }
  50          
  51          uchar erase(uint addr)	                                                       // 擦除 flash 程序区 
  52          {		uchar xdata *s; uchar b,c,d,e;
  53   1      		s=(0x555+addr); *s=0xaa;
  54   1      		s=(0xaaa+addr); *s=0x55;
C51 COMPILER V6.12  PARAM_SAVE_RESTORE                                                     06/05/2005 15:44:46 PAGE 15  

  55   1      		s=(0x555+addr); *s=0x80;
  56   1      		s=(0x555+addr); *s=0xaa;
  57   1      		s=(0xaaa+addr); *s=0x55;
  58   1      		s=addr; *s=0x30;
  59   1      		d=0; e=0;
  60   1       		do{b=*s; c=b&0x20; b=b&0x80; 
  61   2      		   if(b==0x80) d=1;
  62   2      		   if(c==0x20) e=1;
  63   2      		  }while((d==0)&&(e==0));
  64   1      		if(e==1)
  65   1      			{b=*s; b=b&0x80; 
  66   2      			 if(b==0x80) d=1;
  67   2      			 s=0x555+addr; *s=0xf0;
  68   2                 }
  69   1      		return(d);
  70   1      }
  71          
  72          uchar writef(uint x,uchar y)	                                              
  73          {  uchar xdata *s; uchar xdata a,b,c,d,e;
  74   1         uint addr=0;  
  75   1      	if((x>=0x4000)&&(x<0x6000)) addr=0x4000;
  76   1      	if((x>=0x6000)&&(x<0x8000)) addr=0x6000;
  77   1      	if((x>=0x8000)&&(x<0xa000)) addr=0x8000;
  78   1         if((x>=0xa000)&&(x<0xc000)) addr=0xa000;
  79   1      	if(x>=0xc000) addr=0xc000;
  80   1      		s=0x555+addr; *s=0xaa;
  81   1      		s=0xaaa+addr; *s=0x55;
  82   1      		s=0x555+addr; *s=0xa0;
  83   1      		s=x; *s=y;
  84   1       	  	d=e=0;
  85   1              a=y;
  86   1           	do
  87   1      		{  b=*s; c=b&0x20; 
  88   2                 if(b==a) d=1;
  89   2                 else if(c==0x20) e=1; 
  90   2      		  }
  91   1             while((d==0)&&(e==0));
  92   1             if(e==1)
  93   1      		{ b=*s; 
  94   2      		  if(b==a) d=1;
  95   2      		  s=0x555+addr; 
  96   2      		  *s=0xf0;
  97   2      		 } 
  98   1             if(d==1) return(d);
  99   1      		 else
 100   1      		 {s=0x555+addr; *s=0xaa;
 101   2      		  s=0xaaa+addr; *s=0x55;
 102   2      		  s=0x555+addr; *s=0xa0;
 103   2      		  s=x; *s=y;
 104   2       	     d=e=0;
 105   2              a=y;
 106   2           	do
 107   2      		{  b=*s; c=b&0x20; 
 108   3                 if(b==a) d=1;
 109   3                 else if(c==0x20) e=1; 
 110   3      		  }
 111   2             while((d==0)&&(e==0));
 112   2             if(e==1)
 113   2      		{ b=*s; 
 114   3      		  if(b==a) d=1;
 115   3      		  s=0x555+addr; 
 116   3      		  *s=0xf0;
C51 COMPILER V6.12  PARAM_SAVE_RESTORE                                                     06/05/2005 15:44:46 PAGE 16  

 117   3      		 } 
 118   2      	  }
 119   1            return(d);
 120   1      }
C51 COMPILER V6.12  PARAM_SAVE_RESTORE                                                     06/05/2005 15:44:46 PAGE 17  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION restore_factory_param (BEGIN)
                                           ; SOURCE LINE # 3
                                           ; SOURCE LINE # 4
                                           ; SOURCE LINE # 5
0000 900000      E     MOV     DPTR,#m_factory_flg
0003 E0                MOVX    A,@DPTR
0004 B40108            CJNE    A,#01H,?C0002
                                           ; SOURCE LINE # 6
0007 120000      E     LCALL   orgdata_init
                                           ; SOURCE LINE # 7
000A E4                CLR     A
000B 900000      E     MOV     DPTR,#m_factory_flg
000E F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 8
                                           ; SOURCE LINE # 9
000F         ?C0002:
000F 22                RET     
             ; FUNCTION restore_factory_param (END)

             ; FUNCTION restore_user_param (BEGIN)
                                           ; SOURCE LINE # 11
                                           ; SOURCE LINE # 12
                                           ; SOURCE LINE # 15
0000 900000      R     MOV     DPTR,#count
0003 7404              MOV     A,#04H
0005 F0                MOVX    @DPTR,A
0006 A3                INC     DPTR
0007 749F              MOV     A,#09FH
0009 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 17
000A 900000      E     MOV     DPTR,#m_restore_flg
000D E0                MOVX    A,@DPTR
000E 6401              XRL     A,#01H
0010 7054              JNZ     ?C0008
                                           ; SOURCE LINE # 19
0012 900000      E     MOV     DPTR,#m_save_over_flg
0015 E0                MOVX    A,@DPTR
0016 6401              XRL     A,#01H
0018 704C              JNZ     ?C0008
                                           ; SOURCE LINE # 20
001A C2AF              CLR     EA
                                           ; SOURCE LINE # 21
001C 7500A0      R     MOV     p,#0A0H
001F F500        R     MOV     p+01H,A
                                           ; SOURCE LINE # 22
0021 750010      R     MOV     s,#010H
0024 F500        R     MOV     s+01H,A
                                           ; SOURCE LINE # 23
0026 F500        R     MOV     i,A
0028 F500        R     MOV     i+01H,A
002A         ?C0005:
002A D3                SETB    C
002B 900000      R     MOV     DPTR,#count+01H
002E E0                MOVX    A,@DPTR
002F 9500        R     SUBB    A,i+01H
0031 900000      R     MOV     DPTR,#count
0034 E0                MOVX    A,@DPTR
0035 9500        R     SUBB    A,i
0037 4026              JC      ?C0006
C51 COMPILER V6.12  PARAM_SAVE_RESTORE                                                     06/05/2005 15:44:46 PAGE 18  

                                           ; SOURCE LINE # 24
0039 E500        R     MOV     A,p+01H
003B 2500        R     ADD     A,i+01H
003D F582              MOV     DPL,A
003F E500        R     MOV     A,p
0041 3500        R     ADDC    A,i
0043 F583              MOV     DPH,A
0045 E0                MOVX    A,@DPTR
0046 FF                MOV     R7,A
0047 E500        R     MOV     A,s+01H
0049 2500        R     ADD     A,i+01H
004B F582              MOV     DPL,A
004D E500        R     MOV     A,s
004F 3500        R     ADDC    A,i
0051 F583              MOV     DPH,A
0053 EF                MOV     A,R7
0054 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 25
0055 0500        R     INC     i+01H
0057 E500        R     MOV     A,i+01H
0059 70CF              JNZ     ?C0005
005B 0500        R     INC     i
005D         ?C0049:
005D 80CB              SJMP    ?C0005
005F         ?C0006:
                                           ; SOURCE LINE # 26
005F E4                CLR     A
0060 900000      E     MOV     DPTR,#m_restore_flg
0063 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 28
0064 D2AF              SETB    EA
                                           ; SOURCE LINE # 29
                                           ; SOURCE LINE # 30
                                           ; SOURCE LINE # 31
0066         ?C0008:
0066 22                RET     
             ; FUNCTION restore_user_param (END)

             ; FUNCTION save_user_param (BEGIN)
                                           ; SOURCE LINE # 33
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 36
0000 900000      R     MOV     DPTR,#s
0003 7410              MOV     A,#010H
0005 F0                MOVX    @DPTR,A
0006 A3                INC     DPTR
0007 E4                CLR     A
0008 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 37
0009 A3                INC     DPTR
000A 7404              MOV     A,#04H
000C F0                MOVX    @DPTR,A
000D A3                INC     DPTR
000E 749F              MOV     A,#09FH
0010 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 38
0011 900000      E     MOV     DPTR,#m_save_flg
0014 E0                MOVX    A,@DPTR
0015 6401              XRL     A,#01H
0017 7062              JNZ     ?C0013
                                           ; SOURCE LINE # 39
0019 900000      E     MOV     DPTR,#mE_InputData+053H
C51 COMPILER V6.12  PARAM_SAVE_RESTORE                                                     06/05/2005 15:44:46 PAGE 19  

001C 04                INC     A
001D F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 40
001E C2AF              CLR     EA
                                           ; SOURCE LINE # 41
0020 7F00              MOV     R7,#00H
0022 7EA0              MOV     R6,#0A0H
0024 120000      R     LCALL   _erase
                                           ; SOURCE LINE # 42
0027 E4                CLR     A
0028 900000      R     MOV     DPTR,#i
002B F0                MOVX    @DPTR,A
002C A3                INC     DPTR
002D F0                MOVX    @DPTR,A
002E         ?C0010:
002E 900000      R     MOV     DPTR,#count
0031 E0                MOVX    A,@DPTR
0032 FE                MOV     R6,A
0033 A3                INC     DPTR
0034 E0                MOVX    A,@DPTR
0035 FF                MOV     R7,A
0036 900000      R     MOV     DPTR,#i
0039 E0                MOVX    A,@DPTR
003A FC                MOV     R4,A
003B A3                INC     DPTR
003C E0                MOVX    A,@DPTR
003D FD                MOV     R5,A
003E C3                CLR     C
003F 9F                SUBB    A,R7
0040 EC                MOV     A,R4
0041 9E                SUBB    A,R6
0042 5028              JNC     ?C0011
                                           ; SOURCE LINE # 43
0044 E4                CLR     A
0045 2D                ADD     A,R5
0046 FF                MOV     R7,A
0047 EC                MOV     A,R4
0048 34A0              ADDC    A,#0A0H
004A FE                MOV     R6,A
004B A3                INC     DPTR
004C E0                MOVX    A,@DPTR
004D FA                MOV     R2,A
004E A3                INC     DPTR
004F E0                MOVX    A,@DPTR
0050 2D                ADD     A,R5
0051 F582              MOV     DPL,A
0053 EA                MOV     A,R2
0054 3C                ADDC    A,R4
0055 F583              MOV     DPH,A
0057 E0                MOVX    A,@DPTR
0058 FD                MOV     R5,A
0059 120000      R     LCALL   _writef
005C 900000      R     MOV     DPTR,#i+01H
005F E0                MOVX    A,@DPTR
0060 04                INC     A
0061 F0                MOVX    @DPTR,A
0062 70CA              JNZ     ?C0010
0064 900000      R     MOV     DPTR,#i
0067 E0                MOVX    A,@DPTR
0068 04                INC     A
0069 F0                MOVX    @DPTR,A
006A         ?C0050:
C51 COMPILER V6.12  PARAM_SAVE_RESTORE                                                     06/05/2005 15:44:46 PAGE 20  

006A 80C2              SJMP    ?C0010
006C         ?C0011:
                                           ; SOURCE LINE # 44
006C E4                CLR     A

⌨️ 快捷键说明

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