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

📄 utility.lst

📁 基于摩托罗拉S12标准源程序 包括:SCIO,Timer
💻 LST
📖 第 1 页 / 共 5 页
字号:
  475:        {
  476:         	if(count>0) 			//del 4 bit data in buffer
  0029 ec83         LDD   3,SP
  002b 2f1e         BLE   *+32 ;abs = 004b
  477:         	{
  478:         	  count--;
  002d 830001       SUBD  #1
  0030 6c83         STD   3,SP
  479:         	  *c_ptr=*c_ptr>>4;
  0032 ee80         LDX   0,SP
  0034 e600         LDAB  0,X
  0036 54           LSRB  
  0037 54           LSRB  
  0038 54           LSRB  
  0039 54           LSRB  
  003a 6b00         STAB  0,X
  480:  	      tx_char0(echo);		//send bs the char on screen
  003c e682         LDAB  2,SP
  003e 160000       JSR   tx_char0
  481:  	      tx_char0(' ');		//send space to clear the char
  0041 c620         LDAB  #32
  0043 160000       JSR   tx_char0
  482:  	      tx_char0(echo);		//send bs again to move back the cursor
  0046 e682         LDAB  2,SP
  0048 160000       JSR   tx_char0
  483:  	    }
  484:        }
  485:        if (count<2)				//update 4 bit data to buffer
  004b ec83         LDD   3,SP
  004d 8c0002       CPD   #2
  0050 2c39         BGE   *+59 ;abs = 008b
  486:        {
  487:  	    if((echo<='f') && (echo>='0')) 
  0052 e682         LDAB  2,SP
  0054 c030         SUBB  #48
  0056 c136         CMPB  #54
  0058 2231         BHI   *+51 ;abs = 008b
  488:  	    {
  489:  	      if (echo>='a')  echo-=(0x20); 	//covert upper case
  005a e682         LDAB  2,SP
  005c c161         CMPB  #97
  005e 2504         BCS   *+6 ;abs = 0064
  0060 c020         SUBB  #32
  0062 6b82         STAB  2,SP
  490:  	      if ((echo>='0') && (echo<='9'))
  0064 e682         LDAB  2,SP
  0066 c030         SUBB  #48
  0068 c109         CMPB  #9
  006a 2202         BHI   *+4 ;abs = 006e
  491:  	  	    cdata=echo-0x30; 
  006c 2004         BRA   *+6 ;abs = 0072
  492:  	      else
  493:  	        cdata=echo-0x37;
  006e e682         LDAB  2,SP
  0070 c037         SUBB  #55
  0072 6b85         STAB  5,SP
  494:  	      count++; 
  0074 ee83         LDX   3,SP
  0076 08           INX   
  0077 6e83         STX   3,SP
  495:  	      tx_char0(echo);			//send echo to screen
  0079 e682         LDAB  2,SP
  007b 160000       JSR   tx_char0
  496:  	  	  *c_ptr=(*c_ptr<<4);
  007e ee80         LDX   0,SP
  0080 e600         LDAB  0,X
  0082 8610         LDAA  #16
  0084 12           MUL   
  0085 6b00         STAB  0,X
  497:  	      *c_ptr+=cdata;
  0087 eb85         ADDB  5,SP
  0089 6b00         STAB  0,X
  008b e686         LDAB  6,SP
  008d 04117e       DBEQ  B,*-127 ;abs = 000e
  498:  	    }	
  499:  	  }
  500:  	}  
  501:  	
  502:  	if (echo==DOT||echo ==ESC){
  0090 e682         LDAB  2,SP
  0092 c12e         CMPB  #46
  0094 2704         BEQ   *+6 ;abs = 009a
  0096 c11b         CMPB  #27
  0098 2606         BNE   *+8 ;abs = 00a0
  503:  	   *c_ptr=echo;
  009a ee80         LDX   0,SP
  009c 6b00         STAB  0,X
  504:  	   return(OK);
  009e 200a         BRA   *+12 ;abs = 00aa
  505:  	   }
  506:  
  507:  	if(count!=0 && echo==CR)
  00a0 ec83         LDD   3,SP
  00a2 2709         BEQ   *+11 ;abs = 00ad
  00a4 e682         LDAB  2,SP
  00a6 c10d         CMPB  #13
  00a8 2603         BNE   *+5 ;abs = 00ad
  508:  	  return(OK);
  00aa c601         LDAB  #1
  00ac 21           SKIP1 
  509:  	else 
  510:  	  return(NOTOK);
  00ad c7           CLRB  
  511:  }
  00ae 1b87         LEAS  7,SP
  00b0 3d           RTS   
  512:  
  513:  /*******************************************************************
  514:  * Input String (ASCII) subroutine
  515:  * Description : Get the data(byte) from user  
  516:  *             : 
  517:  *			  :
  518:  * Example     : N/A 
  519:  * Input 	  : N/A
  520:  * Output	  : *c_ptr
  521:  * Modify      : N/A
  522:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  523:  *********************************************************************/ 
  524:  byte input_string(byte *c_ptr, byte *n) 
  525:  {

Function: input_string
Source  : D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\sources\utility.c
Options : -Env"GENPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\cmd;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\prm;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\sources;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\LIB;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\SRC;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\INCLUDE" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin" -Env"TEXTPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin" -Lasm=%n.lst -ObjN="D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\S12_Ex4_Portb_ICD_Data\Flash_Application\ObjectCode\utility.c.o" -Ol0

  0000 6cab         STD   5,-SP
  526:  	byte	echo,loop=ENABLE;	
  0002 c601         LDAB  #1
  0004 6b84         STAB  4,SP
  527:  	byte	count=0;
  0006 6982         CLR   2,SP
  528:  
  529:  	while(loop == ENABLE)
  530:  	{
  531:  	  echo=rx_char0();
  0008 160000       JSR   rx_char0
  000b 6b83         STAB  3,SP
  532:  	  if((echo==ESC)||(echo==DOT)||(echo==CR)) 
  000d c11b         CMPB  #27
  000f 2708         BEQ   *+10 ;abs = 0019
  0011 c12e         CMPB  #46
  0013 2704         BEQ   *+6 ;abs = 0019
  0015 c10d         CMPB  #13
  0017 2602         BNE   *+4 ;abs = 001b
  533:  	    loop = DISABLE;			//break the while loop		
  0019 6984         CLR   4,SP
  534:        if (echo==BS || echo==DEL)
  001b c108         CMPB  #8
  001d 2704         BEQ   *+6 ;abs = 0023
  001f c17f         CMPB  #127
  0021 261a         BNE   *+28 ;abs = 003d
  535:        {
  536:         	if(count>0) 			//del 4 bit data in buffer
  0023 e682         LDAB  2,SP
  0025 2716         BEQ   *+24 ;abs = 003d
  537:         	{
  538:         	  count--;
  0027 6382         DEC   2,SP
  539:         	  *c_ptr--;
  0029 ee87         LDX   7,SP
  002b 09           DEX   
  002c 6e87         STX   7,SP
  540:  	      tx_char0(echo);		//send bs the char on screen
  002e e683         LDAB  3,SP
  0030 160000       JSR   tx_char0
  541:  	      tx_char0(' ');		//send space to clear the char
  0033 c620         LDAB  #32
  0035 160000       JSR   tx_char0
  542:  	      tx_char0(echo);		//send bs again to move back the cursor
  0038 e683         LDAB  3,SP
  003a 160000       JSR   tx_char0
  543:  	    }
  544:        }
  545:        if ((count<0x80)&&(echo!=DEL)&&(echo!=BS))				//update 4 bit data to buffer
  003d e682         LDAB  2,SP
  003f c180         CMPB  #128
  0041 2417         BCC   *+25 ;abs = 005a
  0043 e683         LDAB  3,SP
  0045 c17f         CMPB  #127
  0047 2711         BEQ   *+19 ;abs = 005a
  0049 c108         CMPB  #8
  004b 270d         BEQ   *+15 ;abs = 005a
  546:        {
  547:  	      count++; 
  004d 6282         INC   2,SP
  548:  	      tx_char0(echo);			//send echo to screen
  004f 160000       JSR   tx_char0
  549:  	      *c_ptr++=echo;
  0052 ee87         LDX   7,SP
  0054 e683         LDAB  3,SP
  0056 6b30         STAB  1,X+
  0058 6e87         STX   7,SP
  005a e684         LDAB  4,SP
  005c 0411a9       DBEQ  B,*-84 ;abs = 0008
  550:  	  }
  551:  	}  
  552:  	
  553:  	if (echo==DOT||echo ==ESC){
  005f e683         LDAB  3,SP
  0061 c12e         CMPB  #46
  0063 2704         BEQ   *+6 ;abs = 0069
  0065 c11b         CMPB  #27
  0067 2606         BNE   *+8 ;abs = 006f
  554:  	   *c_ptr++=echo;
  0069 ee87         LDX   7,SP
  006b 6b30         STAB  1,X+
  555:  	   *c_ptr='\r';
  556:         *n=count;
  557:  	   return(OK);
  006d 2011         BRA   *+19 ;abs = 0080
  558:  	   }
  559:  
  560:  	if(count!=0 && echo==CR)
  006f e682         LDAB  2,SP
  0071 271a         BEQ   *+28 ;abs = 008d
  0073 e683         LDAB  3,SP
  0075 c10d         CMPB  #13
  0077 2614         BNE   *+22 ;abs = 008d
  561:  	{
  562:  	  tx_char0('\n');			//send echo to screen
  0079 c60a         LDAB  #10
  007b 160000       JSR   tx_char0
  563:        *c_ptr='\r';
  007e ee87         LDX   7,SP
  0080 c60d         LDAB  #13
  0082 6b00         STAB  0,X
  564:        *n=count;
  0084 ee80         LDX   0,SP
  0086 a682         LDAA  2,SP
  0088 6a00         STAA  0,X
  565:  	  return(OK);
  008a c601         LDAB  #1
  008c 21           SKIP1 
  566:  	}
  567:  	else 
  568:  	  return(NOTOK);
  008d c7           CLRB  
  569:  }
  008e 1b85         LEAS  5,SP
  0090 3d           RTS   
  570:  
  571:  /*******************************************************************
  572:  * Input byte (dec) subroutine
  573:  * Description : Get the data(byte) from user  
  574:  *             : 
  575:  *			  :
  576:  * Example     : N/A 
  577:  * Input 	  : N/A
  578:  * Output	  : *c_ptr
  579:  * Modify      : N/A
  580:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  581:  *********************************************************************/ 
  582:  byte input_dec(byte *c_ptr) 
  583:  {

Function: input_dec
Source  : D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\sources\utility.c
Options : -Env"GENPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\cmd;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\prm;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\sources;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\LIB;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\SRC;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\INCLUDE" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin" -Env"TEXTPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin" -Lasm=%n.lst -ObjN="D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\S12_Ex4_Portb_ICD_Data\Flash_Application\ObjectCode\utility.c.o" -Ol0

  0000 1b92         LEAS  -14,SP
  0002 3b           PSHD  
  584:  	byte		echo,cdata,loop=ENABLE;	
  0003 c601         LDAB  #1
  0005 6b8d         STAB  13,SP
  585:  	int			count=0,i_data,i_data1,i_data2,i,j;
  0007 c7           CLRB  
  0008 87           CLRA  
  0009 6c84         STD   4,SP
  586:  	
  587:  	i_data=0;
  000b 6c82         STD   2,SP
  588:  	*c_ptr=0;
  000d ee80         LDX   0,SP
  000f 6b00         STAB  0,X
  589:  	while(loop == ENABLE)
  590:  	{
  591:  	  echo=rx_char0();
  0011 160000       JSR   rx_char0
  0014 6b86         STAB  6,SP
  592:  	  if((echo==ESC)||(echo==DOT)||(echo==CR)) 
  0016 c11b         CMPB  #27
  0018 2708         BEQ   *+10 ;abs = 0022
  001a c12e         CMPB  #46
  001c 2704         BEQ   *+6 ;abs = 0022
  001e c10d         CMPB  #13
  0020 2602         BNE   *+4 ;abs = 0024
  593:  	    loop = DISABLE;			//break the while loop		
  0022 698d         CLR   13,SP
  594:        if (echo==BS || echo==DEL)
  0024 c108         CMPB  #8
  0026 2704         BEQ   *+6 ;abs = 002c
  0028 c17f         CMPB  #127
  002a 2621         BNE   *+35 ;abs = 004d
  595:        {
  596:         	if(count>0) 			//del 4 bit data in buffer
  002c ec84         LDD   4,SP
  002e 2f1d         BLE   *+31 ;abs = 004d
  597:         	{
  598:         	  count--;
  0030 830001       SUBD  #1
  0033 6c84         STD   4,SP
  599:         	  i_data=i_data>>4;

⌨️ 快捷键说明

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