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

📄 ex3_utility.lst

📁 基于摩托罗拉S12标准源程序 包括:SCIO,Timer
💻 LST
📖 第 1 页 / 共 5 页
字号:
  321:  * Input 	  : N/A
  322:  * Output	  : *i_ptr
  323:  * Modify      : N/A
  324:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  325:  *********************************************************************/ 
  326:  byte input_int(unsigned int *i_ptr) //3046
  327:  {

Function: input_int
Source  : D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb 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\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\S12_Ex4_Portb_ICD_CW31_Data\Flash_Application\ObjectCode\ex3_utility.c.o" -Ol0

  0000 1b92         LEAS  -14,SP
  0002 3b           PSHD  
  328:  	byte		echo,cdata,loop=ENABLE;	
  0003 c601         LDAB  #1
  0005 6b8d         STAB  13,SP
  329:  	int			count=0,i,j;
  0007 c7           CLRB  
  0008 87           CLRA  
  0009 6c84         STD   4,SP
  330:  	unsigned int	i_data,i_data1,i_data2;
  331:  	
  332:  	
  333:  	i_data=0;
  000b 6c82         STD   2,SP
  334:  	*i_ptr=0;
  000d ee80         LDX   0,SP
  000f 6c00         STD   0,X
  335:  	
  336:  	while(loop == ENABLE)
  337:  	{
  338:  	  echo=rx_char0();
  0011 0700         BSR   rx_char0
  0013 6b88         STAB  8,SP
  339:  	  if((echo==ESC)||(echo==DOT)||(echo==CR)) 
  0015 c11b         CMPB  #27
  0017 2708         BEQ   *+10 ;abs = 0021
  0019 c12e         CMPB  #46
  001b 2704         BEQ   *+6 ;abs = 0021
  001d c10d         CMPB  #13
  001f 2602         BNE   *+4 ;abs = 0023
  340:  	    loop = DISABLE;			//break the while loop		
  0021 698d         CLR   13,SP
  341:        if (echo==BS || echo==DEL)
  0023 c108         CMPB  #8
  0025 2704         BEQ   *+6 ;abs = 002b
  0027 c17f         CMPB  #127
  0029 261e         BNE   *+32 ;abs = 0049
  342:        {
  343:         	if(count>0) 			//del 4 bit data in buffer
  002b ee84         LDX   4,SP
  002d 2f1a         BLE   *+28 ;abs = 0049
  344:         	{
  345:         	  count--;
  002f 09           DEX   
  0030 6e84         STX   4,SP
  346:         	  i_data=i_data>>4;
  0032 ec82         LDD   2,SP
  0034 49           LSRD  
  0035 49           LSRD  
  0036 49           LSRD  
  0037 49           LSRD  
  0038 6c82         STD   2,SP
  347:  	      tx_char0(echo);		//send bs the char on screen
  003a e688         LDAB  8,SP
  003c 160000       JSR   tx_char0
  348:  	      tx_char0(' ');		//send space to clear the char
  003f c620         LDAB  #32
  0041 160000       JSR   tx_char0
  349:  	      tx_char0(echo);		//send bs again to move back the cursor
  0044 e688         LDAB  8,SP
  0046 160000       JSR   tx_char0
  350:  	    }
  351:        }
  352:        if (count<4)				//update 4 bit data to buffer
  0049 ee84         LDX   4,SP
  004b 8e0004       CPX   #4
  004e 2c1f         BGE   *+33 ;abs = 006f
  353:        {
  354:  	    if((echo<='9') && (echo>='0')) 
  0050 e688         LDAB  8,SP
  0052 c030         SUBB  #48
  0054 c109         CMPB  #9
  0056 2217         BHI   *+25 ;abs = 006f
  355:  	    {
  356:  //	      if ((echo>='0') && (echo<='9'))
  357:  	  	    cdata=echo-0x30; 
  358:  	      count++; 
  0058 08           INX   
  0059 6e84         STX   4,SP
  359:  	      tx_char0(echo);			//send echo to screen
  005b 37           PSHB  
  005c e689         LDAB  9,SP
  005e 160000       JSR   tx_char0
  360:  	  	  i_data=(i_data<<4);
  0061 ec83         LDD   3,SP
  0063 59           ASLD  
  0064 59           ASLD  
  0065 59           ASLD  
  0066 59           ASLD  
  0067 6c83         STD   3,SP
  361:  	      i_data+=cdata;
  0069 33           PULB  
  006a 87           CLRA  
  006b e382         ADDD  2,SP
  006d 6c82         STD   2,SP
  006f e68d         LDAB  13,SP
  0071 04119d       DBEQ  B,*-96 ;abs = 0011
  362:  	    }	
  363:  	  }
  364:  	}  
  365:  	if(count!=0 && echo==CR) 
  0074 ec84         LDD   4,SP
  0076 274e         BEQ   *+80 ;abs = 00c6
  0078 e688         LDAB  8,SP
  007a c10d         CMPB  #13
  007c 2648         BNE   *+74 ;abs = 00c6
  366:  	{  
  367:  	  for (i=0;i<count;i++)
  007e c7           CLRB  
  007f 87           CLRA  
  0080 6c86         STD   6,SP
  0082 2039         BRA   *+59 ;abs = 00bd
  368:  	  {
  369:  	     i_data1 = ((i_data)>>((unsigned char)(4*i))&0xf);
  0084 e687         LDAB  7,SP
  0086 58           ASLB  
  0087 58           ASLB  
  0088 ed82         LDY   2,SP
  008a 160000       JSR   _ISHRU
  008d c40f         ANDB  #15
  008f 87           CLRA  
  0090 6c8e         STD   14,SP
  370:  	     i_data2=1;
  0092 02           INY   
  0093 6d8b         STY   11,SP
  371:  		 for(j=0;j<i;j++)
  0095 c7           CLRB  
  0096 6c89         STD   9,SP
  0098 200d         BRA   *+15 ;abs = 00a7
  372:  		   i_data2 *= 10;
  009a c60a         LDAB  #10
  009c 87           CLRA  
  009d ed8b         LDY   11,SP
  009f 13           EMUL  
  00a0 6c8b         STD   11,SP
  00a2 ee89         LDX   9,SP
  00a4 08           INX   
  00a5 6e89         STX   9,SP
  00a7 ec89         LDD   9,SP
  00a9 ac86         CPD   6,SP
  00ab 2ded         BLT   *-17 ;abs = 009a
  373:  	     *i_ptr+= i_data1*i_data2;
  00ad ec8e         LDD   14,SP
  00af ed8b         LDY   11,SP
  00b1 13           EMUL  
  00b2 ee80         LDX   0,SP
  00b4 e300         ADDD  0,X
  00b6 6c00         STD   0,X
  00b8 ee86         LDX   6,SP
  00ba 08           INX   
  00bb 6e86         STX   6,SP
  00bd ec86         LDD   6,SP
  00bf ac84         CPD   4,SP
  00c1 2dc1         BLT   *-61 ;abs = 0084
  374:  	  }
  375:  	  return(OK);
  00c3 c601         LDAB  #1
  00c5 21           SKIP1 
  376:  	}
  377:  	else 
  378:  	  return(NOTOK);
  00c6 c7           CLRB  
  379:  }
  00c7 1bf010       LEAS  16,SP
  00ca 3d           RTS   
  380:  
  381:  
  382:  /*******************************************************************
  383:  * Input word (hex) subroutine
  384:  * Description : Get the data(word) from user   
  385:  *             :   
  386:  *			  :
  387:  * Example     : N/A 
  388:  * Input 	  : N/A
  389:  * Output	  : *i_ptr
  390:  * Modify      : N/A
  391:  * Return      : status [OK for ('0'-'z') or NOTOK for others chars]
  392:  *********************************************************************/ 
  393:  byte input_word(unsigned int *i_ptr) //3046
  394:  {

Function: input_word
Source  : D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb 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\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\S12_Ex4_Portb_ICD_CW31_Data\Flash_Application\ObjectCode\ex3_utility.c.o" -Ol0

  0000 6ca9         STD   7,-SP
  395:  	byte		echo,cdata,loop=ENABLE;	
  0002 c601         LDAB  #1
  0004 6b86         STAB  6,SP
  396:  	int			count=0;
  0006 c7           CLRB  
  0007 87           CLRA  
  0008 6c83         STD   3,SP
  397:  	
  398:  	*i_ptr=0;
  000a ee80         LDX   0,SP
  000c 6c00         STD   0,X
  399:  
  400:  	while(loop == ENABLE)
  401:  	{
  402:  	  echo=rx_char0();
  000e 160000       JSR   rx_char0
  0011 6b82         STAB  2,SP
  403:  	  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
  404:  	    loop = DISABLE;			//break the while loop		
  001f 6986         CLR   6,SP
  405:        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
  406:        {
  407:         	if(count>0) 			//del 4 bit data in buffer
  0029 ee83         LDX   3,SP
  002b 2f1c         BLE   *+30 ;abs = 0049
  408:         	{
  409:         	  count--;
  002d 09           DEX   
  002e 6e83         STX   3,SP
  410:         	  *i_ptr=*i_ptr>>4;
  0030 ee80         LDX   0,SP
  0032 ec00         LDD   0,X
  0034 49           LSRD  
  0035 49           LSRD  
  0036 49           LSRD  
  0037 49           LSRD  
  0038 6c00         STD   0,X
  411:  	      tx_char0(echo);		//send bs the char on screen
  003a e682         LDAB  2,SP
  003c 160000       JSR   tx_char0
  412:  	      tx_char0(' ');		//send space to clear the char
  003f c620         LDAB  #32
  0041 160000       JSR   tx_char0
  413:  	      tx_char0(echo);		//send bs again to move back the cursor
  0044 e682         LDAB  2,SP
  0046 160000       JSR   tx_char0
  414:  	    }
  415:        }
  416:        if (count<4)				//update 4 bit data to buffer

⌨️ 快捷键说明

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