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

📄 ex3_utility.lst

📁 基于摩托罗拉S12标准源程序 包括:SCIO,Timer
💻 LST
📖 第 1 页 / 共 5 页
字号:
  003c 160000       JSR   tx_char0
  407:  	      tx_char0(' ');		//send space to clear the char
  003f c620         LDAB  #32
  0041 160000       JSR   tx_char0
  408:  	      tx_char0(echo);		//send bs again to move back the cursor
  0044 e682         LDAB  2,SP
  0046 160000       JSR   tx_char0
  409:  	    }
  410:        }
  411:        if (count<4)				//update 4 bit data to buffer
  0049 ec83         LDD   3,SP
  004b 8c0004       CPD   #4
  004e 2c3f         BGE   *+65 ;abs = 008f
  412:        {
  413:  	    if((echo<='f') && (echo>='0')) 
  0050 e682         LDAB  2,SP
  0052 c030         SUBB  #48
  0054 c136         CMPB  #54
  0056 2237         BHI   *+57 ;abs = 008f
  414:  	    {
  415:  	      if (echo>='a')  echo-=(0x20); 	//covert upper case
  0058 e682         LDAB  2,SP
  005a c161         CMPB  #97
  005c 2504         BCS   *+6 ;abs = 0062
  005e c020         SUBB  #32
  0060 6b82         STAB  2,SP
  416:  	      if ((echo>='0') && (echo<='9'))
  0062 e682         LDAB  2,SP
  0064 c030         SUBB  #48
  0066 c109         CMPB  #9
  0068 2202         BHI   *+4 ;abs = 006c
  417:  	  	    cdata=echo-0x30; 
  006a 2004         BRA   *+6 ;abs = 0070
  418:  	      else
  419:  	        cdata=echo-0x37;
  006c e682         LDAB  2,SP
  006e c037         SUBB  #55
  0070 6b85         STAB  5,SP
  420:  	      count++; 
  0072 ee83         LDX   3,SP
  0074 08           INX   
  0075 6e83         STX   3,SP
  421:  	      tx_char0(echo);			//send echo to screen
  0077 e682         LDAB  2,SP
  0079 160000       JSR   tx_char0
  422:  	  	  *i_ptr=(*i_ptr<<4);
  007c ee80         LDX   0,SP
  007e ec00         LDD   0,X
  0080 59           ASLD  
  0081 59           ASLD  
  0082 59           ASLD  
  0083 59           ASLD  
  0084 6c00         STD   0,X
  423:  	      *i_ptr+=cdata;
  0086 b746         TFR   D,Y
  0088 e685         LDAB  5,SP
  008a 87           CLRA  
  008b 19ee         LEAY  D,Y
  008d 6d00         STY   0,X
  008f e686         LDAB  6,SP
  0091 04117a       DBEQ  B,*-131 ;abs = 000e
  424:  	    }	
  425:  	  }
  426:  	}  
  427:  
  428:  	if(count!=0 && echo==CR) 
  0094 ec83         LDD   3,SP
  0096 2709         BEQ   *+11 ;abs = 00a1
  0098 e682         LDAB  2,SP
  009a c10d         CMPB  #13
  009c 2603         BNE   *+5 ;abs = 00a1
  429:  	  return(OK);
  009e c601         LDAB  #1
  00a0 21           SKIP1 
  430:  	else 
  431:  	  return(NOTOK);
  00a1 c7           CLRB  
  432:  }
  00a2 1b87         LEAS  7,SP
  00a4 3d           RTS   
  433:  
  434:  /*******************************************************************
  435:  * Input byte (hex) subroutine
  436:  * Description : Get the data(byte) from user  
  437:  *             : 
  438:  *			  :
  439:  * Example     : N/A 
  440:  * Input 	  : N/A
  441:  * Output	  : *c_ptr
  442:  * Modify      : N/A
  443:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  444:  *********************************************************************/ 
  445:  byte input_byte(byte *c_ptr) 
  446:  {

Function: input_byte
Source  : D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\LIB;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\SRC;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"LIBPATH=C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\FCS\ObjectCode\ex3_utility.c.o" -Ol0

  0000 6ca9         STD   7,-SP
  447:  	byte		echo,cdata,loop=ENABLE;	
  0002 c601         LDAB  #1
  0004 6b86         STAB  6,SP
  448:  	int			count=0;
  0006 c7           CLRB  
  0007 87           CLRA  
  0008 6c83         STD   3,SP
  449:  	
  450:  	*c_ptr=0;
  000a ee80         LDX   0,SP
  000c 6b00         STAB  0,X
  451:  
  452:  	while(loop == ENABLE)
  453:  	{
  454:  	  echo=rx_char0();
  000e 160000       JSR   rx_char0
  0011 6b82         STAB  2,SP
  455:  	  if((echo==ESC)||(echo==DOT)||(echo==CR)) 
  0013 c11b         CMPB  #27
  0015 2708         BEQ   *+10 ;abs = 001f
  0017 c12e         CMPB  #46
  0019 2704         BEQ   *+6 ;abs = 001f
  001b c10d         CMPB  #13
  001d 2602         BNE   *+4 ;abs = 0021
  456:  	    loop = DISABLE;			//break the while loop		
  001f 6986         CLR   6,SP
  457:        if (echo==BS || echo==DEL)
  0021 c108         CMPB  #8
  0023 2704         BEQ   *+6 ;abs = 0029
  0025 c17f         CMPB  #127
  0027 2620         BNE   *+34 ;abs = 0049
  458:        {
  459:         	if(count>0) 			//del 4 bit data in buffer
  0029 ee83         LDX   3,SP
  002b 2f1c         BLE   *+30 ;abs = 0049
  460:         	{
  461:         	  count--;
  002d 09           DEX   
  002e 6e83         STX   3,SP
  462:         	  *c_ptr=*c_ptr>>4;
  0030 ee80         LDX   0,SP
  0032 e600         LDAB  0,X
  0034 54           LSRB  
  0035 54           LSRB  
  0036 54           LSRB  
  0037 54           LSRB  
  0038 6b00         STAB  0,X
  463:  	      tx_char0(echo);		//send bs the char on screen
  003a e682         LDAB  2,SP
  003c 160000       JSR   tx_char0
  464:  	      tx_char0(' ');		//send space to clear the char
  003f c620         LDAB  #32
  0041 160000       JSR   tx_char0
  465:  	      tx_char0(echo);		//send bs again to move back the cursor
  0044 e682         LDAB  2,SP
  0046 160000       JSR   tx_char0
  466:  	    }
  467:        }
  468:        if (count<2)				//update 4 bit data to buffer
  0049 ec83         LDD   3,SP
  004b 8c0002       CPD   #2
  004e 2c39         BGE   *+59 ;abs = 0089
  469:        {
  470:  	    if((echo<='f') && (echo>='0')) 
  0050 e682         LDAB  2,SP
  0052 c030         SUBB  #48
  0054 c136         CMPB  #54
  0056 2231         BHI   *+51 ;abs = 0089
  471:  	    {
  472:  	      if (echo>='a')  echo-=(0x20); 	//covert upper case
  0058 e682         LDAB  2,SP
  005a c161         CMPB  #97
  005c 2504         BCS   *+6 ;abs = 0062
  005e c020         SUBB  #32
  0060 6b82         STAB  2,SP
  473:  	      if ((echo>='0') && (echo<='9'))
  0062 e682         LDAB  2,SP
  0064 c030         SUBB  #48
  0066 c109         CMPB  #9
  0068 2202         BHI   *+4 ;abs = 006c
  474:  	  	    cdata=echo-0x30; 
  006a 2004         BRA   *+6 ;abs = 0070
  475:  	      else
  476:  	        cdata=echo-0x37;
  006c e682         LDAB  2,SP
  006e c037         SUBB  #55
  0070 6b85         STAB  5,SP
  477:  	      count++; 
  0072 ee83         LDX   3,SP
  0074 08           INX   
  0075 6e83         STX   3,SP
  478:  	      tx_char0(echo);			//send echo to screen
  0077 e682         LDAB  2,SP
  0079 160000       JSR   tx_char0
  479:  	  	  *c_ptr=(*c_ptr<<4);
  007c ee80         LDX   0,SP
  007e e600         LDAB  0,X
  0080 8610         LDAA  #16
  0082 12           MUL   
  0083 6b00         STAB  0,X
  480:  	      *c_ptr+=cdata;
  0085 eb85         ADDB  5,SP
  0087 6b00         STAB  0,X
  0089 e686         LDAB  6,SP
  008b 041180       DBEQ  B,*-125 ;abs = 000e
  481:  	    }	
  482:  	  }
  483:  	}  
  484:  	
  485:  	if (echo==DOT||echo ==ESC){
  008e e682         LDAB  2,SP
  0090 c12e         CMPB  #46
  0092 2704         BEQ   *+6 ;abs = 0098
  0094 c11b         CMPB  #27
  0096 2606         BNE   *+8 ;abs = 009e
  486:  	   *c_ptr=echo;
  0098 ee80         LDX   0,SP
  009a 6b00         STAB  0,X
  487:  	   return(OK);
  009c 2008         BRA   *+10 ;abs = 00a6
  488:  	   }
  489:  
  490:  	if(count!=0 && echo==CR)
  009e ee83         LDX   3,SP
  00a0 2707         BEQ   *+9 ;abs = 00a9
  00a2 c10d         CMPB  #13
  00a4 2603         BNE   *+5 ;abs = 00a9
  491:  	  return(OK);
  00a6 c601         LDAB  #1
  00a8 21           SKIP1 
  492:  	else 
  493:  	  return(NOTOK);
  00a9 c7           CLRB  
  494:  }
  00aa 1b87         LEAS  7,SP
  00ac 3d           RTS   
  495:  
  496:  /*******************************************************************
  497:  * Input String (ASCII) subroutine
  498:  * Description : Get the data(byte) from user  
  499:  *             : 
  500:  *			  :
  501:  * Example     : N/A 
  502:  * Input 	  : N/A
  503:  * Output	  : *c_ptr
  504:  * Modify      : N/A
  505:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  506:  *********************************************************************/ 
  507:  byte input_string(byte *c_ptr, byte *n) 
  508:  {

Function: input_string

⌨️ 快捷键说明

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