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

📄 ex3_utility.lst

📁 基于摩托罗拉S12标准源程序 包括:SCIO,Timer
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 6cab         STD   5,-SP
  509:  	byte	echo,loop=ENABLE;	
  0002 c601         LDAB  #1
  0004 6b84         STAB  4,SP
  510:  	byte	count=0;
  0006 6982         CLR   2,SP
  511:  
  512:  	while(loop == ENABLE)
  513:  	{
  514:  	  echo=rx_char0();
  0008 160000       JSR   rx_char0
  000b 6b83         STAB  3,SP
  515:  	  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
  516:  	    loop = DISABLE;			//break the while loop		
  0019 6984         CLR   4,SP
  517:        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
  518:        {
  519:         	if(count>0) 			//del 4 bit data in buffer
  0023 e682         LDAB  2,SP
  0025 2716         BEQ   *+24 ;abs = 003d
  520:         	{
  521:         	  count--;
  0027 6382         DEC   2,SP
  522:         	  c_ptr--;
  0029 ee87         LDX   7,SP
  002b 09           DEX   
  002c 6e87         STX   7,SP
  523:  	      tx_char0(echo);		//send bs the char on screen
  002e e683         LDAB  3,SP
  0030 160000       JSR   tx_char0
  524:  	      tx_char0(' ');		//send space to clear the char
  0033 c620         LDAB  #32
  0035 160000       JSR   tx_char0
  525:  	      tx_char0(echo);		//send bs again to move back the cursor
  0038 e683         LDAB  3,SP
  003a 160000       JSR   tx_char0
  526:  	    }
  527:        }
  528:        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
  529:        {
  530:  	      count++; 
  004d 6282         INC   2,SP
  531:  	      tx_char0(echo);			//send echo to screen
  004f 160000       JSR   tx_char0
  532:  	      *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
  533:  	  }
  534:  	}  
  535:  	
  536:  	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
  537:  	   *c_ptr++=echo;
  0069 ee87         LDX   7,SP
  006b 6b30         STAB  1,X+
  538:  	   *c_ptr='\r';
  539:         *n=count;
  540:  	   return(OK);
  006d 200f         BRA   *+17 ;abs = 007e
  541:  	   }
  542:  
  543:  	if(count!=0 && echo==CR)
  006f a682         LDAA  2,SP
  0071 2718         BEQ   *+26 ;abs = 008b
  0073 c10d         CMPB  #13
  0075 2614         BNE   *+22 ;abs = 008b
  544:  	{
  545:  	  tx_char0('\n');			//send echo to screen
  0077 c60a         LDAB  #10
  0079 160000       JSR   tx_char0
  546:        *c_ptr='\r';
  007c ee87         LDX   7,SP
  007e c60d         LDAB  #13
  0080 6b00         STAB  0,X
  547:        *n=count;
  0082 ee80         LDX   0,SP
  0084 a682         LDAA  2,SP
  0086 6a00         STAA  0,X
  548:  	  return(OK);
  0088 c601         LDAB  #1
  008a 21           SKIP1 
  549:  	}
  550:  	else 
  551:  	  return(NOTOK);
  008b c7           CLRB  
  552:  }
  008c 1b85         LEAS  5,SP
  008e 3d           RTS   
  553:  
  554:  /*******************************************************************
  555:  * Input byte (dec) subroutine
  556:  * Description : Get the data(byte) from user  
  557:  *             : 
  558:  *			  :
  559:  * Example     : N/A 
  560:  * Input 	  : N/A
  561:  * Output	  : *c_ptr
  562:  * Modify      : N/A
  563:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  564:  *********************************************************************/ 
  565:  byte input_dec(byte *c_ptr) 
  566:  {

Function: input_dec
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 1b92         LEAS  -14,SP
  0002 3b           PSHD  
  567:  	byte		echo,cdata,loop=ENABLE;	
  0003 c601         LDAB  #1
  0005 6b8d         STAB  13,SP
  568:  	int			count=0,i_data,i_data1,i_data2,i,j;
  0007 c7           CLRB  
  0008 87           CLRA  
  0009 6c84         STD   4,SP
  569:  	
  570:  	i_data=0;
  000b 6c82         STD   2,SP
  571:  	*c_ptr=0;
  000d ee80         LDX   0,SP
  000f 6b00         STAB  0,X
  572:  	while(loop == ENABLE)
  573:  	{
  574:  	  echo=rx_char0();
  0011 160000       JSR   rx_char0
  0014 6b88         STAB  8,SP
  575:  	  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
  576:  	    loop = DISABLE;			//break the while loop		
  0022 698d         CLR   13,SP
  577:        if (echo==BS || echo==DEL)
  0024 c108         CMPB  #8
  0026 2704         BEQ   *+6 ;abs = 002c
  0028 c17f         CMPB  #127
  002a 261f         BNE   *+33 ;abs = 004b
  578:        {
  579:         	if(count>0) 			//del 4 bit data in buffer
  002c ee84         LDX   4,SP
  002e 2f1b         BLE   *+29 ;abs = 004b
  580:         	{
  581:         	  count--;
  0030 09           DEX   
  0031 6e84         STX   4,SP
  582:         	  i_data=i_data>>4;
  0033 ed82         LDY   2,SP
  0035 c604         LDAB  #4
  0037 160000       JSR   _ISHRS
  003a 6c82         STD   2,SP
  583:  	      tx_char0(echo);		//send bs the char on screen
  003c e688         LDAB  8,SP
  003e 160000       JSR   tx_char0
  584:  	      tx_char0(' ');		//send space to clear the char
  0041 c620         LDAB  #32
  0043 160000       JSR   tx_char0
  585:  	      tx_char0(echo);		//send bs again to move back the cursor
  0046 e688         LDAB  8,SP
  0048 160000       JSR   tx_char0
  586:  	    }
  587:        }
  588:        if (count<3)				//update 4 bit data to buffer
  004b ee84         LDX   4,SP
  004d 8e0003       CPX   #3
  0050 2c1f         BGE   *+33 ;abs = 0071
  589:        {
  590:  	    if((echo<='9') && (echo>='0')) 
  0052 e688         LDAB  8,SP
  0054 c030         SUBB  #48
  0056 c109         CMPB  #9
  0058 2217         BHI   *+25 ;abs = 0071
  591:  	    {
  592:  //	      if ((echo>='0') && (echo<='9'))
  593:  	  	    cdata=echo-0x30; 
  594:  	      count++; 
  005a 08           INX   
  005b 6e84         STX   4,SP
  595:  	      tx_char0(echo);			//send echo to screen
  005d 37           PSHB  
  005e e689         LDAB  9,SP
  0060 160000       JSR   tx_char0
  596:  	  	  i_data=(i_data<<4);
  0063 ec83         LDD   3,SP
  0065 59           ASLD  
  0066 59           ASLD  
  0067 59           ASLD  
  0068 59           ASLD  
  0069 6c83         STD   3,SP
  597:  	      i_data+=cdata;
  006b 33           PULB  
  006c 87           CLRA  
  006d e382         ADDD  2,SP
  006f 6c82         STD   2,SP
  0071 e68d         LDAB  13,SP
  0073 04119b       DBEQ  B,*-98 ;abs = 0011
  598:  	    }	
  599:  	  }
  600:  	}  
  601:  	
  602:  	if (echo==DOT||echo ==ESC){
  0076 e688         LDAB  8,SP
  0078 c12e         CMPB  #46
  007a 2704         BEQ   *+6 ;abs = 0080
  007c c11b         CMPB  #27
  007e 2606         BNE   *+8 ;abs = 0086
  603:  	   *c_ptr=echo;
  0080 ee80         LDX   0,SP
  0082 6b00         STAB  0,X
  604:  	   return(OK);
  0084 204d         BRA   *+79 ;abs = 00d3
  605:  	   }
  606:  
  607:  	if(count!=0 && echo==CR)
  0086 ee84         LDX   4,SP
  0088 274c         BEQ   *+78 ;abs = 00d6
  008a c10d         CMPB  #13
  008c 2648         BN

⌨️ 快捷键说明

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