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

📄 eeprom.lst

📁 基于摩托罗拉S12标准源程序 包括:SCIO,Timer
💻 LST
📖 第 1 页 / 共 2 页
字号:
  191:  	{
  192:  	  *eeprom_add=0;	    // to erase the data at EEPROM
  0018 ee82         LDX   2,SP
  001a c7           CLRB  
  001b 87           CLRA  
  001c 6c00         STD   0,X
  193:        ecmd=erase;				//; initiate ERASE COMMAND
  001e c640         LDAB  #64
  0020 7b0116       STAB  278
  194:        estat=cbeif;				//; begin command
  0023 58           ASLB  
  0024 7b0115       STAB  277
  195:        if(((estat&pviol)==pviol)||((estat&accerr)==accerr))   
  0027 1e01152005   BRSET 277,#32,*+10 ;abs = 0031
  002c 1f01151018   BRCLR 277,#16,*+29 ;abs = 0049
  196:        {  
  197:           printf0("EEprom programming error in \n\r");	   //display eree_program_error
  0031 cc0000       LDD   #"EEprom programming error in \012\015"
  0034 160000       JSR   printf0
  198:  		 hex_asc((byte)(eeprom_addi>>8));
  0037 e688         LDAB  8,SP
  0039 160000       JSR   hex_asc
  199:  		 hex_asc((byte)(eeprom_addi));
  003c e689         LDAB  9,SP
  003e 160000       JSR   hex_asc
  200:           printf0("\n\r");	   //display lf
  0041 cc0000       LDD   #"\012\015"
  0044 160000       JSR   printf0
  201:        }
  0047 2005         BRA   *+7 ;abs = 004e
  202:        else 
  203:          while((estat&ccif)==0x00);		// wait for command to complete
  0049 1f011540fb   BRCLR 277,#64,*+0 ;abs = 0049
  204:      
  205:        count++;
  004e ee84         LDX   4,SP
  0050 08           INX   
  0051 6e84         STX   4,SP
  206:        eeprom_add+=2;		//int pointer increment
  0053 ee82         LDX   2,SP
  0055 1a04         LEAX  4,X
  0057 6e82         STX   2,SP
  207:        eeprom_addi+=4;		//eeprom_addi increment by 4 (long)
  0059 ee88         LDX   8,SP
  005b 1a04         LEAX  4,X
  005d 6e88         STX   8,SP
  208:        tx_char0('.');
  005f c62e         LDAB  #46
  0061 160000       JSR   tx_char0
  0064 ec84         LDD   4,SP
  0066 ac80         CPD   0,SP
  0068 26ae         BNE   *-80 ;abs = 0018
  209:      }	
  210:  	EnableInterrupts;
  006a 10ef         CLI   
  211:  }
  006c 1b86         LEAS  6,SP
  006e 3d           RTS   
  212:  
  213:  
  214:  /*******************************************************************
  215:  * EEPROM program subroutine
  216:  * Description : User input RAM area and EEPROM area to be copied
  217:  *             : Input RAM,EEPROM start address and no. of word to be
  218:  *             : programmed
  219:  * Example     : Copy 4 words from RAM(0x1000) to EEPROM (0x600) 
  220:  * input 	  : eram_addi=0x1000, eeprom_addi=0x600, no_of word=0x4
  221:  * modify      : eeprom content
  222:  *********************************************************************/ 
  223:  void eeprom_program()
  224:  {

Function: eeprom_program
Source  : D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\sources\eeprom.c
Options : -Env"GENPATH=D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\bin;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\cmd;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\prm;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\sources;D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\LIB;D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\SRC;D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\INCLUDE" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\Flash_Application\ObjectCode\eeprom.c.o" -Ol0

  0000 1b96         LEAS  -10,SP
  225:  	unsigned int	*eeprom_addi,add0,*eram_addi,add1;
  226:  	byte			status=DISABLE,ebyte;
  227:  
  228:  	eeprom_addi=&add0;	
  0002 1a88         LEAX  8,SP
  0004 6e83         STX   3,SP
  229:  	eram_addi=&add1;		
  0006 1a86         LEAX  6,SP
  0008 6e81         STX   1,SP
  230:  
  231:  	printf0("RAM start address (0x1000-0x12ff)= \r");
  000a cc0000       LDD   #"RAM start address (0x1000-0x12ff)= \015"
  000d 160000       JSR   printf0
  232:  	if(input_word(eram_addi)==OK) 
  0010 ec81         LDD   1,SP
  0012 160000       JSR   input_word
  0015 042118       DBNE  B,*+27 ;abs = 0030
  233:  	{
  234:  	  if((*eram_addi>=0x1000)&&(*eram_addi<0x1300))
  0018 ee81         LDX   1,SP
  001a ec00         LDD   0,X
  001c 831000       SUBD  #4096
  001f 8c02ff       CPD   #767
  0022 2206         BHI   *+8 ;abs = 002a
  235:  	      status=ENABLE;
  0024 c601         LDAB  #1
  0026 6b80         STAB  0,SP
  0028 2008         BRA   *+10 ;abs = 0032
  236:  	    else
  237:  	    {
  238:  	      printf0("\nOut of range!\r");
  002a cc0000       LDD   #"\012Out of range!\015"
  002d 160000       JSR   printf0
  239:  	      status=DISABLE;	   
  240:  	    }
  241:  	}
  242:  	else 
  243:  	   status=DISABLE;   
  0030 6980         CLR   0,SP
  244:  	printf0("\n\r");
  0032 cc0000       LDD   #"\012\015"
  0035 160000       JSR   printf0
  245:  
  246:  	if (status==ENABLE)
  0038 e680         LDAB  0,SP
  003a 04212e       DBNE  B,*+49 ;abs = 006b
  247:  	{
  248:  	  printf0("EEPROM start address to be programmed ($400 default)= \r");
  003d cc0000       LDD   #"EEPROM start address to be programmed ($400 default)= \015"
  0040 160000       JSR   printf0
  249:  	  if(input_word(eeprom_addi)==OK)
  0043 ec83         LDD   3,SP
  0045 160000       JSR   input_word
  0048 042118       DBNE  B,*+27 ;abs = 0063
  250:  	  {
  251:  	    if((*eeprom_addi>=0x400)&&(*eeprom_addi<0x1000))
  004b ee83         LDX   3,SP
  004d ec00         LDD   0,X
  004f 830400       SUBD  #1024
  0052 8c0bff       CPD   #3071
  0055 2206         BHI   *+8 ;abs = 005d
  252:  	      status=ENABLE;
  0057 c601         LDAB  #1
  0059 6b80         STAB  0,SP
  005b 2008         BRA   *+10 ;abs = 0065
  253:  	    else
  254:  	    {
  255:  	      printf0("\nOut of range!\r");
  005d cc0000       LDD   #"\012Out of range!\015"
  0060 160000       JSR   printf0
  256:  	      status=DISABLE;	   
  257:  	    }
  258:  	  }
  259:  	  else 
  260:  	    status=DISABLE;   
  0063 6980         CLR   0,SP
  261:  	  printf0("\n\r");
  0065 cc0000       LDD   #"\012\015"
  0068 160000       JSR   printf0
  262:  	}
  263:  	if (status==ENABLE)
  006b e680         LDAB  0,SP
  006d 042128       DBNE  B,*+43 ;abs = 0098
  264:  	{
  265:  	  printf0("No. of word to be programmed (Dec) = \r");
  0070 cc0000       LDD   #"No. of word to be programmed (Dec) = \015"
  0073 160000       JSR   printf0
  266:  	  if(input_dec(&ebyte)==OK)
  0076 1a85         LEAX  5,SP
  0078 b754         TFR   X,D
  007a 160000       JSR   input_dec
  007d 042118       DBNE  B,*+27 ;abs = 0098
  267:  	  {
  268:  	    if (((ebyte)==DOT)||((ebyte)==ESC))
  0080 e685         LDAB  5,SP
  0082 c12e         CMPB  #46
  0084 2704         BEQ   *+6 ;abs = 008a
  0086 c11b         CMPB  #27
  0088 2604         BNE   *+6 ;abs = 008e
  269:  	      status=DISABLE;
  008a 6980         CLR   0,SP
  008c 2004         BRA   *+6 ;abs = 0092
  270:  	    else 
  271:  	      status=ENABLE;   	   
  008e c601         LDAB  #1
  0090 6b80         STAB  0,SP
  272:  	    printf0("\n\r");
  0092 cc0000       LDD   #"\012\015"
  0095 160000       JSR   printf0
  273:  	  }
  274:  	}
  275:  	if (status==ENABLE)
  0098 e680         LDAB  0,SP
  009a 042112       DBNE  B,*+21 ;abs = 00af
  276:    	  eeprom_program_cmd(*eram_addi, *eeprom_addi, (unsigned int) ebyte);
  009d ee81         LDX   1,SP
  009f ec00         LDD   0,X
  00a1 3b           PSHD  
  00a2 ee85         LDX   5,SP
  00a4 ec00         LDD   0,X
  00a6 3b           PSHD  
  00a7 e689         LDAB  9,SP
  00a9 87           CLRA  
  00aa 160000       JSR   eeprom_program_cmd
  00ad 1b84         LEAS  4,SP
  277:  }
  00af 1b8a         LEAS  10,SP
  00b1 3d           RTS   
  278:  
  279:  /*******************************************************************
  280:  * EEPROM erase subroutine
  281:  * Description : Erase EEPROM long word (4 bytes)
  282:  *             : User input EEPROM start address and no. of word to be
  283:  *             : erased
  284:  * Example     : Erase 4 long words from EEPROM (0x600) 
  285:  * input 	  : eeprom_addi=0x600, no_of word=0x4
  286:  * modify      : eeprom content (0x600-0x610)=0xff
  287:  *********************************************************************/ 
  288:  void eeprom_erase()
  289:  {

Function: eeprom_erase
Source  : D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\sources\eeprom.c
Options : -Env"GENPATH=D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\bin;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\cmd;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\prm;D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\sources;D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\LIB;D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\SRC;D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\INCLUDE" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V3.0\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Code S12\Utility\S12DP256 CW31\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\Flash_Application\ObjectCode\eeprom.c.o" -Ol0

  0000 1b9a         LEAS  -6,SP
  290:  	unsigned int	*address,add;
  291:  	byte			status=DISABLE,ebyte;
  292:  
  293:  	address=&add;
  0002 1a84         LEAX  4,SP
  0004 6e81         STX   1,SP
  294:  
  295:  	printf0("EEPROM start address to be Erase (hex) (0x400-0xfff) = \r");
  0006 cc0000       LDD   #"EEPROM start address to be Erase (hex) (0x400-0xfff) = \015"
  0009 160000       JSR   printf0
  296:  	if(input_word(address)==OK) 
  000c ec81         LDD   1,SP
  000e 160000       JSR   input_word
  0011 042118       DBNE  B,*+27 ;abs = 002c
  297:  	{
  298:  	  if((*address>=0x400)&&(*address<0x1000))
  0014 ee81         LDX   1,SP
  0016 ec00         LDD   0,X
  0018 830400       SUBD  #1024
  001b 8c0bff       CPD   #3071
  001e 2206         BHI   *+8 ;abs = 0026
  299:  	      status=ENABLE;
  0020 c601         LDAB  #1
  0022 6b80         STAB  0,SP
  0024 2008         BRA   *+10 ;abs = 002e
  300:  	  else
  301:  	  {
  302:  	    printf0("\nOut of range!\r");
  0026 cc0000       LDD   #"\012Out of range!\015"
  0029 160000       JSR   printf0
  303:  	    status=DISABLE;	   
  304:  	  }
  305:  	}
  306:  	else 
  307:  	   status=DISABLE;   
  002c 6980         CLR   0,SP
  308:  	printf0("\n\r");
  002e cc0000       LDD   #"\012\015"
  0031 160000       JSR   printf0
  309:  
  310:  	if (status==ENABLE)
  0034 e680         LDAB  0,SP
  0036 042128       DBNE  B,*+43 ;abs = 0061
  311:  	{ 
  312:  	  printf0("No. of long word (4 bytes) to be erased (Dec) = \r");
  0039 cc0000       LDD   #"No. of long word (4 bytes) to be erased (Dec) = \015"
  003c 160000       JSR   printf0
  313:  	  if(input_dec(&ebyte)==OK)
  003f 1a83         LEAX  3,SP
  0041 b754         TFR   X,D
  0043 160000       JSR   input_dec
  0046 042118       DBNE  B,*+27 ;abs = 0061
  314:  	  {
  315:  	    if (((ebyte)==DOT)||((ebyte)==ESC))
  0049 e683         LDAB  3,SP
  004b c12e         CMPB  #46
  004d 2704         BEQ   *+6 ;abs = 0053
  004f c11b         CMPB  #27
  0051 2604         BNE   *+6 ;abs = 0057
  316:  	      status=DISABLE;
  0053 6980         CLR   0,SP
  0055 2004         BRA   *+6 ;abs = 005b
  317:  	    else 
  318:  	      status=ENABLE;   	   
  0057 c601         LDAB  #1
  0059 6b80         STAB  0,SP
  319:  	    printf0("\n\r");
  005b cc0000       LDD   #"\012\015"
  005e 160000       JSR   printf0
  320:  	  }
  321:  	}
  322:  	if (status==ENABLE)
  0061 e680         LDAB  0,SP
  0063 04210d       DBNE  B,*+16 ;abs = 0073
  323:  	  eeprom_erase_cmd(*address, (unsigned int) ebyte);
  0066 ee81         LDX   1,SP
  0068 ec00         LDD   0,X
  006a 3b           PSHD  
  006b e685         LDAB  5,SP
  006d 87           CLRA  
  006e 160000       JSR   eeprom_erase_cmd
  0071 1b82         LEAS  2,SP
  324:  }
  0073 1b86         LEAS  6,SP
  0075 3d           RTS   
  325:  
  326:  

⌨️ 快捷键说明

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